これに対する解決策を求めて、インターネット(およびSO)を精査しました。今日の時点で RHS に表示される質問はどれも私の問題を解決しないので、ここに行きます。
TLDR:クライアント証明書を必要とする WCF サービスを構築しようとしていますが、次のエラーが発生しています。
このサービスのセキュリティ設定には Windows 認証が必要ですが、このサービスをホストする IIS アプリケーションでは有効になっていません。
テスト用に生成した自己署名証明書をサービスに識別させる際に、いくつかの問題がありました。証明書を持っていないクライアントは、この例外の代わりに 403 (禁止) の IIS エラーを表示するため、現在は機能しているようです。
私のサービス web.config の関連スニペット:
<wsHttpBinding>
<binding name="clientCertificateBinding">
<security mode="Message">
<message clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
2 つのエンドポイントが定義されています。1 つは "mex" 用 (削除しようとしましたが、問題は解決しません) で、もう 1 つは実際のサービス用です。サービスバインディングはbinding="wsHttpBinding" bindingConfiguration="clientCertificateBinding"
仕様として使用します。
後で、サービス証明書を使用するように自分の行動に指示します。
<behavior name="AwesomeBehaviour">
<serviceMetadata httpsGetEnabled="true"/>
<serviceCredentials>
<serviceCertificate
storeLocation="LocalMachine"
storeName="My"
findValue = 'CN=...' />
</serviceCredentials>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
また、IIS はRquire SSL に設定されており、クライアント証明書が必要です。それらを受け入れるだけでなく、それらを必要とします。
私は(一部の人が示唆しているように)セキュリティモードを から に変更してみTransport
ましMessage
たTransportWithMessageCredential
。これは何もしません。
NTLM とトランスポート資格情報の種類としてのネゴシエートについて話しているこのスレッドもあります。これで問題は解決しません。
について説明しているこの KB 記事もありcscript.exe
ます。互換性ツールをインストールし、NTLM 認証プロバイダーを追加しましたが、役に立ちませんでした。
何が欠けているのかわかりません。