AWS Security Token Service(AWS STS) API 호출 AssumeRoleWithWebIdentity이 다음과 유사한 오류가 발생하여 실패했습니다.
“AssumeRoleWithWebIdentity 호출 중 오류 (InvalidIdentityToken) 가 발생했습니다. 자격 증명 제공자로부터 확인 키를 검색할 수 없습니다.“
간략한 설명
이 오류는 다음과 같은 경우에 발생할 수 있습니다.
- 퍼블릭 인터넷에서 자격 증명 제공자(IdP)의 .well_known URL 및 jwks_uri에 액세스할 수 없습니다.
- 사용자 지정 방화벽이 요청을 차단하고 있습니다.
- AWS STS 엔드포인트에 도달하기 위해 IdP에서 보내는 API 요청에 5초 이상의 지연 시간이 있습니다.
참고: 이 오류는 클라이언트 측에서 발생한 문제이므로 AWS CloudTrail 이벤트 기록에 로그되지 않습니다.
해결 방법
1. 자격 증명 제공자(IdP) 의 .well_known URL 및 jwks_uri에 공개적으로 액세스할 수 있는지 확인합니다. 브라우저, Windows 명령 또는 Linux 명령을 사용하여 확인할 수 있습니다.
다음 중 하나를 수행합니다.
브라우저에서 다음 링크로 이동하여 액세스를 확인합니다.
https://<base_server_url>/.well-known/openid-configuration
https://<base_server_url>/.well-known/jwks.json
또는
다음 명령을 실행합니다.
Windows
wget https://<base_server_url>/.well-known/openid-configuration
wget https://<base_server_url>/.well-known/jwks.json
Linux
curl https://<base_server_url>/.well-known/openid-configuration
curl https://<base_server_url>/.well-known/jwks.json
참고: 요청 응답에서 “200" 상태 코드를 확인하여 링크에 액세스할 수 있는지 확인합니다.
2. IdP의 .well_known URL 및 jwks_uri에 액세스할 수 없는 경우 방화벽 설정을 확인하여 도메인이 거부 목록에 없는지 확인합니다.
방화벽의 현재 구성에 따라 도메인을 허용 목록에 추가해야 할 수 있습니다.
방화벽 설정에 액세스할 수 없는 경우 다른 네트워크의 장치(예: 전화)에서 브라우저를 사용하십시오. 1단계의 지침에 따라 브라우저에서 액세스를 확인합니다. 웹 요청이 성공했다는 것은 방화벽에 의해 요청이 차단되고 있음을 의미합니다.
AssumeRoleWithWebIdentity API 호출을 수행하는 서버가 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스인 경우 구성 설정이 올바른지 확인합니다. 자세한 지침은 EC2 인스턴스에서 호스팅되는 웹 사이트에 연결할 수 없는 이유는 무엇입니까?를 참조하십시오.
3. 전체 작업의 지연 시간을 확인합니다.
작업의 총 지연 시간은 다음 사항을 포함합니다.
- STS의 요청/응답 시간
- IdP의 요청/응답 시간
AWS STS 지연 시간 최소화
AWS STS 서비스에 글로벌 엔드포인트 대신 리전 엔드포인트를 사용합니다. 이렇게 하면 요청이 지리적으로 가장 가까운 서버로 라우팅 되어 지연 시간이 최소화되는지 확인할 수 있습니다. 자세한 내용은 AWS STS 리전 사용을 위한 코드 작성을 참조하십시오.
참고: AWS SDK의 경우 요청 대상 엔드포인트는 sts_regional_endpoint 구성 내에서 호출이 이루어지는 AWS 리전 파라미터에 의해 라우팅됩니다.
IdP 지연 시간 평가
IdP는 STS 엔드포인트에 요청을 보낼 책임이 있습니다. STS 엔드포인트에 대한 요청이 너무 오래 걸리는지 확인하려면 IdP 로그 내에서 IdP의 발신 패킷을 분석해야 합니다.
참고: IdP에서 STS 엔드포인트로의 요청이 5초 이상 걸리는 경우 요청이 시간 초과되어 실패할 수 있습니다. 자격 증명 공급자에게 연락하여 이 API 호출의 지연 시간을 줄이기 위해 지리적 가용성 증가를 요청할 수 있습니다.
4. (선택 사항) 지수 백오프를 사용합니다.
오류 응답을 위한 재시도 사이의 대기 시간이 점점 길어질 경우 지수 백오프를 사용합니다. AssumeRoleWithWebIdentity API를 사용한 역할 위임은 자격 증명 공급자 (IdP)에서 정보를 검색하는 것에 따라 달라집니다. 대부분의 IdP에는 스로틀링 오류를 방지하기 위해 API 제한이 있으며 API 호출은 필요한 토큰을 IdP에서 다시 얻지 못할 수 있습니다. 최대 지연 간격과 최대 재시도 횟수를 구현합니다. 자세한 내용은 AWS의 오류 재시도 및 지수 백오프를 참조하세요.
관련 정보
AWS Security Token Service API Reference에 오신 것을 환영합니다
IAM 및 AWS STS의 API 제한 또는 ‘Rate exceeded’ 오류를 해결하려면 어떻게 해야 합니까?