【发布时间】:2021-11-01 04:48:58
【问题描述】:
我在配置文件范围内发回了多个声明。这些声明包括:
员工类型 邮件 给定名称
这些 accessToken 声明会自动映射到相同的名称。我希望将它们更改为更改映射如下:
employeeType = EmployeeType
邮件 = 邮件
givenName = 名字
我尝试使用 MapJsonKey(),但它不起作用我也尝试了 MapUniqueJsonKey()。我认为这些可能只用于 userInfoClaims?
options.ClaimActions.MapJsonKey("EmployeeType", "employeeType");
options.ClaimActions.MapJsonKey("FirstName", "givenName");
options.ClaimActions.MapJsonKey("Email", "Mail");
有没有办法将这些映射到不同的名称,还是我必须删除声明并使用 OnTokenValidated 挂钩将它们添加到 Prinical?
这是我在启动时的身份验证配置。
services.AddAuthentication(options => {
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, o =>
{
o.Cookie.Name = "GCOWebCookie";
o.AccessDeniedPath = "/AccessDenied";
})
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options => {
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = config["OneId:Authority"];
options.ClientId = config["OneId:ClientId"];
options.ResponseType = "code";
options.ClientSecret = config["OneId:ClientSecret"];
options.SaveTokens = true;
//options.GetClaimsFromUserInfoEndpoint = true;
options.UsePkce = true;
//options.Scope.Add("profile"); These scopees are added by default
//options.Scope.Add("openid");
【问题讨论】:
标签: .net .net-core openid-connect .net-5