Blazor 服务器应用程序 - OKTA 组未出现在声明中
Blazor Server App - OKTA Groups aren't appearing inside Claims
我在 OKTA 中创建了一个 Blazor Server Web 应用程序并启用了 Open Id。还添加了 2 个用户及其组。下面是我在 Startup.cs 中配置 OpenId 的代码。我能够登录并获取索赔详细信息。
//hk okta
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = Configuration["Okta:Domain"] + "/oauth2/default";
options.RequireHttpsMetadata = true;
options.ClientId = Configuration["Okta:ClientId"];
options.ClientSecret = Configuration["Okta:ClientSecret"];
options.ResponseType = OpenIdConnectResponseType.Code;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "groups",
RequireSignedTokens = true
};
}
);
即使我在 Claim 中获取详细信息,登录用户的组名也没有出现在任何地方。有什么办法可以解决这个问题或任何其他线索吗?我正在遍历如下声明。
@foreach (var claim in context.User.Claims)
{
<tr>
<td>@claim.Type</td>
<td>@claim.Value</td>
</tr>
我注意到我在声明设置页面中错误地选择了一个过滤器选项,这导致我的组被错误地过滤。现在我的所有群组都出现在 Claim 中。
我在 OKTA 中创建了一个 Blazor Server Web 应用程序并启用了 Open Id。还添加了 2 个用户及其组。下面是我在 Startup.cs 中配置 OpenId 的代码。我能够登录并获取索赔详细信息。
//hk okta
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = Configuration["Okta:Domain"] + "/oauth2/default";
options.RequireHttpsMetadata = true;
options.ClientId = Configuration["Okta:ClientId"];
options.ClientSecret = Configuration["Okta:ClientSecret"];
options.ResponseType = OpenIdConnectResponseType.Code;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "groups",
RequireSignedTokens = true
};
}
);
即使我在 Claim 中获取详细信息,登录用户的组名也没有出现在任何地方。有什么办法可以解决这个问题或任何其他线索吗?我正在遍历如下声明。
@foreach (var claim in context.User.Claims)
{
<tr>
<td>@claim.Type</td>
<td>@claim.Value</td>
</tr>
我注意到我在声明设置页面中错误地选择了一个过滤器选项,这导致我的组被错误地过滤。现在我的所有群组都出现在 Claim 中。