투케이2K

340. (TWOK/ERROR) [AWS] InvalidClientTokenId : The security token included in the request is invalid 본문

투케이2K 에러관리

340. (TWOK/ERROR) [AWS] InvalidClientTokenId : The security token included in the request is invalid

투케이2K 2025. 12. 10. 20:20
728x90

[환경 설정 및 설명]

프로그램 : AWS

설 명 : [AWS] InvalidClientTokenId : The security token included in the request is invalid

 

[설 명]

--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------

- 제목 : [AWS] InvalidClientTokenId : The security token included in the request is invalid


- 테스트 환경 : AWS / Auth / STS


- 사전) AWS STS 임시 자격 증명 간단 설명 : 

  >> Aws STS 는 AWS 리소스에 대한 액세스를 제어할 수 있는 임시 보안 자격 증명입니다 (신뢰받는 사용자에게 제공)

  >> Aws STS 는 단기적 임시 보안 자격 증명이며, 몇 분에서 몇 시간 동안 해당 자격 증명을 사용해 AWS 리소스를 액세스할 수 있습니다

  >> Aws STS 는 임시 보안 자격 증명이 만료 된 경우 AWS는 더는 그 자격 증명을 인식하지 못하거나 그 자격 증명을 사용한 API 요청으로부터 이루어지는 어떤 종류의 액세스도 허용하지 않습니다

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------

1. AWS STS 임시 자격 증명 요청 시 AWS.config.update 에 지정한 AccessKey, SecretKey 정보가 올바르지 않아서 발생하는 이슈

  >> AWS Iam 계정에 할당 된 AccessKey, SecretKey 정보가 올바르지 않음


2. 에러 발생 로그 전문 : 

  >> InvalidClientTokenId : The security token included in the request is invalid


3. 자바스크립트 AWS STS 임시 자격 증명 조회 간단 예시 코드 : 

# 웹 CDN 라이브러리 선언
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1416.0.min.js"></script>


# 웹 스크립트 소스 코드

var accessKeyId = "";
var secretAccessKey = "";
var region = "";

AWS.config.update({
  region: region,
  accessKeyId: accessKeyId,
  secretAccessKey: secretAccessKey
});

const sts = new AWS.STS();

// -----------------------------------------
// [STS getSessionToken 호출 수행]
// -----------------------------------------
// DurationSeconds : Expiration 시간 3600 은 (1시간) / 10800 은 (3시간) / 세션 지속 시간 (최대 129600초 = 36시간)
// -----------------------------------------
var resMessage = "";
sts.getSessionToken({ DurationSeconds: 10800 }, function(err, data) {
  if (err) {
    console.error("[getSessionToken] : [Error] : ", err);
  }
  else {
    console.error("[getSessionToken] : [Result] : ", JSON.stringify(data));
    
    console.log("AccessKeyId :: " + data.Credentials.AccessKeyId); // [STS > AccessKeyId]
    console.log("SecretAccessKey :: " + data.Credentials.SecretAccessKey); // [STS > SecretAccessKey]
    console.log("SessionToken :: " + data.Credentials.SessionToken); // [STS > SessionToken]
    console.log("Expiration :: " + data.Credentials.Expiration); // [STS > Expiration]
  }
});

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------

1. AWS STS 임시 자격 증명 조회 getSessionToken API 호출 후 err 발생 시 err.name 값 체크 후 
   InvalidClientTokenId : The security token included in the request is invalid 인 경우
   AWS 계정 Key 정보를 확인해 주세요. 에러 팝업 메시지 추가


2. err.name 값 및 err.message 값 체크 예시 코드 : 

  if (err.name == "InvalidClientTokenId"){ 
    resMessage += "<pre></pre>"
    resMessage += "\n" + "[Output] ErrorReason : AWS 리전 리소스에 접근하기 위한 AccessKey , SecretKey 정보가 올바르지 않습니다 (AWS 리소스 접근 정보를 다시 확인해주세요.)" + "\n";
  }

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------

[Aws Auth] AWS Cognito 와 STS ( Security Token Service ) 인증 비교 정리

https://kkh0977.tistory.com/8399

https://blog.naver.com/kkh0977/224073942712?trackingCode=blog_bloghome_searchlist


[자바스크립트 AWS STS 임시 자격 증명 조회 방법 - AccessKeyId, SecretAccessKey, SessionToken]

https://blog.naver.com/kkh0977/223901300334?trackingCode=blog_bloghome_searchlist


[자바스크립트 AWS STS 임시 자격 증명 사용해 S3 Get PreSignedUrl 프리 사인 URL 주소 생성]

https://blog.naver.com/kkh0977/223938740405?trackingCode=blog_bloghome_searchlist


[자바스크립트 AWS Iot Core Credential Endpoint 정보 조회 - STS 임시 AWS 자격 증명 호출 URL 정보]

https://blog.naver.com/kkh0977/224060418734?trackingCode=blog_bloghome_searchlist

--------------------------------------------------------------------------
 
728x90
반응형
Comments