

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

# Connect Customer를 사용한 SAML 문제 해결
<a name="troubleshoot-saml"></a>

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

Okta, PingIdentify, Azure AD 등과 같은 다른 자격 증명 공급자와의 통합 문제를 해결하려면 [고객 SSO 설정 워크숍 연결을](https://catalog.workshops.aws/workshops/33e6d0e7-f927-4531-abb1-f28a86ba0872/en-US) 참조하세요.

## 오류 메시지: 액세스가 거부되었습니다. 계정이 인증되었지만 이 애플리케이션에 온보딩되지 않았습니다.
<a name="troubleshoot-saml-access-denied"></a>

![오류 메시지: 액세스가 거부되었습니다.](http://docs.aws.amazon.com/ko_kr/connect/latest/adminguide/images/saml-troubleshooting-access-denied.png)


### 이것은 무엇을 의미하나요?
<a name="troubleshoot-saml-access-denied-what"></a>

이 오류는 사용자가 SAML을 통해 AWS SAML 로그인 엔드포인트에 성공적으로 인증되었음을 의미합니다. 그러나 Connect Customer 내에서 사용자를 일치시키거나 찾을 수 없습니다. 이 메시지는 일반적으로 다음 중 하나를 나타냅니다.
+ Connect Customer의 사용자 이름이 자격 증명 공급자가 반환한 `RoleSessionName` SAML 응답에 지정된 SAML 속성과 일치하지 않습니다.
+ Connect Customer에 사용자가 없습니다.
+ 사용자에게는 SSO를 통해 두 개의 개별 프로필이 할당됩니다.

### 해결 방법
<a name="troubleshoot-saml-access-denied-resolution"></a>

다음 단계를 사용하여 자격 증명 공급자가 반환한 SAML 응답에 지정된 RoleSessionName SAML 속성을 확인한 다음 Connect Customer에서 로그인 이름을 검색하고 비교합니다.

1. 엔드 투 엔드 로그인 프로세스를 위해 HAR 캡처 (**H**TTP **AR**차이브) 를 수행합니다. 이것은 브라우저 측에서 네트워크 요청을 캡처합니다. HAR 파일을 원하는 파일 이름 (예: **saml.har**) 으로 저장합니다.

   지침은 [AWS 지원 사례에 대해 브라우저에서 HAR 파일을 생성하려면 어떻게 해야 합니까?를](https://aws.amazon.com/premiumsupport/knowledge-center/support-case-browser-har-file/) 참조하세요.

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

   `$ grep -o "SAMLResponse=.*&" azuresaml.har | sed -E 's/SAMLResponse=(.*)&/\1/' > samlresponse.txt`
   + 이 HAR 파일에서 SAML 응답을 검색하고 **samlresponse.txt** 파일에 저장합니다.
   + 응답은 URL로 인코딩되고 내용은 Base64로 인코딩됩니다.

1. 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 응답을 일반 텍스트 형식으로 출력합니다.

1. 필요한 속성에 대한 디코딩 된 응답을 확인하십시오. 예를 들어 다음 이미지는 확인 방법을 보여 줍니다 `RoleSessionName`.  
![grep 명령은 rolesessionname을 확인합니다.](http://docs.aws.amazon.com/ko_kr/connect/latest/adminguide/images/saml-troubleshooting-rolesessionname.png)

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

   $ AWS 연결 목록 사용자 - 인스턴스 ID [인스턴스 ID] \| 그렙 $ 사용자 이름
   + 최종 grep이 결과를 반환하지 않으면 사용자가 Connect Customer 인스턴스에 없거나 다른 대/소문자/자본화로 생성되었음을 의미합니다.
   + Connect Customer 인스턴스에 사용자가 많은 경우 ListUsers API 호출의 응답이 페이지 매김될 수 있습니다. API에 의해 `NextToken` 반환 된 를 사용하여 나머지 사용자를 가져옵니다. 자세한 내용은 [ListUsers을](https://docs.aws.amazon.com/connect/latest/APIReference/API_ListUsers.html)참조하십시오.

### SAML 응답 예
<a name="example-samlresponse"></a>

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

![SAML 응답 예.](http://docs.aws.amazon.com/ko_kr/connect/latest/adminguide/images/saml-troubleshooting-saml-response.png)


## 오류 메시지: 액세스가 거부되었습니다. AWS 계정 관리자에게 문의하여 도움을 받으세요.
<a name="troubleshoot-saml-contact-admin"></a>

![오류 메시지: 액세스가 거부되었습니다.](http://docs.aws.amazon.com/ko_kr/connect/latest/adminguide/images/saml-troubleshooting-access-denied-admin.png)


### 이것은 무엇을 의미하나요?
<a name="troubleshoot-saml-bad-request-what"></a>

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

### 해결 방법
<a name="troubleshoot-saml-bad-request-resolution"></a>

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Statement1",
               "Effect": "Allow",
               "Action": "connect:GetFederationToken",
               "Resource": [
                   "arn:aws:connect:ap-southeast-2:{{111122223333}}:instance/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/user/${aws:userid}"
               ]
           }
       ]
   }
   ```

------

1. IAM 콘솔을 사용하여 정책을 연결합니다. 또는 첨부 역할 정책 API를 사용합니다. 예를 들면 다음과 같습니다.

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

## 오류 메시지: 세션 만료됨
<a name="saml-sessionexpired-message"></a>

로그인하는 동안 **세션 만료됨** 메시지가 표시되는 경우 세션 토큰을 새로 고치기만 하면 문제가 해결될 수 있습니다. ID 제공업체로 이동하여 로그인합니다. 고객 연결 페이지를 새로 고칩니다. 이 메시지가 계속 표시되면 IT 팀에 문의하세요.