我们有一个提供 sso 身份验证的应用程序。其他三个应用程序从 sso 应用程序获得身份验证。用户登录所有应用程序后,我启动了 sso 注销。sso app 向 app1 发送注销请求,然后 app1 以 SAML 注销响应响应。一旦 sso app 收到 SAML 注销响应,它将向 app2 然后向 app3 发送注销请求。有时整个流程运行良好,有时则不行。我已经看到,当 app2/app3/app1 响应时,sso 应用程序身份验证 cookie 从浏览器中消失了,并且该请求对于 sso 应用程序变得未经验证,并且用户无法从所有应用程序中注销。
认证中间件:
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.Cookie.Name = ".federation_user_authentication";
options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
options.Cookie.Path = "/";
options.Cookie.IsEssential = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(
Convert.ToDouble(
systemParamsCollection[nameof(JwtTokenVerificationParameterModel.ValidFor)]));
options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None;
if (Convert.ToBoolean(configuration["IsCloudDeployment"]))
{
options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always; // Cookie/sso login will not work on localhost. because it is on http
}
});
您能否让我知道是什么原因以及为什么在应用程序之间重定向 2-3 次后身份验证 cookie 消失了?