как получить информацию, такую ​​​​как идентификатор электронной почты текущего пользователя, вошедшего в систему, с помощью федеративной аутентификации в приложении Win Azure

Приложение Windows Azure принимает федеративную аутентификацию, при которой пользователь может войти в систему, используя любой из gmail, facebook и live id. Как только пользователь вошел в систему, как можно извлечь информацию, такую ​​как получение имени пользователя и идентификатора электронной почты. ?


person mohit nagpal    schedule 30.11.2011    source источник


Ответы (1)


Адрес электронной почты представлен как утверждение от поставщика удостоверений.

Если вы используете MVC (например), простой способ прочитать адрес электронной почты — добавить некоторые свойства в ваш контроллер, например:

public ClaimsPrincipal ClaimsPrincipal
{
    get
    {
        return this.User as ClaimsPrincipal;
    }
}

public ClaimsIdentity ClaimsIdentity
{
    get
    {
        return this.ClaimsPrincipal.Identity as ClaimsIdentity;
    }
}

public string UserEmailAddress
{
    get
    {
        foreach (var claim in this.ClaimsIdentity.Claims)
        {
            if (claim.ClaimType == @"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
            {
                return claim.Value;
            }
        }
        return null;
    }
}

Однако Live ID не предоставит вам адрес электронной почты или имя пользователя.

person Richard Astbury    schedule 01.12.2011
comment
Live Id дает мне имя пользователя, но не идентификатор электронной почты. Я хочу, чтобы он взаимодействовал с вошедшим в систему пользователем, то есть отправлял письма и уведомления. Я думаю, что многие веб-сайты / приложения имеют вход в систему с живым идентификатором, и они отправляют уведомления по электронной почте с тем же идентификатором, с которого пользователь вошел в систему ... так как они это делают ... - person mohit nagpal; 06.12.2011
comment
Вероятно, они запрашивают у пользователя адрес электронной почты. - person Richard Astbury; 07.12.2011
comment
Хм. Это бывает когда-нибудь. но тогда нет смысла поддерживать вход в систему в реальном времени, если у пользователя снова запрашивается электронная почта после входа в систему. - person mohit nagpal; 07.12.2011
comment
Я предлагаю вам использовать Yahoo! а потом Гугл. - person Richard Astbury; 08.12.2011