2012-06-03 43 views
0

我开始开发一个RESTful API(带WCF),它将在2Way SSL认证中工作 - 客户端认证和服务器端认证。双向SSL认证和请求授权

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

我的问题是,一些暴露的方法应该只限于特定的客户端。

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

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

somethine这样的:

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

回答

0

证书持有者的身份位于证书的SubjectDN中。

其余的授权部分是依赖于应用程序的,并且也随您的架构而异。例如,如果您使用的是LDAP,则会查找该用户的角色。