AWS STS AssumeRoleWithWebIdentity API 호출 에러 “InvalidIdentityToken"를 해결하려면 어떻게 해야 합니까?

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

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의 오류 재시도 및 지수 백오프를 참조하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?