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



我试图创建这样的东西:客户端身份验证并从自定义STS1获得令牌,下一个客户端使用机器密钥授权,并在自定义STS2上颁发令牌,并获得另一个令牌。使用最后一个令牌,客户端请求RP服务上的方法。

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

如果我用CreateChannelWithIssuedToken创建通道,我只能从STS1看到令牌,不能从STS2获得令牌。

所以我决定在请求STS2令牌时将令牌从STS1传递为ActAs RST的属性。这失败了-无法解密令牌。

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

通常您只希望在每一步中使用一个令牌。因此,如果您需要合并索赔,则需要在第二个STS的索赔转换步骤中进行。

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

我实际上已经开始了一个关于我们最近构建的一个非常相似的场景的博客系列。我不是要过度自我推销,但这并没有给我赚到钱,所以我把它贴出来,以防它对我有帮助。

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

我很乐意更深入地讨论,但根据您的具体情况,解决方案的细节将会有很大的变化。我认为以上表达了你想要的一般方法。如果还需要我帮忙,请告诉我。

最新更新