实际上,启用单点登录无需特殊操作。它默认可用,但并非适用于所有场景。为使SSO正常工作,只需遵循一个规则:用户必须在IdentityServer网站上登录,因为这是SSO cookie的放置位置。对于不需要用户在IdentityServer网站上登录的授权类型,SSO不可用。 它是如何工作的:用户访问 webapp1,点击登录按钮并被重定向到 IdentityServer 网站以进行登录。IdentityServer 将扫描 SSO cookie,但由于这是第一次且用户尚未经过身份验证,因此将找不到它。成功登录后,SSO cookie 被存储(在 IdentityServer 网站上),并返回已经过身份验证的用户到 webapp1。然后,用户访问 webapp2。只要用户不需要进行身份验证,用户就是匿名访客。当用户单击登录按钮或访问受保护页面(例如受 [Authorize] 属性保护)时,需要进行身份验证。这会触发身份验证流程,将用户重定向到 IdentityServer 网站。再次,IdentityServer 将扫描 SSO cookie,但这次会找到它。由于已经经过身份验证,因此用户无需再次登录,而是返回到网站作为已经过身份验证的用户。请注意,客户端可以通过设置 prompt=login 参数来覆盖 SSO cookie。请注意,Cookie 不支持跨浏览器。如果使用不同的浏览器访问 webapp2,用户需要重新登录,因为该 SSO Cookie 在此浏览器中不可用。