0

このエラーが発生するのはなぜですか? また、正確にはどういう意味ですか? 証明書の設定の不一致以外に、これが考えられるものは他にありますか?

アクティブ フェデレーションのデータ センターで 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 の導入です。

私が再確認した他のいくつかのこと:

  1. いいえ、ユニコード文字を含む拇印をコピー/貼り付けしませんでした。サービスに SSL 証明書を再利用していますが、SSL は完全に機能するため、拇印のタイプミスではありません。
  2. 私を混乱させる可能性のあるこの証明書の古いバージョンまたは代替バージョンはありません。私が言ったように、証明書がインストールされていることを確認するたびに、証明書の拇印 (MMC -> 証明書) を調べてきました。
4

1 に答える 1

0

最終的に、ADFS の構成が間違っていたため、どういうわけかこれが結果のエラーでした。構成の誤りは、フェデレーション サービス名が ADFS プロキシ (ADFS サーバー自体) に解決されるホスト名ではないことが原因でした。パブリック プロキシのホスト名を中心に ADFS セットアップを再設計することで、これらの問題が解決されました。

これが Azure 以外の問題ではなかった理由は、フェデレーション サービス名が外部プロキシではなく内部サーバーに解決され、Azure が外部プロキシにしかアクセスできなかったためだと思われます。

いずれにせよ、この話の教訓 (ほとんど誰も話していないようです) は、フェデレーション サービス名でプロキシを使用することが予想される場合、フェデレーション サービス名はパブリック URIでなければならず、そのプロキシはそのパブリック URI に解決されなければならないということです!

于 2012-11-12T15:33:55.480 に答える