Доступ к утверждениям из OIDC на Blazor ServerC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Доступ к утверждениям из OIDC на Blazor Server

Сообщение Anonymous »

Начнем с того, что я разработчик и впервые работаю с OIDC и SSO. Я не настраивал IDP (PingFederate), а только написал код для добавления его в веб-приложение. Единый вход правильно входит в систему через IDP.
Моя проблема заключается в доступе к пользовательским утверждениям, которые должны быть в токене, например утверждениям, загруженным через 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, здесь отсутствует.
Изображение утверждений в отладчике
Я также пытался сопоставить утверждение 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»