Azure B2C - проверка подписи JWT завершилась неудачно

Я настроил MSAL для получения токенов из Azure AD B2C, настроил dotnet core WebAPI для приема токенов JWT. Указанный WebApi в конечной точке органа:

 services.AddAuthentication(options =>
        {
            options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(jwtOptions =>
        {
            string tenant = Configuration["AzureAdB2C:Tenant"], policy = Configuration["AzureAdB2C:Policy"], clientId = Configuration["AzureAdB2C:ClientId"];
            jwtOptions.Authority = $"https://login.microsoftonline.com/tfp/{tenant}/{policy}/v2.0/";
            jwtOptions.Audience = clientId;
            jwtOptions.Events = new JwtBearerEvents
            {
                OnAuthenticationFailed = AuthenticationFailed
            };
        });

согласно образцам. MSAL настроен на использование той же политики и идентичного идентификатора клиента и получает токен.

MSAL Authority - https://login.microsoftonline.com/tfp/{tenant}.onmicrosoft.com/{policy}/v2.0,

Однако этот обработчик событий AuthFailed просто возвращает
IDX10501: Signature validation failed. Unable to match keys.
и отчитывает аутентификацию как 401.

Я пошел искать ключи для подписи и kid маркера не совпадает с ребенком, указанным в конечной точке обнаружения.

https://login.microsoftonline.com/tfp/{tenant}/{policy}/discovery/v2.0/keys

Есть идеи?

1 ответ

Параметры единой политики Azure

Похоже, я не выбрал правильную настройку претензий эмитента. MSAL брал свой токен, используя https://login.microsoftonline.com/{guid}/v2.0 конечная точка, тогда как WebAPI использовал https://login.microsoftonline.com/tfp/{guid}/{policy}/v2.0/ эмитент.

Согласно документации это не совместимая с openid конечная точка, но отлично работает для B2C. Оплачивает, чтобы проверить два разных набора претензий!

Другие вопросы по тегам