在WCF/WIF中如何合并来自两个不同客户端的自定义sts令牌的声明

myr*_*yrx 44 c# wcf ws-security wif ws-federation

我正在尝试创建类似的东西:客户端验证并从自定义STS1获取令牌,下一个客户端使用机器密钥授权并在自定义STS2上获得令牌并获取另一个令牌.使用最后一个令牌,客户端请求RP服务上的方法.

所有服务都托管在IIS上,并且正在使用活动联合方案.两个STS都有ws2007Federation和ws2007Http绑定的端点,RP使用ws2007FederationBinding和STS2作为发行者.

如果我使用CreateChannelWithIssuedToken创建通道,我只能看到来自STS1的令牌,并且无法从STS2获取令牌.

所以我决定将STS1中的令牌作为ActAs RST的属性传递给STS2令牌.那失败了 - 无法解密令牌.

  1. 如何将两个令牌传递给STS2并合并其中的声明?
  2. 这是一个坏主意 - 使用RST发送刚从STS1令牌中提取的声明?

Tim*_*Tim 1

一般来说,您只想在每一步使用一个令牌。因此,如果您需要合并声明,您将需要在第二个 STS 的声明转换步骤中执行此操作。

因此,该流将使用 STS1 进行身份验证,然后使用 STS1 中的令牌向 STS2 进行身份验证。此时,您将遍历声明并进行转换以根据需要添加其他声明。然后生成的 Token 就可以从 RP 应用程序中使用了。

实际上,我已经开始了一个关于我们最近构建的非常相似的场景的博客系列。不要过度自我推销,但它不会让我赚到任何钱,所以我会发布它,以防它有帮助。

http://www.livingthearchitecture.com/mixing-sso-with-existing-technologies/

我很乐意更深入地进行讨论,但根据您的场景的具体情况,解决方案的具体情况将会发生很大的变化。我认为上面表达了您想要的一般方法。如果我还能提供帮助,请告诉我。