Amazon Connect 커넥트를 사용하여 SAML 문제 해결 - Amazon Connect

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Connect 커넥트를 사용하여 SAML 문제 해결

이 문서에서는 Amazon Connect Connect에서 SAML을 사용할 때 발생하는 가장 일반적인 문제 중 일부를 해결하고 해결하는 방법에 대해 설명합니다.

오류 메시지: 액세스가 거부되었습니다. 계정이 인증되었지만 이 애플리케이션에 온보딩되지 않았습니다.

이것을 무엇을 의미하나요?

이 오류는 사용자가 SAML을 통해AWSSAML 로그인 엔드포인트. 그러나 사용자는 Amazon Connect Connect에서 일치/찾을 수 없습니다. 이 메시지는 일반적으로 다음 중 하나를 나타냅니다.

  • Amazon Connect Connect의 사용자 이름이RoleSessionNameID 제공자가 반환한 SAML 응답에 지정된 SAML 속성입니다.

  • 사용자가 Amazon Connect Connect에 존재하지 않습니다.

  • 사용자는 SSO를 사용하여 두 개의 개별 프로파일이 할당되어 있습니다.

해결

다음 단계에 따라 RoleSessionName ID 제공자가 반환한 SAML 응답에 지정된 SAML 속성을 검색하고 비교합니다.

  1. HAR 캡처 수행 (HTTPAR골파) 에 대한 end-to-end 로그인 프로세스. 이것은 브라우저 측에서 네트워크 요청을 캡처합니다. HAR 파일을 원하는 파일 이름 (예: saml.har) 으로 저장합니다.

    지침은 단원을 참조하십시오.브라우저에서 HAR 파일을 생성하려면 어떻게해야합니까?AWSSupport 사례?

  2. 텍스트 편집기를 사용하여 HAR 파일에서 SAML 응답을 찾습니다. 다음 명령을 실행합니다:

    $ grep -o "SAMLResponse=.*&" azuresaml.har | sed -E 's/SAMLResponse=(.*)&/\1/' > samlresponse.txt

    • 이 HAR 파일에서 SAML 응답을 검색하고 samlresponse.txt 파일에 저장합니다.

    • 응답은 URL로 인코딩되고 내용은 Base64로 인코딩됩니다.

  3. URL 응답을 디코딩 한 다음 타사 도구 또는 간단한 스크립트를 사용하여 Base64 내용을 디코딩합니다. 예:

    $ cat samlresponse.txt | python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read()));" | base64 --decode > samlresponsedecoded.txt

    이 스크립트는 간단한 python 명령을 사용하여 원래 URL 인코딩 형식에서 SAMLResponse를 디코딩합니다. 그런 다음 Base64에서 응답을 디코딩하고 SAML 응답을 일반 텍스트 형식으로 출력합니다.

  4. 필요한 속성에 대한 디코딩 된 응답을 확인하십시오. 예를 들어 다음 이미지는 확인 방법을 보여 줍니다 RoleSessionName.

  5. 이전 단계에서 반환된 사용자 이름이 Amazon Connect 인스턴스에 사용자로 존재하는지 확인합니다.

    $ AWS 연결 목록 사용자 - 인스턴스 ID [인스턴스 ID] | 그렙 $ 사용자 이름

    • 최종 grep이 결과를 반환하지 않으면 사용자가 Amazon Connect 인스턴스에 존재하지 않거나 다른 대/소문자/대문자로 작성되었음을 의미합니다.

    • Amazon Connect 인스턴스에 많은 사용자가 있는 경우 ListUsers API 호출이 페이지 매김되었을 수 있습니다. API에 의해 NextToken 반환 된 를 사용하여 나머지 사용자를 가져옵니다. 자세한 내용은 ListUsers을참조하십시오.

SAML 응답 예

다음은 샘플 SAML 응답의 이미지입니다. 이 경우 ID 공급자 (IdP) 는 Azure AD (활성 디렉터리) 입니다.

오류 메시지: 잘못된 요청. 요청이 유효하지 않아 처리할 수 없습니다.

이것을 무엇을 의미하나요?

이 오류의 가장 일반적인 원인 중 하나는 이전에 다른 ID 제공자를 사용하여 로그인한 Amazon Connect 사용자입니다. 예를 들어, 먼저 다음 속성 이름을 사용하여 로그인했습니다.

그런 다음 동일한 사용자가 다른 Role SAML 속성을 사용하여 로그인을 시도했습니다. 예를 들면 다음과 같습니다.

해결

권장되는 해결책은 Amazon Connect 사용자와 연결된 기존 역할을 재사용하는 것입니다.신뢰 관계 편집새 인증 요구 사항을 충족하기 위해 새 ID 제공자 또는 서비스 주체를 참조합니다. Amazon Connect 사용자를 새 역할에 연결해야 하는 경우 기존 Amazon Connect 인스턴스에서 사용자를 삭제하고 다시 생성해야 해당 사용자의 데이터가 손실됩니다.

Amazon Connect 콘솔에서 이 작업에 대한 자세한 내용은 단원을 참조하십시오.Amazon Connect 커넥트에서 사용자 관리. 또는 다음 명령을 사용하여AWSCLI:

  1. 사용자 ID 가져오기:

    aws connect list-users --instance-id [INSTANCE_ID]

  2. 사용자 계정을 삭제합니다.

    aws connect delete-user --instance-id [INSTANCE_ID] --user-id [USER_ID]

  3. 사용자 계정 만들기:

    aws create-user --username [USER_ID] --phone-config [PHONE_CONFIG] --security-profile-ids [SECURITY_PROFILE_ID] --routing-profile-id [ROUTING_PROFILE_ID] --instance-id [INSTANCE_ID]

다음을 사용하여 이러한 작업을 완료할 수도 있습니다.AWSSDK.

오류 메시지: 액세스가 거부되었습니다.AWS계정 관리자가 도움을 받으십시오.

이것을 무엇을 의미하나요?

사용자가 수임한 역할이 SAML을 통해 성공적으로 인증되었습니다. 그러나 역할에는 를 호출할 수 있는 권한이 없습니다. GetFederationToken Amazon Connect 커넥트용 API. 사용자가 SAML을 사용하여 Amazon Connect 인스턴스에 로그인할 수 있도록 이 호출이 필요합니다.

해결

  1. 오류 메시지에 있는 역할에 connect:GetFederationToken 대한 권한이 있는 정책을 연결합니다. 다음은 샘플 정책입니다.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "Statement1", "Effect": "Allow", "Action": "connect:GetFederationToken", "Resource": [ "arn:aws:connect:ap-southeast-2:xxxxxxxxxxxx:instance/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/user/${aws:userid}" ] } ] }
  2. IAM 콘솔을 사용하여 정책을 연결합니다. 또는 첨부 역할 정책 API를 사용합니다. 예를 들면 다음과 같습니다.

    $ aws iam attach-role-policy —role-name [ASSUMED_ROLE] —policy_arn [POLICY_WITH_GETFEDERATIONTOKEN]