ASP.NET核心标识到期(Google OAuth)

问题描述 投票:0回答:1

我目前正在使用ASP.NET核心身份。我无法弄清楚延长会话长度的设置,但我一直在注销 - 我假设有一个约20分钟的滑动到期,但我找不到设置。请注意,我使用Google作为外部OAuth。

        services.AddIdentity<ApplicationUser, IdentityRole>(o =>
            {
                o.Password.RequireDigit = false;
                o.Password.RequireLowercase = false;
                o.Password.RequireUppercase = false;
                o.Password.RequireNonAlphanumeric = false;
                o.Password.RequiredLength = 6;
                o.SecurityStampValidationInterval = TimeSpan.FromHours(8);
                o.Cookies.ExternalCookie.ExpireTimeSpan = TimeSpan.FromHours(8);
                o.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromHours(8);
            })
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();


        app.UseIdentityServer();

        app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
        {
            Authority = $"http://localhost:55504/",
            RequireHttpsMetadata = false,
            AllowedScopes =
            {
                IdentityServerConstants.StandardScopes.OpenId,
                IdentityServerConstants.StandardScopes.Profile,
                IdentityServerConstants.StandardScopes.Email,
                "name",
                "given_name",
                "family_name",
                "role"
            }
        });

        var googleOptions = serviceProvider.GetRequiredService<GoogleOptions>();
        app.UseGoogleAuthentication(new GoogleOptions
        {
            AuthenticationScheme = "Google",
            SignInScheme = "Identity.External",
            ClientId = googleOptions.ClientId,
            ClientSecret = googleOptions.ClientSecret
        });
asp.net asp.net-core asp.net-identity identityserver4 asp.net-core-identity
1个回答
0
投票

此问题\答案特定于Identity Server 4。

您可以在配置中执行以下操作:

app.UseGoogleAuthentication(new GoogleOptions
{
    SignInScheme = "Identity.External", // this is the name of the cookie middleware registered by UseIdentity()
    ClientId = Configuration["ExternalAuthentication:Google:ClientId"],
    ClientSecret = Configuration["ExternalAuthentication:Google:ClientSecret"]
});

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
    Authority = $"http://localhost:55504/",
    RequireHttpsMetadata = false,
    AllowedScopes =
    {
        IdentityServerConstants.StandardScopes.OpenId,
        IdentityServerConstants.StandardScopes.Profile,
        IdentityServerConstants.StandardScopes.Email,
        "name",
        "given_name",
        "family_name",
        "role"
    }
        // CookieLifetime default is 10 Hours
        Authentication.CookieLifetime = TimeSpan.FromHours(24);

        // Default CookieSlidingExpiration = false;
        Authentication.CookieSlidingExpiration = true;   
});

在您的ConfigureServices中

    // Identity
    // https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity
    // http://docs.identityserver.io/en/release/quickstarts/6_aspnet_identity.html
    services.AddIdentity<ApplicationUser, IdentityRole>(o => {
            // configure identity options
            o.Password.RequireDigit = false;
            o.Password.RequireLowercase = false;
            o.Password.RequireUppercase = false;
            o.Password.RequireNonAlphanumeric = false;
            o.Password.RequiredLength = 6;
        })
            .AddEntityFrameworkStores<AuthDbContext>()
            .AddDefaultTokenProviders();
© www.soinside.com 2019 - 2024. All rights reserved.