我尝试创建类似的东西:客户端验证并从自定义STS1获取令牌,下一个客户端使用机器密钥授权并在自定义STS2上获得令牌并获取另一个令牌。使用最后一个令牌,客户端请求RP服务上的方法。
所有服务都托管在IIS上,并且正在使用活动联合方案。 两个STS的端点都具有ws2007Federation和ws2007Http绑定,而RP使用ws2007FederationBinding和STS2作为发行者。
如果我使用CreateChannelWithIssuedToken创建频道,我只能看到来自STS1的令牌,并且无法从STS2获取令牌。
所以我决定将STS1中的令牌作为ActAs RST的属性传递给STS2令牌。那失败了 - 无法解密令牌。
答案 0 :(得分:1)
通常,您只想在每一步使用一个令牌。因此,如果您需要合并声明,则需要在第二个STS的声明转换步骤中执行此操作。
因此,流程将通过STS1进行身份验证,然后使用STS1中的令牌向STS2进行身份验证。此时,您将通过声明并转换为根据需要添加其他声明。然后生成的Token就可以从RP应用程序中使用了。
我实际上已经开始了一个关于我们最近构建的非常类似场景的博客系列。不要过度自我推销,但它不会给我任何钱,所以我会发布它以防万一。
http://www.livingthearchitecture.com/mixing-sso-with-existing-technologies/
我很乐意深入研究,但根据您的方案的具体情况,解决方案的细节会发生很大变化。我认为以上表达了您想要的一般方法。如果我能再帮忙,请告诉我。