美文网首页
IdentServer4 Client 非SSL出现错误的解决办

IdentServer4 Client 非SSL出现错误的解决办

作者: 寻找无名的特质 | 来源:发表于2021-11-09 07:02 被阅读0次

如果IdentServer4的Client是非SSL网站,如果使用Edge等浏览器会出现错误。这里给出解决办法。首先创建一个扩展:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace Microsoft.Extensions.DependencyInjection
{
    public static class SameSiteCookiesServiceCollectionExtensions
    {
        public static IServiceCollection AddSameSiteCookiePolicy(this IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
                options.OnAppendCookie = cookieContext =>
                    CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
                options.OnDeleteCookie = cookieContext =>
                    CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
            });

            return services;
        }

        private static void CheckSameSite(HttpContext httpContext, CookieOptions options)
        {
            if (options.SameSite == SameSiteMode.None)
            {
                if (!httpContext.Request.IsHttps)
                {
                    options.SameSite = SameSiteMode.Unspecified;
                }
            }
        }
    }
}

然后,在ConfigureServices中增加这个扩展:

services.AddSameSiteCookiePolicy();

最后,在Configure中使用这个扩展:

            app.UseAuthentication();
            app.UseCookiePolicy();
            app.UseAuthorization();

注意, app.UseCookiePolicy();一定要在 app.UseAuthorization();的前面,否则不起作用。,

相关文章

网友评论

      本文标题:IdentServer4 Client 非SSL出现错误的解决办

      本文链接:https://www.haomeiwen.com/subject/tfukzltx.html