Мне нужно сохранить уникальный идентификатор пользователя в базе данных SQL.Мое приложение использует OpenID Connect через OWIN для аутентификации пользователей в Azure AD и основано на MVC 5 Framework.Я могу получить доступ к ObjectId пользователя через претензию http://schemas.microsoft.com/identity/claims/objectidentifier.Единственный способ, которым я знаю, как получить утверждения, - добавить делегата в свойство «Уведомления» в «OpenIdConnectAuthenticationOptions».Поскольку это является частью запуска приложения, делегат не может передать эту информацию в сеанс.
Я видел ответы на вопросы с похожими целями, которые рекомендуют использовать Graph API для соответствия User.Identity.Имя с помощью ObjectId.Я бы предпочел не делать этого, так как мое приложение достаточно ресурсоемко.
Вот то, что у меня есть до сих пор.Мне просто нужно получить претензию в сеансе или получить доступ к претензиям из сеанса.(Это не всегда работает, например, если пользователь уже вошел в систему, но это лучшее, что у меня есть)
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthorizationCodeReceived = (context) =>
{
IEnumerable<Claim> claims = context.AuthenticationTicket.Identity.Claims;
Claim objectId = claims.First(claim => claim.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier");
// ???
return Task.FromResult(0);
}
},