【问题标题】:2-Way SSL authentication and request authorization2-Way SSL 身份验证和请求授权
【发布时间】:2012-06-03 12:40:05
【问题描述】:

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

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

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

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

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

这样的:

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

【问题讨论】:

    标签: .net wcf ssl


    【解决方案1】:

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

    不过,我认为你应该看看Claims-Based Identity,它会给你一个大大简化的代码架构。

    【讨论】:

    • 感谢您提供的方法,正是我想要的。关于基于声明的身份,它看起来有点矫枉过正......我认为它适用于更复杂的系统......
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-22
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 2017-01-23
      相关资源
      最近更新 更多