Как установить NameClaimType в приложении с помощью промежуточного программного обеспечения OWIN security

Я создал веб-приложение OWIN, которое использует OpenId Connect для аутентификации через Microsoft.Owin.Security.OpenIdConnect.

пока аутентификация работает, я нахожу, что созданный ClaimsIdentity.Имя члена равно null. Похоже, ClaimsIdentity ожидает, что имя будет указано в претензии:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

однако Thinktecture IdentityServer v3 предоставляет имя как просто:

имя

Я считаю, что это настраивается через NameClaimType в старых ASP.Net приложения но неясно, как я это делаю с ОУИНОМ.

Как настроить, какое утверждение сопоставляется с ClaimsIdentity.Имя при использовании OWIN?

1 ответов


копание в коде, который я нахожу, это можно настроить на TokenValidationParameters объект с помощью NameClaimType или NameClaimTypeRetriever (Если тип утверждения не является фиксированным).

TokenValidationParameters живет на объекте options при настройке промежуточного ПО. Следующие изменения конфигурации работают в описанном случае,

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
        {
        <existing configuration snipped>,
        TokenValidationParameters =
            {
            NameClaimType = Thinktecture.IdentityServer.Core.Constants.ClaimTypes.Name
            }
        } );

Thinktecture.IdentityServer.Core.Constants.ClaimTypes.Name is name. Для указания на необходимость использования другого требования может быть указано иное значение.