Аутентификация OpenID на уровне сеанса в AspNet Core 2 - PullRequest
0 голосов
/ 05 сентября 2018

Существует ли простой способ настройки файла cookie для аутентификации, который создается с помощью openid на сайте AspNet Core 2+, как имеющего область сеанса? Как, например, пользователь должен проходить повторную аутентификацию для каждого нового сеанса?

Я пытался установить TicketReceivedContext.IsPersistent в false, но, похоже, это не сработало:

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

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

        services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                // Instead of using the default validation (validating against a single issuer value, as we do in
                // line of business apps), we inject our own multitenant validation logic
                ValidateIssuer = false,
            };

            options.Events = new OpenIdConnectEvents
            {
                OnTicketReceived = context =>
                {
                    context.Properties.IsPersistent = false;

                    // If your authentication logic is based on users then add your logic here
                    return Task.CompletedTask;
                },

                OnAuthenticationFailed = context =>
                {
                    context.Response.Redirect("/Error");
                    context.HandleResponse(); // Suppress the exception
                    return Task.CompletedTask;
                },

                OnTokenValidated = context =>
                {
                    return Task.CompletedTask;
                }
            };
        });

        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }
...