1

我有一个配置为使用 Azure ACS 的网站。当用户登录本网站时,当他访问我的另一个网站时,我将如何获取用户身份,以便用户无需在 ACS 中选择和登录其身份提供者?有没有办法跨多个网站从 ACS 获取用户身份,这样一旦用户登录到我的一个网站,当他访问其他 ACS 配置的网站时,他将被识别为登录用户?顺便说一句,我使用 azure ACS 中的所有 4 个社交网站作为身份提供者。

4

1 回答 1

1

每个网站从 ACS 的角度来看都是不同的,所以它会发行的代币也不同。但是,SSO 发生在 IdP 级别:

  1. 用户在网站 1 上使用 Google 登录(例如)。
  2. 用户访问 WebSite2,(使用相同的浏览器实例),WebSite2 重定向到 ACS,ACS 重定向到 Google
  3. 用户已通过 Google 身份验证,返回 ACS
  4. ACS 发出一个令牌(用于 WebSite2)并返回给 WebSite2

ACS 不与用户保持会话,因此他们将被迫至少进行一次整个事务。

可能发生的情况是,如果您有 4 个社交 IdP(大概是 Google、Live、FB、Yahoo),在第 2 步中,ACS 将提示用户使用 IdP。

为避免这种情况,您必须使用whr参数向 ACS 发送登录请求。您必须记住您的用户使用了哪一个并指示 ACS 使用它。使用 whr,没有 IdP 提示。

于 2013-04-29T15:03:33.553 回答