Использование современной библиотеки Azure AD B2C для получения токена доступа через API - PullRequest
0 голосов
/ 11 июля 2019

В последних документах мне кажется, что Azure AD B2C с пользовательскими потоками V2 объявляется работающим прямо из коробки, но все, что вы получаете для ASP.NET Core Web App -> API с авторизацией JWT Bearer, это некоторыеплохие примеры Postman и куча запутанных, устаревших документов и примеров кода.

Используя приведенную ниже общую механику аутентификации для подключения к клиенту Azure B2C в качестве IdP, можно запросить токен доступа у Azure B2Cпровайдеру, не прибегая к более запутанным маршрутам авторизации библиотек MSAL или ADAL?Если нет, то после нескольких дней поисков мне еще предстоит найти ни одного четкого примера, детализирующего этот простой поток.Даже примеры GitHub изобилуют устаревшими, нерешенными проблемами и множеством запросов извлечения не от MS.

    services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
        .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));

Конечно, это очень распространенный и почти обязательный сценарий в наши дни, и поэтому его можно легко интегрировать в поток кода.с более новыми библиотеками Microsoft.AspNetCore.Authentication.AzureADB2C.UI?

ОБНОВЛЕНИЕ 1

Например, при тестировании другого IdP, такого как Auth0, он извлекает токен доступа для любой запрошенной аудитории API прямо издаже при использовании потока кода авторизации с минимальным дополнительным кодом.

Почему это невозможно в Azure AD B2C, учитывая, что в наши дни это настолько распространенный способ доступа к защищенному ресурсу?Это на дорожной карте B2C V2?

1 Ответ

0 голосов
/ 18 июля 2019

Я пошел вперед и раздвоил существующий старый образец и обновил его соответствующим образом.Этот образец будет работать для получения токена доступа от клиента B2C.

Пожалуйста, смотрите: https://github.com/FrankHu-MSFT/active-directory-b2c-dotnetcore-webapi

Я проверил его, используя образец политики V2 B2C, и он автоматически перенаправит на JWT.MS, чтобы показать только что полученный токен доступа.

Вы сможете найти метод configureservices, определенный в файле startup.cs

По коду:

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

        // Add framework services.
        services.AddMvc();
    }

Вам потребуется обновить настройки приложений и индекс.Файл cshtml согласно новому шагу 5: https://github.com/FrankHu-MSFT/active-directory-b2c-dotnetcore-webapi#optional-step-5-configure-the-sample-with-your-app-coordinates

Это отвечает на ваш вопрос?Если чего-то не хватает, прокомментируйте и дайте мне знать.

...