identityserver4 MVC cookie问题

时间:2021-09-16
本文章向大家介绍identityserver4 MVC cookie问题,主要包括identityserver4 MVC cookie问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

出现登录成功后不跳转

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

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

//Configure
app.UseCookiePolicy();

回调 /singin-oidc  错误

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

//防止修改授权服务器返回的jwt
                JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
                services.AddAuthentication(options =>
                {
                    options.DefaultScheme = "Cookies";
                    options.DefaultChallengeScheme = "oidc";
                }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddOpenIdConnect("oidc", options =>
                {
                    options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                    options.Authority = "http://localhost:5000";
                    options.RequireHttpsMetadata = false;
                    options.ClientId = "SinoIndentityMvc";
                    options.ClientSecret = "1asdfa";
                    options.SaveTokens = true;//把token 保存到cookie
                    options.ResponseType = "code";

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

                    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("api1");
                    options.Scope.Add(OidcConstants.StandardScopes.OfflineAccess);//有刷新token

                    options.GetClaimsFromUserInfoEndpoint = true;

                });

原文地址:https://www.cnblogs.com/xwhqwer/p/15292523.html