Моя проблема заключается в доступе к пользовательским утверждениям, которые должны быть в токене, например утверждениям, загруженным через LDS. Конкретное утверждение, к которому я пытаюсь получить доступ, настроено как samAccountName на стороне IDP. Когда я запускаю отладчик для просмотра утверждений, присутствуют только три утверждения: NameIdentifier, jti и auth_time.
Вот код, с помощью которого я получаю доступ к утверждениям
Код: Выделить всё
protected override async Task OnInitializedAsync()
{
authState = await AuthStateProvider.GetAuthenticationStateAsync();
claims = authState.User.Claims.ToList();
var jtiClaim = claims.FirstOrDefault(c => c.Type == "jti")?.Value;
var authTimeClaim = claims.FirstOrDefault(c => c.Type == "auth_time")?.Value;
var nameIdentifier = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value;
getRoles();
setDdsButtonVisiblity();
handDdsPageAccess();
}
Изображение утверждений в отладчике
Я также пытался сопоставить утверждение samAccountName в коде промежуточного программного обеспечения OIDC, но это привело к та же проблема.
Это код промежуточного программного обеспечения ниже
Код: Выделить всё
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddOpenIdConnect(options =>
{
var serviceProvider = builder.Services.BuildServiceProvider();
var appSettings = serviceProvider.GetRequiredService().Value;
options.Authority = appSettings.OidcAuthority;
options.ClientId = appSettings.OidcClientId;
options.ClientSecret = appSettings.OidcClientSecret;
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.ResponseType = OpenIdConnectResponseType.Code;
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("profile");
options.ClaimActions.MapJsonKey("samAccountName", "samAccountName");
});
Подробнее здесь: https://stackoverflow.com/questions/792 ... zor-server