Я аутентифицирую пользователя на сайте ASP. NET (. NET Framework) с помощью IdentityServer4 (отдельное приложение, написанное на. NET Core).
Все работает нормально, но name
претензия никогда не возвращается.
Если клиент был записан в. NET Core, похоже, есть это свойство GetClaimsFromUserInfoEndpoint
(сборка Microsoft.AspNetCore.Authentication.OpenIdConnect, Version=3.1.3.0
):
services
.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = Configuration["AppSettings:IdentityServerUrl"];
options.RequireHttpsMetadata = true;
options.ClientId = Configuration["AppSettings:ClientId"];
options.ClientSecret = Configuration["AppSettings:ClientSecret"];
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true; // <<<<<<<<<<<---
....
Однако в. NET Framework у меня такого свойства нет. Все, что у меня есть, это этот код (сборка расширения: Microsoft.Owin.Security.OpenIdConnect v3.1.0.0
):
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "oidc",
SignInAsAuthenticationType = "Cookies",
Authority = identityServerUrl,
RedirectUri = appUrl + "/signin-oidc",
PostLogoutRedirectUri = appUrl + "/signout-callback-oidc",
ClientId = "clientId",
ClientSecret = @"secret",
ResponseType = OpenIdConnectResponseTypes.CodeIdToken,
Scope = "openid profile offline_access",
UseTokenLifetime = false,
});
Я пробовал разные вещи на клиенте и на сервере идентификации, но, похоже, ничего не помогает.
Может ли кто-нибудь сказать мне, как я могу получить это утверждение внутри моего токена?
Я получаю другие утверждения, но, похоже, он пропускает вызов конечной точки информации о пользователе на IdentityServer, и поэтому этого утверждения пользователя там нет.