API ядра .Net с AD B2C OAuth 2.0 - ошибка Invalid_token - PullRequest
2 голосов
/ 06 марта 2019

Я слежу за этим ресурсом.Я могу получить токен успешно, но получить 401 при использовании токена во втором вызове моего API.Это говорит об ошибке на предъявителя = invalid_token.Ранее он выдавал «Неверный издатель», поэтому я расшифровал токен, чтобы использовать издателя в поле «Экземпляр» appSettings.json.Ниже приведены appSettings и токен.Что я делаю не так?

appSettings.json

{
"AzureAdB2C": {
"Instance": "https://login.microsoftonline.com/xxxxxxxxxxxxxxxxxxxxx/v2.0/",
"ClientId": "452gfsgsdfgsdgssfs5425234",
"Domain": "xxxxxxxxxxxxxxx.onmicrosoft.com",
"SignUpSignInPolicyId": "B2C_1_Auth-SignUpIn"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}

токен

{
"iss": "https://login.microsoftonline.com/23423fsf234234sfsd42342vsx2542/v2.0/",
"exp": 1551878022,
"nbf": 1551874422,
"aud": "ee965664-d1e3-4144-939a-11f77c523b50",
"oid": "a9ee8ebb-433d-424b-ae24-48c73ae9969c",
"sub": "a9ee8ebb-433d-424b-ae24-48c73ae9969c",
"name": "unknown",
"extension_xxxID": "9f27fd88-7faf-e411-80e6-005056851bfe",
"emails": [
"dfgdfgadfgadfg@dgadg.com"
],
"tfp": "B2C_1_Auth-SignUpIn",
"scp": "user_impersonation",
"azp": "4453gdfgdf53535bddhdh",
"ver": "1.0",
"iat": 1551874422
}

AD B2C экземпляр

enter image description here

Настройка Azure AD B2C AD B2C

Почтальон - выделен revalapi - URI зарегистрированного приложения в предыдущем кадре

enter image description here

Токен

enter image description here

Ошибка

enter image description here

Ответы [ 3 ]

2 голосов
/ 11 марта 2019

Хорошо. Похоже, AD B2C + .Net Core не в восторге от URI onmicrosoft.com, хотя ресурс Microsoft Docs утверждает, что это так. Смотрите здесь . Мне пришлось использовать URI b2clogin.com, как показано на снимках экрана ниже. Надеюсь, это кому-нибудь поможет.

Почтальон

enter image description here

AppSettings.json

enter image description here

Startup.Auth.cs

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthentication(AzureADB2CDefaults.BearerAuthenticationScheme)
                .AddAzureADB2CBearer(options => Configuration.Bind("AzureAdB2C", options));
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddApplicationInsightsTelemetry();             
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }
            app.UseAuthentication();
            app.UseHttpsRedirection();
            app.UseMvc();            
        }
0 голосов
/ 11 марта 2019

Регистрация клиентского приложения

Перейдите к своему клиенту Azure B2C и найдите арендатора B2C из всех служб, см. Снимок экрана ниже:

enter image description here

Как только вы нашли его, выберите и перейдите в меню приложения.

Добавьте новое клиентское приложение и выберите «Веб-приложение / Веб-API» для «ДА»

Установите ответ как https://getpostman.com/postman и сохраните его в верхнем левом меню.

См. Ниже картинки

enter image description here

Зарегистрировать приложение веб-API

Теперь добавьте еще одно приложение веб-API, как показано на снимке экрана ниже

enter image description here

Политика регистрации пользователей

Для политики пользователя необходимо нажать Пользовательские потоки (политики) menu.fire up это менюНажмите кнопку Новый поток пользователей

См. Рисунок ниже:

enter image description here

enter image description here

Затем нажмите Зарегистрируйтесь и войдите в систему ** Написать "SiUpIn "после ** B2C_1 _ **** помните, что это имя должно быть таким же, как и при создании приложения Local Web API позже.Как: B2C_1_SiUpIn

