我确实在服务器上托管了 WCF 服务,该服务要求客户端使用 x509 证书进行身份验证。我需要在服务中读取此证书,因为包含的数据是业务逻辑的一部分。
我用于 WCF 服务的绑定是 webHttpBinding,安全性设置为“Transport”和 clientCredentialType="certificate"。
在 ASP.net 中,我可以使用 HttpContext.Current,但它在 WCF 中不可用。我该怎么做才能从用户那里获得证书?
亲切的问候,阿洛伊斯
我确实在服务器上托管了 WCF 服务,该服务要求客户端使用 x509 证书进行身份验证。我需要在服务中读取此证书,因为包含的数据是业务逻辑的一部分。
我用于 WCF 服务的绑定是 webHttpBinding,安全性设置为“Transport”和 clientCredentialType="certificate"。
在 ASP.net 中,我可以使用 HttpContext.Current,但它在 WCF 中不可用。我该怎么做才能从用户那里获得证书?
亲切的问候,阿洛伊斯
http://blogs.msdn.com/b/wenlong/archive/2006/01/23/516041.aspx上的文章为我提供了解决此问题的方法。WCF 允许在“ASP.net 兼容模式”下运行,这会带回完整的 HttpContext 对象。
我在我的 WCF 服务中使用它,禁用了 ASP.net 兼容性:
var x509ClaimSet = OperationContext.Current.ServiceSecurityContext.AuthorizationContext.ClaimSets.FirstOrDefault() as X509CertificateClaimSet;