2

如果我有一个自定义安全令牌服务,它专门列出了允许的受众并检查令牌是否来自这些受众之一,并检查 X509 证书的指纹和颁发者,我是否需要 WSFederation?

由于我的 STS 正在检查令牌是否已经来自特定应用程序并通过我的 ACS 进行路由,所以我不是在验证我需要做的所有事情吗?我知道应用程序 A 向 ACS 发送了一个请求,ACS 向应用程序 B 发送了一个请求,所有这些请求都来自自定义 STS,那么联邦身份在这张图片中的位置是什么?

为清楚起见进行编辑:

对不起,我在原始帖子中有点不清楚。我认为混乱是因为我使用了 STS 而不是安全令牌处理程序(方式不同,只是一个错字)。应用程序 A 是一个自定义登录服务,它显示用户的登录选项,google/facebook/yahoo/etc。通过这些服务登录从 ACS 获取令牌并将其返回给应用程序 B,即依赖方。此 RP 有一个自定义安全令牌处理程序,它接受令牌并验证它是否具有与应用程序 A 匹配的受众 URI。它还验证颁发者是 ACS 并且指纹与用于通过ACS。

这意味着理论上应用程序 B 知道,应用程序 A 用于登录(因为它来自该 AudienceURI)并且 ACS 发送了令牌(因为它是颁发者并且指纹匹配)。我要问的是应用程序 B 是否需要联合身份?如果您已经证明了令牌的来源,那么使用它究竟能得到什么?

4

1 回答 1

2

您的问题可能需要澄清一下。

首先,您可能想具体解释应用程序 A 和应用程序 B 的含义,以及您的 STS 如何适应这种情况。应用程序通常不会发布令牌,只有 STS 会。从这个意义上说,ACS 不会将应用程序相互连接,而是将依赖方应用程序连接到第三方身份提供者。

其次,如果您正在讨论通过 Web 进行的身份验证,并且您有一个自定义身份提供程序 STS 为 ACS 颁发令牌,那么您可能已经在使用 WS-Federation。但是,如果您的令牌获取不是基于浏览器的,并且您正在对 ACS 进行后端 HTTP 调用,那么 WS-Federation 与该场景无关。

第三,从 STS 的角度来看,允许的受众集合与代币发行者无关,它是指将消费该 STS 发行的代币的实体。也就是说,它是 STS 将向其发行令牌的一组主题。这可能是应用程序本身,也可能是联邦链上的其他中间 STS。(例如 ACS 充当这样的中介)

第四,当您在传入令牌上验证颁发者的证书时,您必须做的不仅仅是比较指纹。指纹不是令牌加密证明的一部分。您必须验证令牌的数字签名,以验证令牌颁发者是否拥有证书的私钥。

我希望这可以解决问题,但如果它不能回答您的问题,请告诉我。

于 2012-03-06T22:30:37.970 回答