См. Изображение ниже:

enter image description here

после успешного завершения вы увидите следующее:

enter image description here

Примечание: Формат имен «B2C_1_SiUpIn» должен быть одинаковым для портала веб-API и локального приложения, сравните снимок экрана:

Microsoft Document

enter image description here

Инициализация приложения, хотя вы можете настроить ее позже

enter image description here

appsettings.json При локальном применении

enter image description here

Разрешение API:

Теперь нажмите на меню Опубликованные области действия Разрешить чтение, запись и разрешение user_impersonation в приложении веб-API.см. рисунок

enter image description here

Создать локальное приложение и убедиться, что в соответствии с документом Microsoft проверьте здесь

Запрос токена почтальона

Теперь запустите почтальона и введите необходимую информацию, как показано ниже:

Тип гранта: Неявный

URL обратного вызова: https://getpostman.com/postman

URL-адрес аутентификации: https://login.microsoftonline.com/YouTenant.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_SiUpIn

Идентификатор клиента: Идентификатор вашего клиента

Область действия: https://YourTenent.onmicrosoft.com/api/user_impersonation

См. Снимок экрана ниже

enter image description here

Как только вы введете необходимую информацию и нажмете на маркер запроса, появится новое окно входа, см. Ниже:

enter image description here

В ответ вы получите токен доступа API, см. Снимок экрана ниже:

enter image description here

Доступ к данным почтальона

Теперь попробуйте отправить запрос в этом примере URL;https://localhost:44341/api/values

с вашим токеном: см. Ниже:

enter image description here

После этого данные локального приложения будут отображаться в Azure Active Directoryпроцесс аутентификации:

См. снимок экрана ниже:

enter image description here

Примечание Убедитесь, что имя политики регистрации подписано,и провайдер идентификации выбирается как электронная почта в имени потока пользователя, а права доступа API на веб-интерфейсе портала выбираются правильно.

Если у вас возникнут какие-либо сомнения, дайте мне знать.Спасибо.

0 голосов
/ 08 марта 2019

Для регистрации вашего базового приложения B2C dotnet в первую очередь Вы должны войти в свой B2C Арендатор.

После успешной регистрации настройте следующий шаг для неявного потока предоставления.

URL-адреса ответов

Убедитесь, что вы выполнили этот шаг соответствующим образом:

Перейдите в «Настройки» и добавьте URL обратного вызова почтальона по адресу: https://www.getpostman.com/oauth2/callback

Как только вы правильно введете этот URL, нажмите Сохранить в верхнем левом углу.

См. Снимок экрана ниже:

enter image description here

Редактировать манифест

Для неявный большой поток нажмите на ваше приложениеманифест и поиск oauth2AllowImplicitFlow свойство делает его равным true

см. снимок экрана ниже:

enter image description here

Ваши настройки для Azure B2C выполнены для неявного потока грантов Вызов API.

Почтальон

Сейчасзапустите ваше почтовое сообщение и выберите тип запроса OAuth 2.0, как показано ниже:

enter image description here

Теперь нажмите на кнопку «Получить новый маркер доступа» и новое всплывающее окнопоявится

См. снимок экрана ниже:

Добавьте свой идентификатор арендатора в URL-адрес аутентификации, например:

https://login.microsoftonline.com/YourB2CTenantId/oauth2/authorize?resource=https://graph.microsoft.com

Установить идентификатор клиента

Установить область действия, к которой вы хотите получить доступ

enter image description here

Теперь нажмите Запрос токена В ответ вы получите свой токен неявного предоставления доступа:

см. Снимок экрана:

enter image description here

Доступ к данным с этим токеном:

Скопируйте токен, который выВы уже получили доступ к текстовому полю Token и выберите тип токена как Token-Token

См. снимок экрана ниже:

enter image description here

Итак, сложная часть неявного потока - установить для свойства манифеста oauth2AllowImplicitFlow значение true

Надеюсь, это может решить вашу проблему.Спасибо

...