我们正在使用 Azure AD 进行 SAML 身份验证。
ExternalLoginCallback 方法使用 AuthenticationManager.GetExternalLoginInfo() 获取外部经过身份验证的用户
当我们检查该对象的 IsAuthenticated 属性时,它显示 true。这意味着用户已通过 Azure AD 进行身份验证。
但是,当我们创建声明并尝试使用 AuthenticationManager.SignOut() 登录我们的用户(从代码)时,用户并未在我们的系统中经过身份验证。我从 AuthenticationManager.User.Identity.IsAuthenticated 验证了这一点。
有人知道为什么我们会面临这个问题吗?
回答我自己的问题。
事实证明,使用声明的 AuthenticationManager.SignIn 允许当前用户通过身份验证。然而,在response.redirect到任何其他页面时,用户未经过身份验证。
发生这种情况是因为我们使用 SameSite = SameSiteMode.Strict 的 cookie。评论这一点确实允许用户即使在下一个请求时也能保持登录状态。