gpt4 book ai didi

wcf - WCF 服务中的自定义证书验证

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

我想在我的 WCF 服务中检查客户端证书。

我的目标是只允许拥有特定指纹证书的客户端能够与我的服务进行通信。

我的 WCF 服务托管在 IIS 中,我使用的是 basicHttpBinding 和 security mode="transport"凭证类型为“Certificate”。 IIS 需要客户端证书才能与服务进行通信。

预先感谢您的帮助。

更新:
我的配置:

<basicHttpBinding>
<binding
name="testBinding"
maxReceivedMessageSize="2147483647">
<readerQuotas
maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>

</binding>
</basicHttpBinding>

行为:
<serviceBehaviors>
<behavior name="SomeServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="Custom" customCertificateValidatorType="SomeService.CustomCertificateValidator,SomeService" />
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>

服务配置:
<service 
behaviorConfiguration="SomeServiceBehavior"
name="SomeService">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="testBinding"
contract="ISomeService">
</endpoint>
</service>

出于测试目的,我以这种方式实现了验证器:
public class CustomCertificateValidator : X509CertificateValidator
{
public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate)
{
throw new SecurityTokenValidationException("TEST Certificate was not issued by a trusted issuer TEST");
}
}

这不起作用。我可以使用任何有效证书连接到我的服务。

最佳答案

您可以创建一个派生自 X509CertificateValidator 的类,并使用它对传入的证书进行自定义验证。如果您出于某种原因希望验证失败,则抛出 SecurityTokenValidationException。

将 certificateValidationMode 设置为 Custom 并在配置文件的 clientCertificate 服务行为部分中指定您的验证器。

How to: Create a Service that Employs a Custom Certificate Validator

关于wcf - WCF 服务中的自定义证书验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1559915/

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