OpenIdConnectEvents.OnTokenValidated не достигается - PullRequest
1 голос
/ 28 июня 2019

используя asp.net core 2.2, у меня при запуске ниже указано следующее: я достигаю точку останова OnRedirectToIdentityProvider, а затем достигаю относительного пути в appsettings "CallbackPath": ". Но я не достигаю точку останова OnTokenValidated.вызвано украшением [Authorize] контроллера. Чего мне не хватает?

            services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureAD(options => Configuration.Bind("AzureAd", options))
            .AddCookie();

        services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
        {
            options.Authority = options.Authority + "/v2.0/";         // Microsoft identity platform
            options.Events = new OpenIdConnectEvents
            {
                OnRedirectToIdentityProvider = async n =>
                {
                    //save url to state
                    n.ProtocolMessage.State = n.HttpContext.Request.Path.Value.ToString();
                },

                OnTokenValidated = ctx =>
                {
                    var url = ctx.ProtocolMessage.GetParameter("state");
                    var claims = new List<Claim>
                    {
                        new Claim("myurl", url)
                    };
                    var appIdentity = new ClaimsIdentity(claims);

                    //add url to claims
                    ctx.Principal.AddIdentity(appIdentity);

                    return Task.CompletedTask;
                },

                OnTicketReceived = ctx =>
                {
                    var url = ctx.Principal.FindFirst("myurl").Value;
                    ctx.ReturnUri = url;
                    return Task.CompletedTask;
                }
            };
            options.TokenValidationParameters.ValidateIssuer = false; // accept several tenants (here simplified)
        });

1 Ответ

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

Вы можете изменить ResponseMode на FormPost и добавить асинхронный режим к OnTokenValidated, тогда это будет исправлено.

services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
    options.Authority = options.Authority + "/v2.0/";         // Microsoft identity platform
    options.ResponseMode = OpenIdConnectResponseMode.FormPost;
    options.CallbackPath = "/";
    options.Events = new OpenIdConnectEvents
    {
        OnRedirectToIdentityProvider = async n =>
        {
                   ...
        },
        OnTokenValidated = async ctx =>
        {
                   ...
        },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...