Identity Server 4 Добавление пользовательских утверждений - PullRequest
0 голосов
/ 02 апреля 2020

Здравствуйте, я новичок в identityServer, и у меня возникла проблема при получении пользовательских утверждений. Когда я пытаюсь загрузить утверждения пользователя в IdentityToken, он прекрасно работает, устанавливая этот параметр AlwaysIncludeUserClaimsInIdToken = true, но когда я пытаюсь получить утверждения от конечной точки userinfo, он не загружает утверждения. Я знаю, что нам нужно указать сопоставление, и я сделал, но он все еще не работает

services.AddAuthentication(config =>
        {
            config.DefaultScheme = Constant.Web_Application_Cookie_Name;
            config.DefaultChallengeScheme = "oidc";
        })
            .AddCookie(Constant.Web_Application_Cookie_Name)
            .AddOpenIdConnect("oidc", config =>
            {
                config.Authority = "http://localhost:50209";
                config.ClientId = "client_id";
                config.ClientSecret = "client_secret";
                config.SaveTokens = true;

                config.ResponseType = "code";
                config.RequireHttpsMetadata = false;

                //Configure mapping of claims from UserInfo Endpoint
                config.ClaimActions.MapUniqueJsonKey(JwtClaimTypes.Name, JwtClaimTypes.Name);
                config.ClaimActions.MapUniqueJsonKey(JwtClaimTypes.PhoneNumber, JwtClaimTypes.PhoneNumber);

                //Making another trip to IdentityServer to load Claims
                config.GetClaimsFromUserInfoEndpoint = true;
                config.Scope.Add(Constant.General_User_Claim_Resources);                   
            });

И это конфигурация Identity Server.

public static class Configuration
{
    public static IEnumerable<IdentityResource> GetIdentityResources() =>
        new List<IdentityResource> {
            new IdentityResources.OpenId(),
            new IdentityResources.Profile(),
            new IdentityResource
            {
                Name = Constant.General_User_Claim_Resources,
                UserClaims =
                {
                    JwtClaimTypes.PhoneNumber,
                    JwtClaimTypes.Name
                }
            }
        };
    public static IEnumerable<ApiResource> GetApis() =>
        new List<ApiResource> { 
            new ApiResource(
                Constant.Dairy_Admin_API_Resource
                ) 
        };

    public static IEnumerable<Client> GetClients() =>
        new List<Client> {
            new Client {
                ClientId = "client_id",
                ClientSecrets = {
                    new Secret("client_secret".ToSha256())                        
                },
                RequireConsent = false,
                RedirectUris = { "http://localhost:50838/signin-oidc" },
                AllowedGrantTypes = GrantTypes.Code,
                //Load all the user claims in ID Token
                //AlwaysIncludeUserClaimsInIdToken = true,
                AllowedScopes = { 
                    Constant.Dairy_Admin_API_Resource,
                    IdentityServer4.IdentityServerConstants.StandardScopes.OpenId ,
                    IdentityServer4.IdentityServerConstants.StandardScopes.Profile,
                    Constant.General_User_Claim_Resources
                }
            }
        };
}

Я не могу получить претензию JwtClaimTypes.PhoneNumber, JwtClaimTypes.Name в Пользователь.

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