0

クライアント側の認証とサーバー側の認証の 2Way SSL 認証で動作する RESTful API (WCF を使用) の開発を開始しています。

私が理解しているように、クライアントはクライアント側の証明書によって既に認証されているため、パスワード/ユーザー名は必要ありません。

私の問題は、公開されているメソッドの一部を特定のクライアントのみに制限する必要があることです。

そのため、何らかの形式の承認も必要です。特定の機能を承認されたクライアントに提供される秘密鍵を使用することを考えましたが、このクライアントには、承認に使用できる可能性のあるクライアント側の証明書が既にあることに気付きました。

現在使用されているクライアント側の証明書の名前をプログラムで取得し、証明書名で承認する方法はありますか?

このようなもの:

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

2 に答える 2

1

はい、そのようなメソッドがあります。最も顕著なのはX509Certificate2.GetNameInfoメソッドです。
(ところで、Dominick Baierにはそのための優れた流暢なAPI拡張機能があります)

ただし、はるかに単純化されたコードアーキテクチャを提供するクレームベースのIDを確認する必要があると思います。

于 2012-06-03T12:56:16.567 に答える
0

証明書所有者の ID は、証明書の SubjectDN にあります。

残りの承認部分はアプリケーションに依存し、アーキテクチャによっても異なります。たとえば、LDAP を使用している場合は、そのユーザーのロールを検索します。

于 2012-06-03T23:21:26.213 に答える