我开始开发一个SSL (与WCF),这将在2Way RESTful认证-客户端认证和服务器端认证工作。
据我所知,不需要密码/用户名,因为客户端已经通过客户端证书进行了身份验证。
我的问题是,一些公开的方法应该仅限于特定的客户端。
所以,我还需要某种形式的授权。我考虑过使用密钥,该密钥将提供给授权了特定功能的客户端,但后来我意识到,这些客户端将已经拥有可能用于授权的客户端证书。
有没有办法以编程的方式获取当前使用的客户端证书的名称,然后通过证书名称进行授权?
像这样的东西:
string clientCertificate = CertificateAuthority.GetCurrentCertificate;
if (Authorize(clientCertificate))
doSomething()
发布于 2012-06-03 12:56:17
是的,确实有这样的方法,最值得注意的是X509Certificate2.GetNameInfo Method。
(顺便说一句,Dominick Baier在这方面有一个很好的fluent API extension )
然而,我认为你应该看看Claims-Based Identity,它会给你一个非常简单的代码架构。
发布于 2012-06-03 23:21:26
证书持有者的身份在证书的SubjectDN中。
其余部分是授权部分,它依赖于应用程序,并且也随您的体系结构而变化。例如,如果您正在使用LDAP,您将查找该用户的角色。
https://stackoverflow.com/questions/10870386
复制