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

标签 c# wcf wif ws-security ws-federation

我正在尝试创建类似这样的东西:客户端从自定义 STS1 进行身份验证并获取 token ,下一个客户端使用机器 key 进行授权并在自定义 STS2 上颁发 token 并获取另一个 token 。使用最后一个 token ,客户端请求 RP 服务上的方法。

所有服务都托管在 IIS 上,并使用主动联合方案。 两个 STS 的端点都带有 ws2007Federation 和 ws2007Http 绑定(bind),并且 RP 使用 ws2007FederationBinding 并将 STS2 作为发布者。

如果我使用 CreateChannelWithIssuedToken 创建 channel ,我只能看到来自 STS1 的 token ,而无法从 STS2 获取 token 。

因此,我决定根据请求将来自 STS1 的 token 作为 ActAs RST 的属性传递给 STS2 token 。那失败了 - 无法解密 token 。

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

最佳答案

通常,您只想在每个步骤中使用一个 token 。因此,如果您需要合并声明,您将希望在第二个 STS 的声明转换步骤中执行此操作。

因此,流程将通过 STS1 进行身份验证,然后使用来自 STS1 的 token 通过 STS2 进行身份验证。届时,您将通过声明并进行转换以根据需要添加其他声明。然后生成的 token 将准备好从 RP 应用程序中使用。

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

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

我很乐意进行更深入的探讨,但根据您场景的具体情况,解决方案的具体内容会发生很大变化。我认为以上内容表达了您想要的一般方法。让我知道是否可以提供更多帮助。

关于c# - 在 WCF/WIF 中如何合并来自两个不同客户端的自定义 sts token 的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30722681/

相关文章:

visual-studio - “add service reference”时,Visual Studio不会生成app.config内容

cryptography - Microsoft.IdentityModel : Key not valid for use in specified state

wif - 安装 WIF SDK 4.0

c# - 比较 Entity Framework 模型

c# - 如果单击保存文件对话框上的取消按钮,该怎么办?

wcf - 以编程方式添加 IOperationBehavior 的正确位置在哪里

wcf - .Net 4.0 上对 WCF 的未签名 SAML 2.0 支持

c# - 是否可以在 C# 中扩展 'using' block ?

c# - 使用 System.Text.Json 将 JSON 反序列化为对象

.net - WCF中的回调是如何实现的?