当我们用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 voidConfigureServices(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 voidConfigure(IApplicationBuilder app, IWebHostEnvironment env)
{app.UseCookiePolicy();}
就可以解决这个问题
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.cnblogs.com/xwc1996/p/15546384.html
内容来源于网络,如有侵权,请联系作者删除!