Как я могу получить имя пользователя AD в .NET Core, размещенном в Azure Web App? - PullRequest
0 голосов
/ 22 мая 2019

Я использовал HTTPContext.User.Identity.Name, чтобы получить имя текущего пользователя. Он работает через локальный хост, но возвращает нулевое значение в веб-приложении Azure.

HTTPContext.User.Identity.Name раньше работал при использовании .Net Framework, но сейчас я использую .Net Core, который не работает.

Текущий код:

private void SetUpUser()
{
    var identityName = HttpContext.User.Identity.Name;
    identityName = identityName.Replace("@example.com", "").Replace(".", "").Replace("example\\", "");
    string userName = identityName.Replace(".", "");
}

Сообщение об ошибке:

NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта. CommissionInputApp.Controllers.HomeController.SetUpUser () в HomeController.cs

1 Ответ

0 голосов
/ 24 мая 2019

Устанавливаете ли вы NameClaimType в конфигурации OpenIdConnectOptions:

options.TokenValidationParameters = new TokenValidationParameters() { NameClaimType = "name" };

Я не создал свое собственное приложение и Api, просто использовал fabrikamb2cdomain в качестве примера кода, даже если какой-то метод устарел в ядре .net2.2, например, cache.HasStateChanged.Аутентификация по-прежнему работает и получает правильное имя с User.Identity.Name, HttpContext.User.Claims также могут быть установлены:

enter image description here

Также вы можете предоставить большеподробности и код для воспроизведения проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...