gpt4 book ai didi

wcf - 使用传输安全模式的 WCF 服务的证书信息

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

使用 <security mode="Transport> 时,有什么方法可以提取有关在我的 Web 服务方法中使用了哪个客户端证书的信息?我筛选了 OperationContext.Current 但找不到任何明显的东西。

我的服务器配置如下:

  <basicHttpBinding>
<binding name="SecuredBasicBindingCert">
<security mode="Transport">
<message clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>

我正在与第三方发布/订阅系统合作,该系统不幸使用 DataPower 进行身份验证。似乎如果我在此配置中使用 WCF,那么我将无法收集有关调用者的任何信息(因为实际上没有发送任何凭据)。

我以某种方式需要能够在不更改我的配置或要求他们更改其有效负载的情况下找出谁调用了我的服务。

最佳答案

是的,但这是不直观的。

首先,确保并从您的服务库中引用 System.IdentityModel 程序集。

现在,将类似于以下内容的内容添加到您想了解客户端证书的服务方法中:

// Find the certificate ClaimSet associated with the client
foreach (ClaimSet claimSet in OperationContext.Current.ServiceSecurityContext.AuthorizationContext.ClaimSets)
{
X509CertificateClaimSet certificateClaimSet = claimSet as X509CertificateClaimSet;
if (certificateClaimSet != null)
{
// We found the ClaimSet, now extract the certificate
X509Certificate2 certificate = certificateClaimSet.X509Certificate;

// Do something interesting with information contained in the certificate
Debug.Print("Certificate Subject: " + certificate.Subject);
}
}

希望这可以帮助!

关于wcf - 使用传输安全模式的 WCF 服务的证书信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923449/

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