Как получить идентификатор электронной почты аутентифицированного пользователя? - PullRequest
0 голосов
/ 21 июня 2019

Мое веб-приложение Azure аутентифицируется при входе в учетную запись Microsoft.Я включил его через портал Azure с изменением параметров проверки подлинности / авторизации веб-приложения. Это не требует никаких изменений в коде веб-приложения.И часть аутентификации работает нормально.

Теперь мне нужен идентификатор электронной почты пользователя, который проходит аутентификацию перед доступом к веб-приложению.

Я пытался прочитать User.Identity как System.Security.Claims.ClaimsPrincipal.Но это приходит как ноль.

Как получить идентификатор электронной почты аутентифицированного пользователя?

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Теперь я могу получать аутентифицированную электронную почту пользователя, хотя изначально мое приложение asp.net mvc было приложением «Без аутентификации». Я включил проверку подлинности MS на портале Azure для своего веб-приложения. Теперь я получаю электронную почту пользователя из объекта System.Security.Claims.ClaimsPrincipal.Current.Claims. Это автоматически устанавливается потоком аутентификации MS.

0 голосов
/ 21 июня 2019

Перейдите в свое веб-приложение и нажмите Authentication / Authorization. Под провайдерами аутентификации нажмите Microsoft Account.Нажмите wl.basic & wl.emails, чтобы включить их.

enter image description here

Затем перейдите к ExternalLoginCallback и добавьте следующий код:

var identity = await AuthenticationManager.AuthenticateAsync(DefaultAuthenticationTypes.ExternalCookie);
var emailClaim = identity.Identity.FindFirst(ClaimTypes.Email);
var email = emailClaim.Value;

Результат кода: enter image description here

...