gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:48:28 26 4
gpt4 key购买 nike

我对 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;

编辑:

决定用新的要求进行简化,看看是否有帮助。

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

我不想有数百个端点,我可以在其中显式指定用于解密的证书,因为我们可能需要修改/添加/删除,而且我已经发现,在 serviceHost 之后你不能这样做已打开,我们无法关闭/重新启动服务。

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

最佳答案

消息拦截和解密

请引用此链接Decrypting a security token using WCF

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

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

Message Inspectors

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

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

消息检查器必须包含在配置文件的绑定(bind)扩展中

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

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

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

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

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

希望这有帮助

关于c# - 使用 Azure Blob 存储中的证书解密 WCF 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com