SP 証明書の更新時に ADFS を IDP として使用すると SSO ログインに失敗する
SP 証明書の更新時に ADFS を IDP として使用すると SSO ログインに失敗します。
IdP (ADFS) で新しい SP 証明書を更新すると SSO に失敗します。
エラー: 応答に無効なステータスコードが含まれています。
調査する手順:
- SAML トレースをキャプチャして、SAML 応答を見つけます。
- ブラウザにSAML Message Decoderプラグインを追加します。
Chrome の場合: https://chrome.google.com/webstore/detail/saml-message-decoder/mpabchoaimgbdbbjjieoaeiibojelbhm?hl=en
Firefox の場合: https://addons.mozilla.org/en-US/firefox/addon/saml-message-decoder-extension/ - プラグインを開き、[このメッセージをコピー] をクリックします。
- Notepad++を開いてインストールします。 ここをクリックします。
- メッセージを貼り付けて、XML 言語の SAML 応答を直接検索します。
- 属性が IdP からの SAML 応答に存在するかどうかを確認します。
- 属性が表示されない場合、Webex が IdP から属性を受け取っていないことになります。 したがって、問題はIdPの終わりから調査する必要があります。
- パーティ設定に依存する ADFS Webex を確認するには、ここをクリックしてください。
- 設定が正常に表示されたら、イベント ビューアのログを確認します。
- Windows ログの ADFS エラーを確認:
- Windows ログで ADFS イベント ログのエラー コード 364 を確認します。 イベントの詳細によって無効な証明書を識別します。 この場合、ADFS ホストはポート 80 のファイアウォールを通じて証明書を有効化することを許可されていません。
- ファイアウォールを介してインターネットへのポート 80 への IdP アクセスを許可し、CRL チェックを実行できるようにします。
- ポートが開いている場合は、Microsoftとそのファイアウォールでフォローアップします。
- ファイアウォールでポート 80 が開いていない場合、または CRL チェックが機能しない場合は、CRL を無効にします。
- [ADFS サーバー] で [イベントビューア] > [アプリケーション] > [ADFS] > [管理者] の順にクリックして、ログインを複製した時間のタイム スタンプでエラーログを検索します。 次のエラーが表示される場合:
エラー: 「パッシブな要求のフェデレーション中にエラーが発生しました。
追加データ
プロトコル名: Saml
証明書利用者: https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx
例外情報:
プロトコル名: Saml
証明書利用者: https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx
例外情報:
Microsoft.IdentityServer.Service.SecurityTokenService.RevocationValidationException: MSIS3014: 拇印「754B9208F1F75C5CC962750F3675C5D129471D80」で識別された証明書利用者信頼「https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx'」の暗号化証明書が無効です。 これは、証明書が失効しているか、有効期限が切れているか、または、証明書チェーンが信頼されていないことを示している可能性があります。
at Microsoft.IdentityModel.Threading.AsyncResult.End(IAsyncResult result)
at Microsoft.IdentityModel.Threading.TypedAsyncResult1.End(IAsyncResult result) at Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, IList1& identityClaimSet, List1 additionalClaims) at Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, List1 additionalClaims)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, String sessionState, String relayState, String& newSamlSession, String& samlpAuthenticationProvider, Boolean isUrlTranslationNeeded, WrappedHttpListenerContext context, Boolean isKmsiRequested)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext context, HttpSamlRequestMessage httpSamlRequest, SecurityTokenElement onBehalfOf, String relyingPartyIdentifier, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired, String& samlpSessionState, String& samlpAuthenticationProvider)at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSerializedToken(HttpSamlRequestMessage httpSamlRequest, WrappedHttpListenerContext context, String relyingPartyIdentifier, SecurityTokenElement signOnTokenElement, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired) at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSecurityToken(SamlSignInContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext context)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)"
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, String sessionState, String relayState, String& newSamlSession, String& samlpAuthenticationProvider, Boolean isUrlTranslationNeeded, WrappedHttpListenerContext context, Boolean isKmsiRequested)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext context, HttpSamlRequestMessage httpSamlRequest, SecurityTokenElement onBehalfOf, String relyingPartyIdentifier, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired, String& samlpSessionState, String& samlpAuthenticationProvider)at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSerializedToken(HttpSamlRequestMessage httpSamlRequest, WrappedHttpListenerContext context, String relyingPartyIdentifier, SecurityTokenElement signOnTokenElement, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired) at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSecurityToken(SamlSignInContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext context)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)"
解決方法は次のとおりです。
- ADFS で管理者として Powershell を開き、次のコマンドを実行します。
Get-AdfsRelyingPartyTrust -Identifier 'https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx ' | Set-AdfsRelyingPartyTrust -SigningCertificateRevocationCheck None -EncryptionCertificateRevocationCheck None
メモ:
- 識別子URLを引用符で入力し、識別子URLがエラーメッセージに表示されることを確認し、コピーして貼り付けます。
- 政府版 Webex (FedRAMP) Control Hub は https://admin-usgov.webex.com/を使用する必要があります。
または
- ADFS で管理者として Powershell を開き、次のコマンドを実行します。
Get-AdfsRelyingPartyTrust -名前 "Cisco Webex" | Set-AdfsRelyingPartyTrust -SigningCertificateRevocationCheck None -EncryptionCertificateRevocationCheck None
注:ADFS で作成した顧客と同じ名前で、二重引用符で返信側の信頼名を入力してください。
- Control hub で SSO をテストして確認します。
この投稿記事は役に立ちましたか?