gpt4 book ai didi

wcf - 具有WS-Security的WCF服务仅需要签名时间戳

转载 作者:行者123 更新时间:2023-12-04 04:23:19 25 4
gpt4 key购买 nike

我需要向第三方提供服务,该服务将发送带有签名时间戳的肥皂消息。

如何配置我的服务以支持此服务?

更新
我设法接近了我们所追求的Soap消息的格式,但是WCF坚持对用户名和时间戳记令牌进行签名,有没有办法修改
绑定只签署时间戳?



进一步更新
这是我们的要求:


时间戳记元素必须被签名。
用于签名的证书上的CN名称必须与UsernameToken元素中提供的Username匹配。
用于签名的证书必须在BinarySecurityToken元素中发送。
KeyInfo元素必须仅包含SecurityTokenReference元素,必须使用该元素来引用BinarySecurityToken。
必须指定规范化算法。
必须指定SignatureMethod,并且必须为SHA-1或SHA-2算法。
应该使用分离的签名。




有什么建议?

当前配置

客户绑定

<bindings>
<wsHttpBinding>
<binding name="WSBC">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" proxyCredentialType="None"></transport>
<message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" />
</security>
</binding>
</wsHttpBinding>
</bindings>


客户端端点

<client>
<endpoint address="https://localhost/WcfTestService/Service2.svc"
behaviorConfiguration="CCB" binding="wsHttpBinding"
bindingConfiguration="WSBC"
contract="ServiceReference2.IService2"
name="wsHttpBinding_IService2" />
</client>


客户行为

<behaviors>
<endpointBehaviors>
<behavior name="MBB">
<clientCredentials>
<clientCertificate findValue="03 58 d3 bf 4b e7 67 2e 57 05 47 dc e6 3b 52 7f f8 66 d5 2a"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindByThumbprint" />
<serviceCertificate>
<defaultCertificate findValue="03 58 d3 bf 4b e7 67 2e 57 05 47 dc e6 3b 52 7f f8 66 d5 2a"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindByThumbprint" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>


服务绑定

<bindings>
<wsHttpBinding>
<binding name="ICB">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" proxyCredentialType="None"></transport>
<message clientCredentialType="UserName"
negotiateServiceCredential="false"
establishSecurityContext="false" />
</security>
</binding>
</wsHttpBinding>
</bindings>


服务端点

<service name="WcfTestService.Service2" behaviorConfiguration="SCB">
<endpoint address="" binding="wsHttpBinding" contract="WcfTestService.IService2"
bindingConfiguration="ICB" name="MS" />
</service>


服务行为

<behaviors>
<serviceBehaviors>
<behavior name="SCB">
<serviceCredentials>
<serviceCertificate findValue="4d a9 d8 f2 fb 4e 74 bd a7 36 d7 20 a8 51 e2 e6 ea 7d 30 08"
storeLocation="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindByThumbprint" />
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="WcfTestService.UsernameValidator, WcfTestService" />
<clientCertificate>
<authentication certificateValidationMode="None" revocationMode="NoCheck" />
</clientCertificate>
</serviceCredentials>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>

最佳答案

您可能需要考虑一个自定义安全绑定类,该类以所需的方式实现安全性,而不是WCF默认设置。

这些MSDN链接介绍了自定义绑定和SecurityBindingElement抽象基类:

http://msdn.microsoft.com/en-us/library/ms730305.aspx

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.securitybindingelement.aspx

关于wcf - 具有WS-Security的WCF服务仅需要签名时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3785536/

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