zoukankan      html  css  js  c++  java
  • .NetCore在IdentityServer4因为Cookies的SameSite导致授权登录跳转回登录页的问题

    当我们用ids4的授权登录的时候会重新跳回登录页并且回调/singin-oidc的时候会报错,主要问题是我们没有使用https,在使用http的情况下Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性限制第三方 Cookie,所以我们需要设置SameSite。

    我们的授权流程是:web应用->ids4服务器->web应用。

    所以我们在web应用的starup.cs的ConfigureServices中设置如下红色的代码:

    services.AddAuthentication(options =>
    {
      options.DefaultScheme = "Cookies";
      options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("Cookies")
    .AddOpenIdConnect("oidc", options =>
    {
      options.Authority = "http://localhost:5000";
      options.RequireHttpsMetadata = false;
      options.ClientId = "mvc";
      options.ClientSecret = "secret";
      options.ResponseType = "code";
      options.SaveTokens = true;
    
      //必须设置cookie signin-oidc 返回的cookie设置
      options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.None;
      options.NonceCookie.SecurePolicy = CookieSecurePolicy.None;
      options.CorrelationCookie.SameSite = SameSiteMode.Strict;
      options.NonceCookie.SameSite = SameSiteMode.Strict;
    });

    在ids4的starup.cs中设置如下红色的代码:

    public void ConfigureServices(IServiceCollection services)
    {
      services.Configure<CookiePolicyOptions>(option =>
      {
        option.MinimumSameSitePolicy = SameSiteMode.Strict;
        option.Secure = CookieSecurePolicy.None;
      });
    }
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
      app.UseCookiePolicy();
    }

    就可以解决这个问题

  • 相关阅读:
    SQL Server 创建用户报错:消息 15023,级别 16,状态 1,第 1 行 用户、组或角色 'XXX' 在当前数据库中已存在。
    Win10安装sqlserver2014打开显示黑色界面,mardown打开显示报错
    Centos7磁盘超过2TB使用parted命令分区
    Html5學習重點清單
    jQuery源码学习扒一扒jQuery对象初使化
    jQuery源码学习
    算法排序之插入排序
    算法排序之冒泡排序
    Sublime Text 3 安装
    css布局你该了解的
  • 原文地址:https://www.cnblogs.com/xwc1996/p/15546384.html
Copyright © 2011-2022 走看看