【问题标题】:Do I need Federation Authentication if I have a custom STS? If so, why?如果我有自定义 STS,是否需要联合身份验证?如果是这样,为什么?
【发布时间】:2012-03-06 16:32:34
【问题描述】:

如果我有一个自定义安全令牌服务,它专门列出了允许的受众,并检查令牌是否来自其中一个受众,并检查 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 是否需要联合身份?如果您已经证明了令牌的来源,那么使用它究竟能获得什么?

【问题讨论】:

    标签: azure claims-based-identity federated-identity acs ws-federation


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 根据您的第四点,我在这里使用了 Bertocci 的示例:blogs.msdn.com/b/vbertocci/archive/2008/11/26/an-identity-provider-and-its-sts -writing-a-custom-sts-with-the-october-beta-of-the-geneva-framework.aspx 看起来您需要做的就是验证指纹和颁发者。
    • 啊。这篇文章有点过时了,应该注意的是,正如 Vittorio 本人在帖子中所说,该示例仅用于演示目的,还没有准备好生产。不过这没什么大不了的,因为您不需要自己的自定义安全令牌处理程序,WIF 今天已经提供了一些内置的安全令牌处理程序,可以为您执行正确的 X509 证书签名验证。
    • "WIF 今天已经提供了一些内置的安全令牌处理程序,可以为您执行正确的 X509 证书签名验证" 可能是这样,但我不想在 web.config 中进行配置是特定于站点的。因此,要删除受众 URI 标记,我需要覆盖默认的安全令牌处理程序。我已经听取了您的建议,并在其他地方查找了适当的验证,并将其添加到我的代码中。不过,我仍然可以就联合身份是否必要提出建议。
    • 如果应用程序 A 不像在您的场景中那样(通过 ACS)依赖第三方身份提供者(yahoo/facebook/google...等),则不需要联合。联合为您提供的是让您的用户使用他们选择的 IDP 登录的灵活性。您使用 ACS 的特定联合模型还减轻了您的应用程序 B 必须自行验证不同的 google/facebook/yahoo 令牌的负担。 ACS 会为您执行此操作,并为应用程序 B 提供相同类型的令牌(无论身份提供者如何),并提供一组规范化的声明。
    猜你喜欢
    • 2011-08-20
    • 2011-09-02
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2012-08-09
    • 2020-10-11
    • 2010-10-11
    • 1970-01-01
    相关资源
    最近更新 更多