Okta 및 AWS IAM 페더레이션에 대한 “잘못된 SAML 응답” 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 5월 23일

Okta를 사용하여 AWS에 로그인하면 다음과 유사한 잘못된 SAML 오류가 발생합니다.

“요청에 잘못된 SAML 응답이 포함되었습니다. 로그아웃하려면 여기를 클릭하십시오.”

이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

Okta에서 AWS 계정 페더레이션을 사용하는 경우 AWS에 로그인할 때 잘못된 SAML 오류가 발생할 수 있습니다. SAML 응답에서 역할 속성에 대해 누락되거나 잘못된 정보를 제공하는 경우 이 문제가 발생할 수 있습니다. 이 속성의 예상 값은 다음과 같이 AWS Identity and Access Management(IAM) 역할과 SAML 공급자가 쉼표로 구분된 하나 이상의 쌍입니다.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_1,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME/AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_2,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_3,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
</Attribute>

브라우저에서 SAML 응답을 확인하려면 문제 해결을 위해 브라우저에서 SAML 응답을 보는 방법의 단계를 따르세요.

해결 방법

Okta에서 그룹 매핑 사용 설정을 사용하는 경우 여러 AWS 계정으로 Okta에 연결하기 단계를 따릅니다. 그렇지 않은 경우 단일 AWS 계정으로 Okta에 연결하기로 이동합니다. 

여러 AWS 계정으로 Okta에 연결

여러 AWS 계정으로 Okta에 연결하는 경우 Okta는 그룹 기반 역할 매핑을 사용합니다. 즉, Okta는 그룹 이름을 사용하여 SSO의 AWS 계정 ID 및 IAM 역할 이름을 식별합니다.

참고: 정보를 정확하게 캡처하려면 Okta에서 그룹 필터 및 역할 값 패턴을 올바르게 입력해야 합니다.

1.    Okta 관리 콘솔에 로그인합니다.

2.    애플리케이션을 선택한 다음, 애플리케이션을 다시 선택합니다.

3.    Sign On을 선택한 다음 편집을 선택합니다.

4.    그룹 필터는 Okta 그룹 이름에 대한 AWS 계정 ID 및 IAM 역할 이름과 같은 정보를 캡처하는 사용자 지정 Regex 식입니다. 자세한 내용은 Okta의 설정 문서를 참조하세요.

설정 안내서는 다음 예시를 제공합니다.

Group name: "aws#[account alias]#[role name]#[account #]" 
Group Filter: "^aws\#\S+\#(?{{role}}[\w\-]+)\#(?{{accountid}}\d+)$"

그룹 이름을 사용자 정의하려는 경우 이 예시를 확장할 수 있습니다. 다음 예의 그룹 이름 및 그룹 필터를 참조하세요.

Group Name: [account alias]|[role name]|[account #] 
Group Filter: ^\S+\|(?{{role}}[a-zA-Z0-9+=.@\-_]+)\|(?{{accountid}}\d+)$
Group Name: aws_[account #]_[role name] 
Group Filter: ^aws\_(?{{accountid}}\d+)\_(?{{role}}[a-zA-Z0-9+=.@\-_]+)$

참고:

  • IAM 역할 이름에는 영숫자 및 '+=,.@-_' 문자가 허용됩니다. 그룹 필터로 인해 오류가 발생하는 경우 역할 이름에 포함되지 않은 구분 기호(예: '#' 또는 '|')를 사용하는 것이 좋습니다.
  • IAM 페더레이션을 사용하여 로그인하려는 경우 IAM 역할 이름에 ','이 포함되면 안 됩니다. 이는 아래에 표시된 역할 값 패턴에서 쉼표를 사용하여 SAML 공급자와 역할 이름을 구분하기 때문입니다. 이름에 쉼표 없이 IAM 페더레이션에 사용할 새 IAM 역할을 생성합니다.

5.    역할 값 패턴에는 IAM 역할 및 SAML 공급자의 ARN을 쉼표로 구분하여 포함해야 합니다. 이 예시의 SAML 공급자 이름을 Okta 인스턴스의 공급자 이름으로 바꿉니다. 이 정보는 AWS IAM 콘솔의 자격 증명 공급자에서 확인할 수 있습니다.

arn:aws:iam::${accountid}:saml-provider/[SAML Provider Name],arn:aws:iam::${accountid}:role/${role}

참고: SAML 공급자 이름은 모든 AWS 계정에서 동일해야 합니다.

6.    Choisissez Enregistrer.

7.    Okta에서 AWS로 사용자 로그인을 테스트하여 오류가 해결되었는지 확인합니다.

단일 AWS 계정으로 Okta에 연결

단일 계정 설정의 경우 Okta는 역할 값 패턴을 자동으로 설정합니다. 단일 계정 통합에 대해 “요청에 잘못된 SAML 응답이 포함되었습니다. 로그아웃하려면 여기를 클릭하십시오.” 오류가 발생하면 Okta에 지원 사례를 제기하여 문제를 조사하세요.