Получить текущего зарегистрированного пользователя с провайдером аутентификации AAD - PullRequest
0 голосов
/ 22 января 2019

У меня есть простой веб-сайт, размещенный в службах приложений Azure, где я включил проверку подлинности AAD в соответствии с настройкой Express, как рекомендовано здесь , и он работает правильно.

Теперь я хотел бы показать на панели навигации имя пользователя / адрес электронной почты текущего вошедшего в систему пользователя. Как мне быть?

Приложение разработано на C # Asp.Net Core 1.0.4

Большое спасибо

Ответы [ 3 ]

0 голосов
/ 22 января 2019

На простом веб-сайте, как вы заявили; убедитесь, что ваш контроллер наследуется от контроллера.

[Authorize]
public class MyController : Controller

А потом просто используйте

protected string userName => User?.Identity?.Name ?? "Unnamed User";  

Тогда используйте useName. Он вернет логин / имя электронной почты пользователя AD

0 голосов
/ 23 января 2019

Вы используете Аутентификация и авторизация в службе приложений Azure .

Служба приложений передает заявки пользователей в ваше приложение с помощью специальных заголовков.Внешние запросы не могут устанавливать эти заголовки, поэтому они присутствуют, только если они установлены службой приложений.Некоторые примеры заголовков включают:

  • X-MS-CLIENT-PRINCIPAL-NAME
  • X-MS-CLIENT-PRINCIPAL-ID
  • X-MS-TOKEN-AAD-ID-TOKEN
  • X-MS-TOKEN-AAD-ACCESS-TOKEN

ссылка: https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-how-to#access-user-claims

Код, написанный на любом языке или в любой среде, может получить необходимую информацию из этих заголовков.Для приложений ASP.NET 4.6 ClaimsPrincipal автоматически устанавливается с соответствующими значениями.

Ваше приложение также может получить дополнительную информацию о прошедшем проверку пользователе, позвонив /.auth/me.

Но в настоящее время кажется, что ASP.NET Core не поддерживает передачу идентификационной информации из модуля IIS (например, Easy Auth) в код приложения.См. обсуждение здесь.

Я не проверял это в настоящее время.Но вы всегда можете получить имя пользователя, информацию о токене из заголовков выше.Если вы хотите получать заявки от большего количества пользователей, вы можете сделать запрос на стороне сервера к конечной точке в сборке /.auth/me, чтобы получить заявки.

Вы можете написать специальное промежуточное программное обеспечение для заполнения свойства User в .netЯдро:

https://stackoverflow.com/a/42270669/5751404

0 голосов
/ 22 января 2019

Вы можете использовать ClaimsPrincipal, чтобы получить личность.

из Azure Guide

 Claim displayName = ClaimsPrincipal.Current.FindFirst(ClaimsPrincipal.Current.Identities.First().NameClaimType);
ViewBag.DisplayName = displayName != null ? displayName.Value : string.Empty;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...