2

我们正在建立一个 ADFS (2.0),它将负责对多个面向客户的系统的用户进行身份验证。身份验证机制外包给外部合作伙伴,该合作伙伴提供对多个身份验证提供程序的访问。

我们最近遇到了以下情况:

  1. 用户尝试访问面向客户的系统 A 并被重定向到 ADFS 进行身份验证。
  2. ADFS 将用户重定向到身份验证合作伙伴,在那里他成功进行身份验证。
  3. 用户将使用他的身份验证令牌发送回 ADFS。
  4. ADFS 将用户发送回系统 A。他现在与系统 A 建立了会话。
  5. 用户尝试访问尚未经过身份验证的系统 B,并被发送到 ADFS。

这就是 ADFS 偏离我们预期行为的地方。ADFS 不会识别用户并使用有效的身份验证令牌将他透明地发送回系统 B,而是将他发送给我们的身份验证合作伙伴以进行重新身份验证。

这完全破坏了我们希望为使用系统 A 和 B 的客户提供的 SSO 功能,但我们还没有找到一种方法让 ADFS 建立用户会话并在访问第二个系统期间重新使用它。

有没有人解决过这个问题?

ADFS 是否只能在完全负责身份验证时才提供单点登录?

4

3 回答 3

1

如果您的 RP-s(系统 A 和系统 B)已配置为强制身份验证 (ForceAuthn="true"),则 ADFS 应以这种方式运行。要解决您的问题,请确保从<wsFederation>元素中删除了新鲜度属性。

于 2012-05-16T13:08:31.343 回答
0

您是否有权访问 ADFS2 日志?在Windows 机器中 --> 事件查看器 --> 应用程序和服务日志 --> AD FS 2.0 --> 管理员

还要检查 A、B 和 ADFS2 是否在同一个信任圈中,以及系统 B 的断言消费者服务端点。

希望能帮助到你,

路易斯

于 2012-01-31T13:25:32.387 回答
0

在经典 ADFS 中,您将不同的身份验证合作伙伴设置为 ADFS 的声明提供者,即您联合各自的 STS。这将提供您需要的 SSO 功能。

听起来您的问题是 ADFS 和外部合作伙伴之间只有联合,但 ADFS 和外部合作伙伴处理的身份验证提供程序之间没有联合。

于 2012-01-23T17:38:33.900 回答