繁体   English   中英

使用Azure Blob存储中的证书解密WCF回调

[英]Decrypt WCF callback with Certificate from Azure Blob Storage

我是WCF的新手,我正在使用customBinding(他们不是我的)使用安全的WCF服务。

var sbe = SecurityBindingElement.CreateMutualCertificateDuplexBindingElement(MessageSecurityVersion.WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10);
        sbe.EndpointSupportingTokenParameters.Signed.Add(new UserNameSecurityTokenParameters());
        sbe.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
        sbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic256Rsa15;
        sbe.AllowSerializedSigningTokenOnReply = true;
        sbe.IncludeTimestamp = true;
        sbe.SecurityHeaderLayout = SecurityHeaderLayout.Lax;
        sbe.MessageProtectionOrder = MessageProtectionOrder.EncryptBeforeSign;

编辑:

决定简化新要求以确定是否有帮助。

我想有一个回调端点,它使用单个合同并使用上面的绑定。 问题是发送到此服务的邮件将由不同的证书(我们的客户端公共证书)加密。

我不希望有数百个端点,我可以明确指定用于解密的证书,因为我们可能需要修改/添加/删除,因为我已经发现,你不能在serviceHost打开后执行此操作我们无法服务下来/重启它。

是否有可能拦截消息,解密并以某种方式传递它? (我现在正在查看消息拦截,看看这是否可行)。

消息拦截和解密

请参阅此链接使用WCF解密安全令牌

在处理相互证书身份验证时,您拥有客户端证书的私钥。

使用Message Inspectors,可以拦截传入的消息,并使用客户端证书的私钥对其进行解密。

消息检查员

在WCF服务的使用者端使用AfterReceiveReply事件来覆盖WCF中的解密逻辑

public void AfterReceiveReply(ref Message reply, object correlationState)
{}

Message Inspectors必须包含在配置文件的绑定扩展中

<extensions>
  <behaviorExtensions>
    <add name="customMessageInspector" type="WCFComponents.CustomMessageInspector.CustomMessageInspectorBehaviorElement, WCFComponents"/>
  </behaviorExtensions>
</extensions>

并且此行为必须包含在WCF代理端点行为中

var behavior = new CustomMessageInspectorBehavior();
        _serviceProxy.Endpoint.Behaviors.Add(behavior);

此处下载示例WCF消息检查器项目

您必须执行WCF自定义才能实现此目的。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM