AWS 일반 참조
참조 안내서 (버전 1.0)

작업 2: 서명 버전 4에 대한 서명할 문자열 생성

서명할 문자열에는 사용자의 요청과 작업 1: 서명 버전 4에 대한 표준 요청 생성에서 생성한 표준 요청에 대한 메타 정보가 포함되어 있습니다. 서명할 문자열과 나중에 생성할 파생된 서명 키를 사용하여 작업 3: AWS 서명 버전 4에 대한 서명 계산에서 요청 서명을 계산합니다.

서명할 문자열을 생성하려면 다음 유사 코드에 표시된 대로 표준 요청의 알고리즘, 날짜 및 시간, 자격 증명 범위 및 다이제스트를 연결합니다.

서명할 문자열의 구조

StringToSign = Algorithm + \n + RequestDateTime + \n + CredentialScope + \n + HashedCanonicalRequest

다음 예에서는 작업 1: 표준 요청 생성에서와 동일한 요청을 사용하여 서명할 문자열을 생성하는 방법을 보여줍니다.

예 HTTPS 요청

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1 Host: iam.amazonaws.com Content-Type: application/x-www-form-urlencoded; charset=utf-8 X-Amz-Date: 20150830T123600Z

서명할 문자열을 생성하려면

  1. 알고리즘 지정으로 시작하고 그 뒤에 줄 바꿈 문자를 추가합니다. 이 값은 표준 요청에서 다이제스트를 계산하는 데 사용되는 해싱 알고리즘입니다. SHA256의 경우, AWS4-HMAC-SHA256이 알고리즘입니다.

    AWS4-HMAC-SHA256\n
  2. 요청 날짜 값과 줄 바꿈 문자를 차례로 추가합니다. 날짜는 x-amz-date 헤더의 ISO8601 기본 형식(YYYYMMDD'T'HHMMSS'Z' 형식)으로 지정됩니다. 이 값은 이전 단계에서 사용한 값과 일치해야 합니다.

    20150830T123600Z\n
  3. 자격 증명 범위 값과 줄 바꿈 문자를 차례로 추가합니다. 이 값은 날짜, 대상 리전, 요청 중인 서비스, 소문자 종료 문자열(“aws4_request”)을 포함하는 문자열입니다. 리전 및 서비스 이름 문자열은 UTF-8로 인코딩되어야 합니다.

    20150830/us-east-1/iam/aws4_request\n
    • 날짜는 YYYYMMDD 형식이어야 합니다. 날짜는 시간 값을 포함하지 않습니다.

    • 지정한 리전이 요청을 전송 중인 대상 리전인지 확인합니다. AWS 서비스 엔드포인트 단원을 참조하십시오.

  4. 작업 1: 서명 버전 4에 대한 표준 요청 생성에서 생성한 표준 요청의 해시를 추가합니다. 이 값은 줄 바꿈 문자가 뒤에 오지 않습니다. 이 해시된 표준 요청은 RFC 4648의 Section 8에 정의된 대로 16진수를 기반으로 인코딩된 소문자여야 합니다.

    f536975d06c0309214f805bb90ccff089219ecd68b2577efef23edd43b7e1a59

다음 서명할 문자열은 2015년 8월 30일에 제출된 IAM에 대한 요청입니다.

예 서명할 문자열

AWS4-HMAC-SHA256 20150830T123600Z 20150830/us-east-1/iam/aws4_request f536975d06c0309214f805bb90ccff089219ecd68b2577efef23edd43b7e1a59