Azure b2c неавторизованный при выполнении вызовов api в .net5 web api

#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 несанкционированный доступ.