2011-07-01 39 views
3

.NET Webサービスへのアクセスを特定のクライアントリストに制限したいとします。彼らは彼らのすべての要求にクライアント証明書を添付し、 "リストにある"場合にのみ適切な応答を得ます。クライアント証明書認証を使用した.NET Webサービスの作成

しかし、これを実装するにはどのような方法が最適ですか?

IIS(7.0)では、クライアント証明書を要求するオプションを設定できますが、アクセスを許可するクライアント証明書はどこで指定できますか? Webサーバーマシンの証明書ストアにクライアント証明書の公開部分が必要ですか?

または、このような設定をコードで処理する必要があります。ここでクライアント証明書IDを抽出してローカルリストに一致させる必要がありますか?

他の方法ですか?

答えて

3

のリストに照らして確認し、次のようにセキュリティ要件とIIS7でWCFサービスを作成する1つの方法があります。あなたのWebサーバー上で次のコマンドを実行する必要があるかもしれませんWCFサービスをホストするために

:IIS上で

"%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r –y 

あなたは(のみ)とSSLの設定の下で結合httpsであなたのサイトを設定SSLを要求し、クライアント証明書を要求するように設定します。

これだけでは、有効なクライアント証明書とWebサーバーによって信頼される発行者で、サービス(およびwsdl)へのアクセスのみが許可されます。特定の証明書へのアクセスを制限するために

あなたは可能性がセットアップbindingConfigurationを使用してWCFの設定ファイルをなど:

として
<basicHttpBinding> 
    <binding name="MyBasicHttpBinding"> 
    <security mode="Transport"> 
     <transport clientCredentialType="Certificate" /> 
    </security> 
    </binding> 
</basicHttpBinding> 

とカスタム証明書バリデータとbehaviorConfiguration:

<behaviors> 
    <serviceBehaviors> 
    <behavior name="MyServiceBehavior"> 
     <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
     <serviceCredentials> 
     <clientCertificate> 
      <authentication certificateValidationMode="Custom" 
      customCertificateValidatorType="<project-namespace>.ClientCertificateValidator, <project-namespace>"/> 
     </clientCertificate> 
     </serviceCredentials> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

そして最後にプロジェクトの新しいクラスにカスタムバリデータを実装します。

public class ClientCertificateValidator : X509CertificateValidator 
{ 
    public override void Validate(X509Certificate2 certificate) 
    { 
     if (certificate.Thumbprint != <allowed-thumbprint>) 
     throw new Exception(); 
    } 
} 
1

これらのクライアント証明書が特定のルートCAから発信されている場合は、CTLを使用することができます。

そうでなければ、私はあなたがこれらのオプション(必要に応じて)持っていると思う:

  • あなたはクライアント証明書の.cerのファイルへのアクセス権を持っている場合は、あなたがclient certificate mappingを使用することができますし、optinally、Windowsアカウント(複数可)にマップそれに応じてAD /ローカルグループと権限にグループ化します。
  • (おそらく、HTTPハンドラで)コードでUPNを抽出し、許可されたUPNの
関連する問題