ADFS를 통해 IDP로 SP 인증서를 갱신할 때 SSO 로그인 오류가 발생함
피드백이 있습니까?
ADFS를 통해 IDP로 SP 인증서를 갱신할 때 SSO 로그인 실패.
IdP(ADFS)에서 새로운 SP 인증서를 업데이트할 때 SSO 오류가 발생합니다.
오류 : 응답에 유효하지 않은 상태 코드.
조사하기 위한 단계:
- SAML 추적을 캡처하여 SAML 응답을 찾습니다.
- 브라우저에 SAML 메시지 디코더 플러그인을 추가합니다.
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의 방화벽을 통해 인증서의 유효성을 검증할 수 없습니다.
- IdP가 방화벽을 통해 인터넷에 대한 포트 80에 액세스할 수 있도록 허용하면 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'의 암호화 인증서가 유효하지 않습니다. 인증서가 무효화되었거나, 만료되었거나, 인증서 체인을 신뢰할 수 없음을 나타낼 수 있습니다.
에 Microsoft.IdentityModel.Threading.AsyncResult.End(IAsyncResult 결과)
- Microsoft.IdentityModel.Threading.TypedAsyncResult1.End(IAsyncResult result) - Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, IList1& identityClaimSet, List1 additionalClaims) - Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, List1 additionalClaims)
에 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, String sessionState, String relayState, String& newSamlSession, String& samlpAuthenticationProvider, 부울 isUrlTranslationNeeded, WrappedHttpListenerContext 컨텍스트, 부울 isKmsiRequested)
에 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext context, HttpSamlRequestMessage httpSamlRequest, SecurityTokenElement onBehalfOf, String relyingPartyIdentifier, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired, Boolean isApplicationProxyTokenRequired, String& samlpSessionState, String& samlpAuthenticationProvider) at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInContext, SecurityToken securityToken, SecurityToken deviceSecurityToken)
에서 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext context)
에서 Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
에서 Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)"
에 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, String sessionState, String relayState, String& newSamlSession, String& samlpAuthenticationProvider, 부울 isUrlTranslationNeeded, WrappedHttpListenerContext 컨텍스트, 부울 isKmsiRequested)
에 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext context, HttpSamlRequestMessage httpSamlRequest, SecurityTokenElement onBehalfOf, String relyingPartyIdentifier, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired, Boolean isApplicationProxyTokenRequired, String& samlpSessionState, String& samlpAuthenticationProvider) at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInContext, SecurityToken securityToken, SecurityToken deviceSecurityToken)
에서 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext context)
에서 Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
에서 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를 테스트하여 확인합니다.
이 문서가 도움이 되었습니까?