我有一个配置为使用 Azure ACS 的网站。当用户登录本网站时,当他访问我的另一个网站时,我将如何获取用户身份,以便用户无需在 ACS 中选择和登录其身份提供者?有没有办法跨多个网站从 ACS 获取用户身份,这样一旦用户登录到我的一个网站,当他访问其他 ACS 配置的网站时,他将被识别为登录用户?顺便说一句,我使用 azure ACS 中的所有 4 个社交网站作为身份提供者。
问问题
165 次
1 回答
1
每个网站从 ACS 的角度来看都是不同的,所以它会发行的代币也不同。但是,SSO 发生在 IdP 级别:
- 用户在网站 1 上使用 Google 登录(例如)。
- 用户访问 WebSite2,(使用相同的浏览器实例),WebSite2 重定向到 ACS,ACS 重定向到 Google
- 用户已通过 Google 身份验证,返回 ACS
- ACS 发出一个令牌(用于 WebSite2)并返回给 WebSite2
ACS 不与用户保持会话,因此他们将被迫至少进行一次整个事务。
可能发生的情况是,如果您有 4 个社交 IdP(大概是 Google、Live、FB、Yahoo),在第 2 步中,ACS 将提示用户使用 IdP。
为避免这种情况,您必须使用whr参数向 ACS 发送登录请求。您必须记住您的用户使用了哪一个并指示 ACS 使用它。使用 whr,没有 IdP 提示。
于 2013-04-29T15:03:33.553 回答