내 SAML 인증 요청이 실패한 이유는 무엇입니까?
SAML 인증에 문제가 발생했습니다.
내 SAML 메시지 서명을 유효성 검증할 수 없는 이유는 무엇입니까?
애플리케이션을 테스트할 때 다음과 같은 오류 메시지가 수신됩니다.
The SAML message signature could not be validated
이 오류는 SAML에서 보낸 서명을 App ID에서 확인할 수 없는 경우 발생합니다.
이 문제를 해결하려면 구성에서 인바운드 서명이 없음으로 설정되었는지 확인하십시오.
내 인증 응답에서 RelayState
매개변수가 누락된 이유는 무엇입니까?
RelayState
매개변수가 인증 응답에서 누락되었습니다.
App ID에서 RelayState
라는 오파크 매개변수를 인증 요청의 일부로 전송합니다. 응답에 이 매개변수가 표시되지 않는다면 ID 제공자가 이 매개변수를 올바르게 리턴하도록 구성되지 않았을 수 있습니다. RelayState
의 형식은 다음과 같습니다.
https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=request&RelayState=token
RelayState
매개변수를 어떠한 방식으로도 수정하지 않고 App ID에 리턴하도록 SAML 제공자가 구성되었는지 확인하십시오.
내 이름 ID에 대한 오류를 수신한 이유는 무엇입니까?
인증 요청을 전송할 때 NameID
관련 오류가 수신됩니다.
App ID는 서비스 제공자로서 사용자를 서비스 및 ID 제공자로 식별하는 방법을 정의합니다. App ID를 사용할 경우 다음 예에 표시된 것과 같이 NameID
필드의 NameID
인증 요청에서 사용자가 식별됩니다.
<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
이 문제를 해결하려면 ID 제공자 NameID
가 이메일 주소로 형식화되었는지 확인하십시오. ID 제공자 레지스트리의 모든 사용자가 올바른 이메일 주소 형식을 사용하는지 확인하십시오. 그런 다음 레지스트리에 있는 사용자의 이메일이 여러 개 있는 경우에도 항상 올바른 이메일이 리턴되도록 NameID
필드가 정의되었는지 확인하십시오.
응답 복호화 실패
인증 요청에 대한 응답으로 다음 오류 메시지 중 하나가 수신됩니다.
오류 메시지 1:
Unexpectedly received an encrypted assertion. Please enable response encryption in your App ID SAML configuration.
오류 메시지 2:
Could not decrypt SAML assertion. Ensure your SAML provider is configured with the App ID encryption.
ID 제공자가 암호화를 사용하도록 구성된 경우 SAML 인증 요청(AuthnRequest)에 서명하도록 App ID를 구성해야 합니다. 그런 다음 해당 구성을 예상하도록 ID 제공자를 구성해야 합니다. 이러한 오류는 다음 이유 중 하나로 발생할 수 있습니다.
- ID 제공자 SAML 응답을 암호화하도록 App ID가 구성되어 있지 않습니다.
- App ID가 어설션을 올바르게 복호화할 수 없습니다.
오류 메시지 1을 수신할 경우, SAML 구성이 암호화된 응답을 예상하도록 설정되어 있는지 확인하십시오. 기본적으로 App ID는 응답이 암호화될 것으로 예상하지 않습니다. 암호화를 구성하려면 encryptResponse
API**를 사용하여 ** 매개변수를 true로
설정하십시오.
오류 메시지 2를 수신할 경우, 인증서가 올바른지 확인하십시오. 서명 인증서는 App ID 메타데이터 XML 파일에서 얻을 수 있습니다. <KeyDescriptor use="signing">
과(와) 함께 키를 사용해야 합니다. ``를 서명 알고리즘으로 사용하도록 ID 제공자가 구성되었는지 확인하십시오.
Responder 오류 코드
인증 요청을 전송할 때 다음과 같은 일반 오류 메시지가 수신됩니다.
urn:oasis:names:tc:SAML:2.0:status:Responder
App ID에서 초기 인증 요청을 전송하지만, ID 제공자가 사용자 인증을 수행하고 응답을 리턴해야 합니다. 여러 가지 이유로 인해 ID 제공자가 이 오류 메시지를 생성해야 할 수도 있습니다.
ID 제공자가 다음과 같은 상황일 경우 메시지가 표시될 수 있습니다.
- 사용자 이름을 찾지 못하거나 확인할 수 없습니다.
- 인증 요청(
NameID
)에 정의된AuthnRequest
형식을 지원하지 않습니다. - 인증 컨텍스트를 지원하지 않습니다.
- 인증 요청에 서명해야 하거나 서명에 특정 알고리즘을 사용합니다.
이 문제를 해결하려면 구성 및 사용자 이름을 확인하십시오. 올바른 인증 컨텍스트 및 변수가 정의되어 있는지 확인하십시오. 특정 방법으로 요청에 서명해야 하는지 확인하십시오.
지원되지 않는 인증 요청
지원되지 않는 인증 요청에 대한 메시지가 수신됩니다.
App ID에서 인증 요청을 생성할 때 인증 컨텍스트를 사용하여 인증 및 SAML 어설션의 품질을 요청할 수 있습니다.
이 문제를 해결하기 위해 인증 컨텍스트를 업데이트할 수 있습니다. 기본적으로 App ID에서는 인증 클래스 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
및 exact
비교를 사용합니다. 사용자는 API를 사용하여 유스 케이스에 맞도록 컨텍스트 매개변수를 업데이트할 수 있습니다.
SAML 요청 서명 실패
인증 요청을 확인할 수 없다는 오류가 수신됩니다.
SAML 인증 요청(AuthNRequest
)에 서명하도록 App ID를 구성할 수 있지만, 해당 구성을 예상하도록 ID 제공자를 구성해야 합니다.
문제를 해결하려면 다음을 수행하십시오.
-
signRequest
set SAML IdP APItrue
를 통해 매개변수를 로 설정하여 인증 요청에 서명하도록 IBM Cloud가 구성되어 있는지 확인하십시오. 요청 URL을 검토하여 인증 요청에 서명되었는지 확인할 수 있습니다. 서명은 조회 매개변수로 포함됩니다. 예를 들면 다음과 같습니다.https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=request&SigAlg=value&Signature=value&RelayState=token
-
ID 제공자가 올바른 인증서를 사용하여 구성되었는지 확인하십시오. 서명 인증서를 얻으려면 IBM Cloud 대시보드에서 다운로드한 IBM Cloud 메타데이터 XML 파일을 확인하십시오.
<KeyDescriptor use="signing">
과(와) 함께 키를 사용해야 합니다. -
``를 서명 알고리즘으로 사용하도록 ID 제공자가 구성되었는지 확인하십시오.
인증 방법이 일치하지 않는 이유는 무엇인가요?
제공된 인증 방법이 요청된 인증 방법과 일치하지 않는다는 메시지가 표시됩니다.
예를 들어, 다음과 같습니다.
AADSTS75011: Authentication method ‘X509, Multifactor, X509Device’ by which the user authenticated with the service doesn't match requested authentication method 'Password, ProtectedTransport'.
App ID 에서 인증 요청을 생성할 때 인증 컨텍스트는 인증의 품질과 SAML 어설션을 요청하는 데 사용됩니다.
기본적으로 App ID 는 다른 인증 방법을 사용하려고 할 때 SAML 이해에 설명된 대로 authnContext
에서 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
과 exact
비교를 사용합니다. 제공된
예제에서는 X509, Multifactor
인증 방법이 사용됩니다.
이 문제를 해결하려면 SAML authnContext
에서 class
및 comparison
값 모두에 대한 인증 컨텍스트 설정을 업데이트하면 됩니다. 사용 사례에 맞게 컨텍스트 매개변수를 업데이트하려면 API를 사용하면 됩니다.
또는 다음 예시와 같이 SAML 구성에서 authnContext
을 공백으로 설정할 수도 있습니다.
"authnContext": { }