我正在研究SSO,但有一件事我无法理解,那就是SSO消费者如何在不单击登录按钮的情况下获得会话。我可以解释如下情况:
我有:
- accounts.domain.com(身份服务器。已经允许消费者 1 和 2(
- myapp.com(消费者 1(
- yourapp.com(消费者 2(
当我转到myapp.com
->时,我没有访问服务器资源的许可或会话。
我单击myapp.com
中的Sign In
按钮,这将重定向到accounts.domain.com
,经过身份验证后,我回到本地会话myapp.com
。
问题是:当我去yourapp.com
时,我已经有会话而无需单击Sign In
按钮。
真实的案例是google.com
、accounts.google.com
、youtube.com
、...
我不知道它是如何工作的以及如何实现这一点?
还有一个问题,我可以像谷歌一样使用Auth0
、Google Cloud Identity
或AWS Cognito
来构建我的Identity Provider
吗?
有人可以在这方面支持我吗?
为了更好地理解这个概念,你应该首先知道当你使用SSO登录时会发生什么。
我将以谷歌和YouTube为例。
当您使用凭据登录Google时,您不仅会获得本地会话,还会获得单点登录令牌。我们通常将其作为SAML,它是安全断言标记语言令牌。
在这种情况下,此 SAML 令牌将存储在您的客户端或浏览器中。 现在,当您尝试在同一浏览器中加载 youtube 时,此令牌将与请求一起发送到 IDP。由于IDP 知道该用户已经过身份验证,因此在这种情况下,它将检查特定网站的授权 YouTube,页面加载。