identityserver4 MVC cookie问题


在mvc 客户端使用identityserver4 登录时cookie问题

出现登录成功后不跳转

在客户端和服务端的都需要配置cookie  在不是https 情况下cookie 策略问题 参考Cookie 的 SameSite 属性 - 阮一峰的网络日志 (ruanyifeng.com)

//ConfigureServices

services.Configure(option =>
{
  option.MinimumSameSitePolicy = SameSiteMode.Strict;
  option.Secure = CookieSecurePolicy.None;
});



//Configure
app.UseCookiePolicy();

回调 /singin-oidc  错误

JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
                services.AddAuthentication(options =>
                {
                    options.DefaultScheme = "Cookies";
                    options.DefaultChallengeScheme = "oidc";
                }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddOpenIdConnect("oidc", options =>
                {
                    options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                    options.Authority = Configuration["Id4url"].ToString();
                    options.RequireHttpsMetadata = false;
                    options.ClientId = "CMPMvc";
                    options.ClientSecret = "1QAZ2WSX3EDC-SZHK-SZ1997-SZMC-SZ1999";
                    options.SaveTokens = true;//把token 保存到cookie
                    options.ResponseType = "code";

                    //必须设置cookie signin-oidc 返回的cookie设置
                    options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.None;
                    options.NonceCookie.SecurePolicy = CookieSecurePolicy.None;
                    options.CorrelationCookie.SameSite = SameSiteMode.Strict;
                    options.NonceCookie.SameSite = SameSiteMode.Strict;

                    options.AuthenticationMethod = Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior.FormPost;

                    options.Scope.Clear();
                    options.Scope.Add(OidcConstants.StandardScopes.OpenId);
                    options.Scope.Add(OidcConstants.StandardScopes.Profile);
                    options.Scope.Add("cmpapi");
                    options.Scope.Add(OidcConstants.StandardScopes.OfflineAccess);//有刷新token

                    options.GetClaimsFromUserInfoEndpoint = true;

                });

遇到的问题还是因为cookie问题 openid 存cookie是的异常以及跨域问题