

# IAM과의 SAML 페더레이션 문제 해결
<a name="troubleshoot_saml"></a>

이 문서의 정보를 사용하여 AWS Identity and Access Management 연동 및 SAML 2.0 작업 시 발생할 수 있는 문제를 진단하고 해결할 수 있습니다.

**Topics**
+ [오류: 요청에 잘못된 SAML 응답이 포함되어 있습니다. 로그아웃하려면 여기를 클릭하십시오.](#troubleshoot_saml_invalid-response)
+ [오류: AuthnResponse에 RoleSessionName 필요(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)](#troubleshoot_saml_missing-rolesessionname)
+ [오류: sts:AssumeRoleWithSAML을 수행할 권한 없음(서비스: AWSSecurityTokenService, 상태 코드: 403, 오류 코드: AccessDenied)](#troubleshoot_saml_missing-role)
+ [오류: AuthnResponse의 RoleSessionName은 [a-zA-Z\_0-9\+=,.@-]{2,64}와 일치해야 함(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)](#troubleshoot_saml_invalid-rolesessionname)
+ [오류: 소스 자격 증명은 [a\~zA\~Z\_0\~9\+=,.@-]{2,64}와 일치해야 하며 `"aws:"`로 시작할 수 없음(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)](#troubleshoot_saml_invalid-sourceidentity)
+ [오류: 유효하지 않은 응답 서명(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)](#troubleshoot_saml_invalid-metadata)
+ [오류: 잘못된 프라이빗 키입니다.](#troubleshoot_saml_invalid-private-key)
+ [오류: 프라이빗 키를 제거하지 못했습니다.](#troubleshoot_saml_invalid-remove-key)
+ [오류: 키 ID가 프라이빗 키와 일치하지 않아 프라이빗 키를 제거하지 못했습니다.](#troubleshoot_saml_invalid-remove-key-mismatch)
+ [오류: 역할을 수임하지 못함: 지정한 공급자에 발행자가 없음(서비스: AWSOpenIdDiscoveryService, 상태 코드: 400, 오류 코드: AuthSamlInvalidSamlResponseException)](#troubleshoot_saml_issuer-mismatch)
+ [오류: 메타데이터를 구문 분석할 수 없습니다.](#troubleshoot_saml_issuer-metadata)
+ [오류: 자격 증명 공급자를 업데이트할 수 없습니다. 메타데이터 또는 암호화 어설션에 대한 업데이트가 정의되지 않았습니다.](#troubleshoot_saml_unable-to-update)
+ [오류: 프라이빗 키가 제공되지 않아 어설션 암호화 모드를 필수로 설정할 수 없습니다.](#troubleshoot_saml_issuer-private-key-required)
+ [오류: 동일한 요청에서 프라이빗 키를 추가 및 제거할 수 없습니다 두 파라미터 중 하나의 값만 설정하세요.](#troubleshoot_saml_add-remove-keys)
+ [오류: 지정된 공급자가 존재하지 않습니다.](#troubleshoot_saml_provider-doesnotexist)
+ [오류: 요청된 DurationSeconds가 이 역할에 대해 설정된 MaxSessionDuration을 초과합니다.](#troubleshoot_saml_duration-exceeds)
+ [오류: 프라이빗 키 한도인 2에 도달했습니다.](#troubleshoot_saml_private-key-exceeds)
+ [오류: 응답에 필수 대상이 포함되어 있지 않습니다.](#troubleshoot_saml_required-audience)

## 오류: 요청에 잘못된 SAML 응답이 포함되어 있습니다. 로그아웃하려면 여기를 클릭하십시오.
<a name="troubleshoot_saml_invalid-response"></a>

이 오류는 자격 증명 공급자의 SAML 응답에 `Name`이 `https://aws.amazon.com/SAML/Attributes/Role`로 설정된 속성이 포함되지 않은 경우 발생할 수 있습니다. 이 속성은 하나 이상의 `AttributeValue` 요소를 포함해야 하며, 각 요소에 다음과 같은 문자열 쌍이 쉼표로 구분되어 있어야 합니다.
+ 사용자를 매핑할 수 있는 역할의 ARN
+ SAML 공급자의 ARN

이 오류는 자격 증명 공급자가 전송한 SAML 속성 값에 선행이나 후행 공백이 있거나 SAML 속성 값에 기타 잘못된 문자가 있는 경우에도 발생할 수 있습니다. 올바른 SAML 속성 값에 대한 자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요.

자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요. 브라우저에서 SAML 응답을 보려면 [브라우저에서 SAML 응답 보기](troubleshoot_saml_view-saml-response.md)의 단계를 따르십시오.

## 오류: AuthnResponse에 RoleSessionName 필요(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)
<a name="troubleshoot_saml_missing-rolesessionname"></a>

이 오류는 자격 증명 공급자의 SAML 응답에 `Name`이 `https://aws.amazon.com/SAML/Attributes/RoleSessionName`로 설정된 속성이 포함되지 않은 경우 발생할 수 있습니다. 속성 값은 사용자의 식별자이며, 일반적으로 사용자 ID 또는 이메일 주소입니다.

자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요. 브라우저에서 SAML 응답을 보려면 [브라우저에서 SAML 응답 보기](troubleshoot_saml_view-saml-response.md)의 단계를 따르십시오.

## 오류: sts:AssumeRoleWithSAML을 수행할 권한 없음(서비스: AWSSecurityTokenService, 상태 코드: 403, 오류 코드: AccessDenied)
<a name="troubleshoot_saml_missing-role"></a>

이 오류는 SAML 응답에 지정된 IAM 역할이 잘못 기재되었거나 존재하지 않는 경우 발생할 수 있습니다. 역할 이름은 대소문자를 구분하므로 역할 이름을 정확하게 사용하십시오. SAML 서비스 공급자 구성의 역할 이름을 올바르게 수정하십시오.

역할 신뢰 정책에 `sts:AssumeRoleWithSAML` 작업이 포함된 경우에만 액세스가 허용됩니다. [`PrincipalTag` 속성](id_roles_providers_create_saml_assertions.md#saml_role-session-tags)을 사용하도록 SAML 어설션이 구성된 경우 신뢰 정책에도 `sts:TagSession` 작업이 포함되어야 합니다. 세션 태그에 대한 자세한 내용은 [AWS STS에서 세션 태그 전달](id_session-tags.md) 섹션을 참조하세요.

이 오류는 사용자의 역할 신뢰 정책에 `sts:SetSourceIdentity` 권한이 없는 경우 발생할 수 있습니다. [`SourceIdentity`](id_roles_providers_create_saml_assertions.md#saml_sourceidentity) 속성을 사용하도록 SAML 어설션이 구성된 경우 신뢰 정책에도 `sts:SetSourceIdentity` 작업이 포함되어야 합니다. 소스 자격 증명에 대한 자세한 내용은 [위임된 역할로 수행한 작업 모니터링 및 제어](id_credentials_temp_control-access_monitor.md) 섹션을 참조하세요.

이 오류는 페더레이션 보안 주체가 역할을 수임할 권한이 없는 경우에도 발생할 수 있습니다. 역할에는 IAM SAML 자격 증명 공급자의 ARN을 `Principal`로 지정하는 신뢰 정책이 있어야 합니다. 또한 역할에는 어떤 사용자가 해당 역할을 수임할 수 있는지 제어하는 조건이 포함됩니다. 사용자는 조건의 요구 사항을 준수해야 합니다.

이 오류는 SAML 응답에 `Subject`가 포함된 `NameID`가 없는 경우에도 발생할 수 있습니다.

자세한 내용은 [SAML 2.0 페더레이션 위탁자의 AWS Management Console 액세스 활성화](id_roles_providers_enable-console-saml.md) 및 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md)(을)를 참조하세요. 브라우저에서 SAML 응답을 보려면 [브라우저에서 SAML 응답 보기](troubleshoot_saml_view-saml-response.md)의 단계를 따르십시오.

## 오류: AuthnResponse의 RoleSessionName은 [a-zA-Z\_0-9\+=,.@-]{2,64}와 일치해야 함(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)
<a name="troubleshoot_saml_invalid-rolesessionname"></a>

이 오류는 `RoleSessionName` 속성 값이 너무 길거나 유효하지 않은 문자가 포함된 경우 발생할 수 있습니다. 유효한 최대 길이는 64자입니다.

자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요. 브라우저에서 SAML 응답을 보려면 [브라우저에서 SAML 응답 보기](troubleshoot_saml_view-saml-response.md)의 단계를 따르십시오.

## 오류: 소스 자격 증명은 [a\~zA\~Z\_0\~9\+=,.@-]{2,64}와 일치해야 하며 `"aws:"`로 시작할 수 없음(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)
<a name="troubleshoot_saml_invalid-sourceidentity"></a>

이 오류는 `sourceIdentity` 속성 값이 너무 길거나 유효하지 않은 문자가 포함된 경우 발생할 수 있습니다. 유효한 최대 길이는 64자입니다. 소스 자격 증명에 대한 자세한 내용은 [위임된 역할로 수행한 작업 모니터링 및 제어](id_credentials_temp_control-access_monitor.md) 섹션을 참조하세요.

SAML 어설션을 생성하는 방법에 대한 자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요. 브라우저에서 SAML 응답을 보려면 [브라우저에서 SAML 응답 보기](troubleshoot_saml_view-saml-response.md)의 단계를 따르십시오.

## 오류: 유효하지 않은 응답 서명(서비스: AWSSecurityTokenService, 상태 코드: 400, 오류 코드: InvalidIdentityToken)
<a name="troubleshoot_saml_invalid-metadata"></a>

이 오류는 자격 증명 공급자의 연동 메타데이터가 IAM 자격 증명 공급자의 메타데이터와 일치하지 않는 경우 발생할 수 있습니다. 예를 들어, 만료된 인증서를 업데이트하기 위해 자격 증명 서비스 공급자의 메타데이터 파일이 변경되었을 수 있습니다. 이 경우, 자격 증명 서비스 공급자의 업데이트된 SAML 메타데이터 파일을 다운로드합니다. 그런 다음 `aws iam update-saml-provider` 교차 플랫폼 CLI 명령 또는 `Update-IAMSAMLProvider` PowerShell cmdlet을 통해 IAM에서 정의한 AWS 자격 증명 공급자 엔터티에 이를 업데이트합니다.

## 오류: 잘못된 프라이빗 키입니다.
<a name="troubleshoot_saml_invalid-private-key"></a>

이 오류는 프라이빗 파일이 적절한 형식이 아닌 경우에 발생할 수 있습니다. 이 오류는 프라이빗 키가 잘못된 이유에 대한 추가 세부 정보를 제공할 수 있습니다.
+ 키가 암호화되었습니다.
+ 키 형식을 인식할 수 없습니다. 프라이빗 키 파일은 .pem 파일이어야 합니다.

AWS Management Console에서 [IAM에서 SAML ID 공급자 생성](id_roles_providers_create_saml.md)할 때 자격 증명 공급자로부터 프라이빗 키를 다운로드하여 IAM에 제공하여 암호화를 활성화해야 합니다. 프라이빗 키는 AES-GCM 또는 AES-CBC 암호화 알고리즘을 사용하여 SAML 어설션을 복호화하는 .pem 파일이어야 합니다.

## 오류: 프라이빗 키를 제거하지 못했습니다.
<a name="troubleshoot_saml_invalid-remove-key"></a>

이 오류는 SAML 암호화가 필수로 설정되어 있고 요청으로 IAM SAML 공급자의 유일한 프라이빗 복호화 키가 제거되는 경우 발생할 수 있습니다. 프라이빗 키 교체에 대한 자세한 내용은 [SAML 암호화 키 관리](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption) 섹션을 참조하세요.

## 오류: 키 ID가 프라이빗 키와 일치하지 않아 프라이빗 키를 제거하지 못했습니다.
<a name="troubleshoot_saml_invalid-remove-key-mismatch"></a>

이 오류는 프라이빗 키의 `keyId` 값이 자격 증명 공급자의 프라이빗 키 파일 키 ID 2개 중 어느 것과도 일치하지 않는 경우 발생할 수 있습니다.

[update-saml-provider](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-saml-provider.html) 또는 [UpdateSAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html) API 작업을 사용하여 SAML 암호화 프라이빗 키를 제거하는 경우 `RemovePrivateKey`의 값은 자격 증명 공급자에 연결된 프라이빗 키의 유효한 키 ID여야 합니다.

## 오류: 역할을 수임하지 못함: 지정한 공급자에 발행자가 없음(서비스: AWSOpenIdDiscoveryService, 상태 코드: 400, 오류 코드: AuthSamlInvalidSamlResponseException)
<a name="troubleshoot_saml_issuer-mismatch"></a>

이 오류는 업로드한 연동 메타데이터 파일에 선언되어 있는 발행자와 SAML 응답의 발행자가 일치하지 않는 경우 발생할 수 있습니다. 메타데이터 파일은 IAM에서 자격 증명 공급자를 생성할 때 AWS에 업로드되었습니다.

## 오류: 메타데이터를 구문 분석할 수 없습니다.
<a name="troubleshoot_saml_issuer-metadata"></a>

이 오류는 메타데이터 파일이 적절한 형식이 아닌 경우에 발생할 수 있습니다.

AWS Management Console에서 [SAML 자격 증명 공급자를 생성하거나 관리할 때](id_roles_providers_create_saml.md#idp-manage-identityprovider-console), 사용자의 자격 증명 공급자에서 SAML 메타데이터 문서를 가져와야 합니다.

이 메타데이터 파일에는 발급자 이름, 만료 정보 및 IdP에서 가져온 SAML 인증 응답(어설션)을 확인하는 데 사용할 수 있는 키가 포함되어 있습니다. 메타데이터 파일은 바이트 순서 표시(BOM)가 없는 UTF-8 형식으로 인코딩되어야 합니다. BOM을 제거하려면 Notepad\+\+와 같은 텍스트 편집 도구를 사용해 파일을 UTF-8로 인코딩합니다.

SAML 메타데이터 문서의 일부로 포함된 X.509 인증서는 1,024비트 이상의 키 크기를 사용해야 합니다. 또한 X.509 인증서에는 반복되는 확장이 없어야 합니다. 확장을 사용할 수 있지만 확장은 인증서에 한 번만 나타날 수 있습니다. X.509 인증서가 두 조건 중 하나를 충족하지 못하면 IdP 생성에 실패하고 'Unable to parse metadata' 오류를 반환합니다.

[SAML V2.0 Metadata Interoperability Profile Version 1.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html)의 정의에 따라, IAM은 SAML 메타데이터 문서의 X.509 인증서 만료를 평가하거나 이에 대해 조치를 취하지 않습니다. 만료된 X.509 인증서가 우려되는 경우 조직의 거버넌스 및 보안 정책에 따라 인증서 만료 날짜를 모니터링하고 인증서를 교체하는 것이 좋습니다.

## 오류: 자격 증명 공급자를 업데이트할 수 없습니다. 메타데이터 또는 암호화 어설션에 대한 업데이트가 정의되지 않았습니다.
<a name="troubleshoot_saml_unable-to-update"></a>

이 오류는 `update-saml-provider` CLI 또는 `UpdateSAMLProvider` API 작업을 사용하지만 요청 파라미터에 업데이트 값을 제공하지 않는 경우 발생할 수 있습니다. IAM SAML 공급자 업데이트에 대한 자세한 내용은 [IAM에서 SAML ID 공급자 생성](id_roles_providers_create_saml.md) 섹션을 참조하세요.

## 오류: 프라이빗 키가 제공되지 않아 어설션 암호화 모드를 필수로 설정할 수 없습니다.
<a name="troubleshoot_saml_issuer-private-key-required"></a>

이 오류는 이전에 프라이빗 복호화 키를 업로드한 적이 없고, 요청에 프라이빗 키를 포함하지 않고 SAML 암호화를 필수로 설정하려고 하는 경우 발생할 수 있습니다.

암호화된 SAML 어설션이 필요한 `create-saml-provider` CLI, `CreateSAMLProvider` API, `update-saml-provider` CLI 또는 `UpdateSAMLProvider` API 작업을 사용할 때는 IAM SAML 공급자의 프라이빗 키가 정의되어 있어야 합니다.

## 오류: 동일한 요청에서 프라이빗 키를 추가 및 제거할 수 없습니다 두 파라미터 중 하나의 값만 설정하세요.
<a name="troubleshoot_saml_add-remove-keys"></a>

이 오류는 동일한 요청에 프라이빗 키 값 추가와 제거가 모두 포함된 경우에 발생할 수 있습니다.

[update-saml-provider](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-saml-provider.html) 또는 [UpdateSAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html) API 작업을 사용하여 SAML 암호화 프라이빗 키 파일을 교체하는 경우, 요청에서 프라이빗 키 추가나 제거만 할 수 있습니다. 프라이빗 키 제거와 동시에 프라이빗 키 파일을 추가하면 작업이 실패합니다. 프라이빗 키 교체에 대한 자세한 내용은 [SAML 암호화 키 관리](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption) 섹션을 참조하세요.

## 오류: 지정된 공급자가 존재하지 않습니다.
<a name="troubleshoot_saml_provider-doesnotexist"></a>

이 오류는 SAML 어설션의 공급자 이름이 IAM의 공급자 이름과 일치하지 않는 경우 발생할 수 있습니다. 공급자 이름 보기에 대한 자세한 내용은 [IAM에서 SAML ID 공급자 생성](id_roles_providers_create_saml.md) 단원을 참조하십시오.

## 오류: 요청된 DurationSeconds가 이 역할에 대해 설정된 MaxSessionDuration을 초과합니다.
<a name="troubleshoot_saml_duration-exceeds"></a>

이 오류는 AWS CLI 또는 API에서 역할을 위임한 경우 발생할 수 있습니다.

[assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) CLI 또는 [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API 작업을 사용하여 역할을 위임하는 경우 `DurationSeconds` 파라미터의 값을 지정할 수 있습니다. 값을 900초(15분)에서 해당 역할에 대한 최대 세션 지속 시간 설정까지 지정할 수 있습니다. 이 설정보다 높게 값을 지정하면 작업에 실패합니다. 예를 들어 세션 기간으로 12시간을 지정했는데 관리자가 최대 세션 기간으로 6시간을 설정하면 작업에 실패합니다. 역할에 대한 최댓값을 확인하는 방법을 알아보려면 [역할의 최대 세션 기간 업데이트](id_roles_update-role-settings.md#id_roles_update-session-duration) 섹션을 참조하세요.

## 오류: 프라이빗 키 한도인 2에 도달했습니다.
<a name="troubleshoot_saml_private-key-exceeds"></a>

이 오류는 자격 증명 공급자에 프라이빗 키를 추가하려고 하는 경우 발생할 수 있습니다.

각 자격 증명 공급자마다 최대 2개의 프라이빗 키를 저장할 수 있습니다. [update-saml-provider](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-saml-provider.html) 또는 [UpdateSAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html) API 작업을 사용하여 세 번째 프라이빗 키를 추가하면 작업이 실패합니다.

새 프라이빗 키를 추가하기 전에 만료된 프라이빗 키를 제거하세요. 프라이빗 키 교체에 대한 자세한 내용은 [SAML 암호화 키 관리](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption) 섹션을 참조하세요.

## 오류: 응답에 필수 대상이 포함되어 있지 않습니다.
<a name="troubleshoot_saml_required-audience"></a>

이 오류는 SAML 구성에서 대상 URL과 자격 증명 공급자가 일치하지 않는 경우 발생할 수 있습니다. ID 제공업체(IdP) 신뢰 당사자 식별자가 SAML 구성에 제공된 대상 URL(엔터티 ID)과 정확히 일치하는지 확인하세요.