Как добавить обработчик события OnTokenValidated при использовании AD B2C? - PullRequest
0 голосов
/ 22 октября 2019

Я использую Azure B2C в приложении ASP.NET Core 3, которое работает отлично. При запуске я использую следующий код:

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

Я хотел бы обработать стандартное событие TokenValidated OpenIdConnect, другими словами, мне нужна конфигурация, в которой установлен мой обработчик событий.

ПроверкаИсходный код Я вижу класс AzureAdB2COpenIDConnectEventHandlers.cs, а также его использование в AzureADB2COpenIdConnectOptionsConfiguration, но, к сожалению, оба класса объявлены internal

Вопрос

Все, что мне нужно, этоиметь в силе мой обработчик TokenValidated, сохраняя все работающие из коробки функциональные возможности AD B2C на основе OpenIdConnect, которые работают в настоящее время.

Псевдокод, что-то вроде этого:

options.Events = new OpenIdConnectEvents()
{
     // ...
     OnTokenValidated = MyTokenValidatedHandler
};

Как я могусделать это простым способом?

1 Ответ

1 голос
/ 23 октября 2019

Я нашел свой ответ, выполнив поиск ["Events.OnTokenValidated" AzureAdB2C] в github и собрал следующее для моего случая:

// My existing code in Startup:
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
        .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));

// My added code to handle the OnTokenValidated event
services.Configure<OpenIdConnectOptions>(AzureADB2CDefaults.OpenIdScheme, options =>
{
    var onTokenValidated = options.Events.OnTokenValidated;
    options.Events.OnTokenValidated = context =>
    {
        onTokenValidated?.Invoke(context);
        // My custom handler goes below:
...