Добавление настраиваемых утверждений в ClaimsPrincipal при использовании AddAzureADB2C в приложении MVC Core

При аутентификации с использованием лазурного AzureADB2C я хотел бы добавить настраиваемые утверждения, которые управляются на портале, в Принцип утверждений.

current code in start up 
   services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
                .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));

Я думал, что это должно работать примерно так, но на подтвержденном токене никогда не попадает

 services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
                .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options))
                .AddJwtBearer(o =>
                    {
                        o.Events = new JwtBearerEvents
                                       {
                                           OnTokenValidated = async ctx =>
                                               {
                                                       var claims = new List<Claim> { new Claim("ConfidentialAccess", "true") };
                                                       var appIdentity = new ClaimsIdentity(claims);
                                                       ctx.Principal.AddIdentity(appIdentity);
                                               }
                                       };
                    });

person chris castle    schedule 22.08.2018    source источник


Ответы (1)


В общем, мы будем использовать промежуточное ПО OpenIdConnect для аутентификации AAD. И вы можете использовать следующие строки кода для добавления пользовательских утверждений.

//OpenIdConnectOptions
options.Events = new OpenIdConnectEvents
{
    OnTokenValidated = context =>
    {   
        var claimsIdentity = (ClaimsIdentity)context.Principal.Identity;
        //add your custom claims here
        claimsIdentity.AddClaim(new Claim("test", "helloworld!!!"));

        return Task.FromResult(0);
    }
};

Если вы используете AzureADB2CAuthentication .AddAzureADB2C, установив пакет Microsoft.AspNetCore.Authentication.AzureADB2C. UI, я предположил, что вы не можете установить OpenIdConnectEvents.OnTokenValidated.

Из >, вы можете найти строку кода в AddAzureADB2C методе создания экземпляра OpenIdConnectOptions.

builder.Services.TryAddSingleton<IConfigureOptions<OpenIdConnectOptions>, OpenIdConnectOptionsConfiguration>();

Для Веб-приложение ASP.NET Core с Azure AD B2C < / а>.

person Bruce Chen    schedule 24.08.2018