#asp.net-core #authentication #azure-active-directory #jwt #azure-ad-b2c
#asp.net-core #аутентификация #azure-active-directory #jwt #azure-ad-b2c
Вопрос:
Я столкнулся с проблемой авторизации клиентских приложений (пользователей) с помощью azure B2C. На серверной части у меня есть веб-api asp.net5. Что касается интерфейса, я использую угловой клиент. Я зарегистрировал оба приложения в своих клиентах B2c. Я добавил предварительные настройки API для обоих приложений, также получил согласие администратора.
Теперь, когда я запускаю поток пользователей (с портала Azure) и указываю веб-api в форме, токен работает нормально, я могу выполнять вызовы api и получаю статус 200. Однако, когда токены извлекаются из клиентского приложения (angular), я получаю 401 несанкционированный ответ.
Мое промежуточное программное обеспечение аутентификации настроено следующим образом:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(jwtConfig =>
{
jwtConfig.Audience = Configuration["AzureAdB2C:ClientId"];
jwtConfig.Authority = $"{Configuration["AzureAdB2C:Instance"]}/tfp/{Configuration["AzureAdB2C:Domain"]}/{Configuration["AzureAdB2C:SignUpSignInPolicyId"]}/v2.0";
jwtConfig.RequireHttpsMetadata = false;
jwtConfig.SaveToken = true;
jwtConfig.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidAudience = jwtConfig.Audience,
ValidIssuer = $"{Configuration["AzureAdB2C:Instance"]}/{Configuration["AzureAdB2C:TenantId"]}/v2.0/"
};
});
Кто-нибудь знает, в чем может быть проблема?
Ответ №1:
Решение: я провел некоторое исследование и немного изменил код, чтобы получить больше информации о том, что происходит, поэтому я обнаружил, что проблема была в областях. Я указывал неправильное имя области в клиентском приложении, поэтому я получал 401 несанкционированный доступ.