Как подключиться к AuthorizationCodeReceived при использовании AddAzureADB2 C? - PullRequest
0 голосов
/ 09 января 2020

Я создал простое серверное приложение Blazor, связанное с каталогом Azure B2 C для авторизации. Все работает, но мне нужно добавить дополнительные требования к роли к токену. Исследования указывают мне на этот пост SO , который относится к добавлению претензий во время уведомления AuthorizationCodeReceived ( Пример здесь ).

Я понимаю, что мне нужно сделать , но в примере используется OpenIdConnectAuthentication (из Microsoft.Owin.Security.OpenIdConnect) вместо Microsoft.AspNetCore.Authentication.AzureADB2C.UI сервера Blazor *.

Как я могу получить доступ и изменить утверждения в токене после его получения? Поддерживается ли такая вещь в Microsoft.AspNetCore.Authentication.AzureADB2C.UI или должен переключаться на OpenId?

Ниже приведен шаблон, включенный в базовое c серверное приложение Blazor, но AzureADB2COptions - это просто строковые значения конфигурации.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
            .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));

        services.AddRazorPages();
        services.AddServerSideBlazor().AddCircuitOptions(o =>
        {
            if (_environment.IsDevelopment()) //only add details when debugging
            {
                o.DetailedErrors = true;
            }
        });

        // remaining service configuration
    }

1 Ответ

0 голосов
/ 10 января 2020

Вы можете попытаться переопределить указанную c схему после AddAzureADB2C, а затем зарегистрировать свои события, например:

services.Configure<OpenIdConnectOptions>(AzureADB2CDefaults.OpenIdScheme, options =>
{
    options.ResponseType = "code";
    options.Events = new OpenIdConnectEvents
    {



        OnAuthorizationCodeReceived= async ctx =>
        {


            .....
        },
    };
});

. Используйте options.ResponseType = "code" для сортировки токена доступа, в противном случае OnAuthorizationCodeReceived won ' При запуске вы можете следовать примеру кода с здесь , этот пример кода не использует библиотеку напрямую, но имеет тот же лог c, что и Microsoft.AspNetCore.Authentication.AzureADB2C.UI1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...