次のシナリオがあります。
Active Directory 1: WCF クライアント、ADFS 2.0 (STS)
Active Directory 2: WCF サービス (証明書利用者)
RP を ADFS に追加しましたが、ADFS からトークンを要求すると、次のエラーが表示されます: System.ServiceModel.FaultException: ID3242: セキュリティ トークンを認証または承認できませんでした。
ADFS のイベント ログを見ると、一致するエラーが見つかります。
拇印 'XXXXXXXXXXXX' で識別される証明書利用者信頼 'http://XXXXX/Service1/' 証明書の証明書チェーンを構築しようとしているときにエラーが発生しました。考えられる原因としては、証明書が取り消されている、証明書チェーンが証明書利用者信頼の暗号化証明書の取り消し設定で指定されているとおりに検証できなかったか、証明書が有効期間内にないことが考えられます。
AD FS 2.0 の Windows PowerShell コマンドを使用して、証明書利用者暗号化証明書の失効設定を構成できます。証明書利用者信頼の暗号化証明書失効設定: CheckChainExcludeRoot 証明書チェーンの構築中に次のエラーが発生しました: 不明なエラー。未知のエラー。
User Action: 証明書利用者信頼の暗号化証明書が有効であり、取り消されていないことを確認してください。失効設定で「なし」または「キャッシュのみ」の設定が指定されていない場合は、AD FS 2.0 が証明書失効リストにアクセスできることを確認します。プロキシ サーバーの設定を確認します。プロキシ サーバーの設定を確認する方法の詳細については、AD FS 2.0 トラブルシューティング ガイド (http://go.microsoft.com/fwlink/?LinkId=182180) を参照してください。
ADFS は RP からの署名証明書を信頼していないようです (当然のことながら、署名証明書を発行した CA は別の AD にあります)。CertificateRevokationList は、両方の Active Directory から到達可能です。
「ローカル コンピュータ」の信頼されたルート証明書に CA 証明書を追加しましたが、問題は検証メカニズムにあると思います。
ADFS が適切な証明書で署名されたトークンを発行するには、何を構成する必要がありますか、または証明書が有効であることを ADFS に納得させるにはどうすればよいですか?
編集:
powershell コマンドを使用して失効チェックを変更してみました。
Set-ADFSRelyingPartyTrust -SigningCertificateRevocationCheck CheckEndCert
しかし運が悪かった: Set-ADFSRelyingPartyTrust : 指定された名前付きパラメーターを使用してパラメーター セットを解決できません。
At line:1 char:26
+ Set-ADFSRelyingPartyTrust <<<< -SigningCertificateRevocationCheck CheckEndCert
+ CategoryInfo : InvalidArgument: (:) [Set-ADFSRelyingPartyTrust], ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.IdentityServer.PowerShell.Commands.SetRelyingPartyTrustC
ommand
編集2 :これはうまくいきました:
(Get-ADFSRelyingPartyTrust) | Set-ADFSRelyingPartyTrust -EncryptionCertificateRevocationCheck CheckEndCert
しかし、現在、Active Directory 1 のクライアントが証明書について不平を言っています...
System.ServiceModel.Security.SecurityNegotiationException: ターゲット 'http://XXXXXXXXXXXXXXXXXX/Service1/' の 'http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Service1/' との SOAP セキュリティ ネゴシエーションが失敗しました。詳細については、内部例外を参照してください。---> System.IdentityModel.Tokens.SecurityTokenValidationException: X.509 証明書 CN=RP-サービス チェーンの構築に失敗しました。使用された証明書には、検証できない信頼チェーンがあります。証明書を置き換えるか、certificateValidationMode を変更してください。信頼されたルート機関への証明書チェーンを構築できませんでした。