Здравствуйте, я новичок в 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 в Пользователь.