このエラーが発生するのはなぜですか? また、正確にはどういう意味ですか? 証明書の設定の不一致以外に、これが考えられるものは他にありますか?
アクティブ フェデレーションのデータ センターで ADFS プロキシをヒットし、次に Azure で実行されている WCF Web サービス (Web ロール) をヒットする、ローカルで実行されている単体テストがあります。クライアントは MessageSecurityException でエラーになります。したがって、サーバーのサービス ログを見ると、例外がログに記録されます。
Cannot resolve KeyInfo for decryption: KeyInfo 'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 1,
Clause[0] = EncryptedKeyIdentifierClause(EncryptedKey = abcdefg123456==, Method 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p')
)
', available tokens 'System.ServiceModel.Security.AggregateTokenResolver'.
これについてオンラインで見つけたものはすべて、クライアントとサーバーの間で証明書が一致していないことを示しています。しかし、私はこれらの証明書参照を二重、三重、および四重にチェックしましたが、それらは同一です。クライアントの (ローカル単体テスト) エンドポイント:
<endpoint address="https://mydomain.com/TestService.svc"
binding="customBinding"
bindingConfiguration="WS2007FederationHttpBinding_ISayHelloService"
contract="ActiveFederationHelpers.Tests.ISayHelloService"
name="WS2007FederationHttpBinding_ISayHelloService">
<identity>
<certificateReference findValue="D4ECD7FF6A551FAA040BA0B62B77B8EA0F11CD16"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindByThumbprint" />
</identity>
</endpoint>
私のサーバーのサービス構成 (Azure インスタンスに RDP を実行してそこからプルし、それが実際に私が考えているものであることを確認しました):
<serviceCertificate>
<certificateReference findValue="D4ECD7FF6A551FAA040BA0B62B77B8EA0F11CD16" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
</serviceCertificate>
これらの証明書がローカル マシン (単体テスト) と Azure サーバー (Web サービス サーバー) の両方にインストールされていることを確認しました。そして、拇印が私の設定にあるものであることを確認しました。これはすべてローカル環境で正常に実行されています。唯一の違いは、証明書、URI、および Azure の導入です。
私が再確認した他のいくつかのこと:
- いいえ、ユニコード文字を含む拇印をコピー/貼り付けしませんでした。サービスに SSL 証明書を再利用していますが、SSL は完全に機能するため、拇印のタイプミスではありません。
- 私を混乱させる可能性のあるこの証明書の古いバージョンまたは代替バージョンはありません。私が言ったように、証明書がインストールされていることを確認するたびに、証明書の拇印 (MMC -> 証明書) を調べてきました。