0

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

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

我的问题是一些公开的方法应该仅限于特定的客户。

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

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

像这样的东西:

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

2 回答 2

1

是的,有这样的方法,最引人注目的是X509Certificate2.GetNameInfo Method
(顺便说一句,Dominick Baier有一个出色的流畅 API 扩展

但是,我认为您应该看一下基于声明的身份,它将为您提供一个非常简化的代码架构。

于 2012-06-03T12:56:16.567 回答
0

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

其余部分,即授权部分,取决于应用程序,并且也随您的体系结构而变化。例如,如果您使用 LDAP,您将查找该用户的角色。

于 2012-06-03T23:21:26.213 回答