如果我有一个自定义安全令牌服务,专门列出允许的受众,并检查令牌是否来自其中一个受众,还检查X509证书的指纹和发行者,我是否需要WSFederation?
由于我的STS正在检查令牌是否来自特定应用程序并通过我的ACS路由,我不是要验证我需要的所有内容吗?我知道应用程序A向ACS发送了一个请求,该请求从自定义STS向应用程序B发送了所有请求,因此联合身份在哪里适合这张图片?
为了清晰起见进行编辑:
对不起,我在orignal帖子中有点不清楚。我认为混乱是因为我使用STS而不是安全令牌处理程序(方式不同,只是一个错字)。 应用程序A是一个自定义登录服务,它显示用户的登录选项,google / facebook / yahoo / etc.通过这些服务登录从ACS获取令牌并将其返回给应用程序B,即依赖方。此RP有一个自定义安全令牌处理程序,它接受令牌并验证它是否具有与应用程序A匹配的受众URI。它还验证发行者是ACS,指纹是否与用于通过令牌签署令牌的证书相匹配。 ACS。
这意味着理论上应用程序B知道,应用程序A用于登录(因为它来自那个audienceURI)并且ACS发送了令牌(因为它是发行者和指纹匹配)。我要问的是,申请B是否需要联合身份?如果您已经证明了令牌的来源,那么您使用它到底获得了什么?
答案 0 :(得分:2)
您的问题可能需要一些澄清。
首先,您可能希望具体解释应用程序A和应用程序B的含义,以及STS在此方案中的适用方式。应用程序通常不会发出令牌,只有STS会发出令牌。从这个意义上说,ACS不会将应用程序相互连接,它将依赖方应用程序连接到第三方身份提供商。
其次,如果您正在谈论通过Web进行身份验证,并且您有一个为ACS发布令牌的自定义身份提供程序STS,那么您可能已经在使用WS-Federation。但是,如果您的令牌获取不是基于浏览器的,并且您正在对ACS进行后端HTTP调用,那么WS-Federation与该场景无关。
第三,从STS的角度来看,允许的受众群体与令牌发行者无关,它指的是将消耗该STS发布的令牌的实体。也就是说,它是STS将向其发放令牌的一组主题。这可以是应用程序本身,也可以是联盟链中的其他中间STS。 (例如ACS就是这样的中间人)
第四,当您在传入令牌上验证颁发者的证书时,您必须做的不仅仅是比较指纹。指纹不是令牌加密证明的一部分。您必须验证令牌的数字签名,以验证令牌颁发者是否拥有证书的私钥。
我希望这可以解决问题,但如果它没有回答你的问题,请告诉我。