WCF サービス エンドポイントにアクセスしようとしています。ただし、サービスにアクセスしようとするたびに、サーバーで上記の例外が発生し続けます (ログを確認すると)。
このサービスは、基本的に相互証明書の動作をします。クライアント証明書とサービス証明書が一覧表示されます。また、web.conf の endpoint\identity セクションの下に userPrincipleName を指定します... 同様のセットアップの構成ファイルの例を以下に示します...
<endpoint address="<nicelyAddressEndpoint>"
binding="netTcpBinding" bindingConfiguration="customTcpBinding"
contract="<service>" name="<smartSoundingCamelCasedServiceName>">
<identity>
<userPrincipalName value="<example>@yourMother.net" />
</identity>
</endpoint>
私が説明したエンドポイントになります。
<service name="<NiceServiceName>" behaviorConfiguration="MutualCertificateBehavior">
<endpoint address="" binding="customBinding" bindingConfiguration="CustomMCBinding" contract="IServiceContractThatIsntWrittenPoorley"/>
</service>
<behavior name="MutualCertificateBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceMetadata httpGetEnabled="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck" includeWindowsGroups="false"/>
<certificate findValue="<CertName>" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName" />
</clientCertificate>
<serviceCertificate findValue="<ServiceCert>" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
それがサービスと振る舞いです。
私は、このことからデータを取得するためにできる限りのことをしています。私は 1 つの問題点に直面しています。それが私がこれを間違った方法で行っているためなのか、それとも私が近くにいて、ちょっとした問題を乗り越える必要があるだけなのかはわかりません. クライアントの web.config で、同様にエンドポイントの動作を設定しました...
<behavior name="ClientCertificateBehvior">
<clientCredentials>
<clientCertificate findValue="<XXX>"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName"/>
<serviceCertificate>
<authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck" />
<defaultCertificate findValue="<XXX>" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName" />
</serviceCertificate>
</clientCredentials>
</behavior>
そして、これが私のエンドポイントです...
<endpoint address="xxx.xxx.xxx"
behaviorConfiguration="ClientCertificateBehvior" binding="customBinding"
bindingConfiguration="CustomBinding_IVPOService" contract="VPOServiceEndPoint.IVPOService"
name="CustomBinding_IVPOService">
<identity>
<dns value="xxx" />
<userPrincipalName value="yyy@xxx.net" />
</identity>
</endpoint>
このサービスにアクセスしようとすると、この例外が発生します...
The identity check failed for the outgoing message. The expected identity is 'identity(http://schemas.xmlsoap.org/ws/2005/05/identity/right/possessproperty: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn)' for the 'xxxxxx' target endpoint.
ローカル マシンにリストされている適切なストアに証明書があり、その証明書への適切な書き込みを許可していることに注意してください。私は、ここで自分自身をさらに悩ませていることに気づき、物事を壁にぶつけて何がくっつくかを見るのではなく、何をするのが正しいのかを理解しようとしています. どのステップが欠けていますか? MutualCertificate で保護されたサービスからデータを受信する最良の方法は何ですか? 適切な userPrinciplename を取得するにはどうすればよいですか? サービス web.config にリストされているものだと思いましたか? 私はこれを正しい方法で行っていますか?私は近づいていますか、それとも自分のためにもっと大きな混乱を引き起こしていますか?