双向SSL身份验证和请求授权

时间:2012-06-03 12:40:06

标签: .net wcf ssl

我开始开发一个RESTful API(带有WCF),它将用于2Way SSL身份验证 - 客户端认证和服务器端认证。

据我了解,不需要密码/用户名,因为客户端已经通过客户端证书进行了身份验证。

我的问题是,某些公开的方法应仅限于特定的客户端。

所以,我还需要某种形式的授权。我想过使用一个秘密密钥,它将被提供给授权特定功能的客户端,但后来我意识到这个客户端已经有了可能用于授权的客户端证书。

有没有办法以编程方式获取当前使用的客户端证书的名称,然后通过证书名称进行授权?

有点像这样:

string clientCertificate = CertificateAuthority.GetCurrentCertificate;
if (Authorize(clientCertificate))
     doSomething()

2 个答案:

答案 0 :(得分:1)

是的,有这样的方法,最值得注意的是X509Certificate2.GetNameInfo Method (顺便说一下,Dominick Baier有一个很好的fluent API extension

但是,我认为你应该看一下Claims-Based Identity,这将为你提供一个简化的代码架构。

答案 1 :(得分:0)

证书持有者的身份在证书的SubjectDN中。

其余部分,即授权部分,取决于应用程序,也因您的体系结构而异。例如,如果您使用的是LDAP,则会查找该用户的角色。