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

작업 4: HTTP 요청에 서명을 추가합니다.

서명을 계산한 후에 요청에 추가합니다. 다음 두 가지 방법 중 하나로 요청에 서명을 추가할 수 있습니다.

  • Authorization HTTP 헤더

  • 쿼리 문자열

Authorization 헤더와 쿼리 문자열 모두에서 서명 정보를 전달할 수 없습니다.

참고

AWS Security Token Service(AWS STS)에 제공되는 임시 보안 자격 증명을 사용하여 요청에 서명할 수 있습니다. 프로세스는 장기 자격 증명을 사용하는 것과 동일하지만, 보안 토큰에 대한 추가 HTTP 헤더 또는 쿼리 문자열 파라미터가 필요합니다. 헤더 또는 쿼리 문자열 파라미터의 이름은 X-Amz-Security-Token이고, 값은 세션 토큰(임시 보안 자격 증명을 가져올 때 AWS STS에서 수신한 문자열)입니다.

쿼리 문자열에 X-Amz-Security-Token 파라미터를 추가할 때 일부 서비스에서는 이 파라미터를 표준(서명된) 요청에 포함하도록 요구합니다. 다른 서비스의 경우 서명을 계산한 이후에 이 파라미터를 끝에 추가합니다. 자세한 내용은 해당 서비스에 대한 API 참조 문서를 참조하십시오.

Authorization 헤더에 서명 정보 추가

Authorization라는 HTTP 헤더에 추가하여 서명 정보를 포함할 수 있습니다. 헤더의 내용은 이전 단계에서 설명한 대로 서명을 계산한 이후에 생성되므로 Authorization 헤더는 서명된 헤더 목록에 포함되어 있지 않습니다. 헤더의 이름은 Authorization이지만 서명 정보는 인증에 실제로 사용됩니다.

다음 유사 코드에서는 Authorization 헤더의 구조를 보여줍니다.

Authorization: algorithm Credential=access key ID/credential scope, SignedHeaders=SignedHeaders, Signature=signature

다음 예에서는 완성된 Authorization 헤더를 보여줍니다.

Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7

다음을 참조하십시오.

  • 알고리즘과 Credential 사이에 쉼표는 없습니다. 하지만 SignedHeadersSignature는 이전 값과 쉼표로 구분됩니다.

  • Credential 값은 액세스 키 ID로 시작하고 그 뒤에는 슬래시(/)와 작업 2: 서명 버전 4에 대한 서명할 문자열 생성에서 계산된 자격 증명 범위가 순서대로 옵니다. 보안 액세스 키는 서명에 대한 서명 키를 추출하는 데 사용되지만, 요청에 전송되는 서명 정보에는 포함되지 않습니다.

쿼리 문자열에 서명 정보 추가

요청을 생성하고 쿼리 문자열에서 서명 정보를 포함한 모든 요청 값을 전달할 수 있습니다. 이는 AWS를 성공적으로 호출하는 데 필요한 모든 항목을 사용하여 단일 URL을 생성하므로 미리 서명된 URL이라고도 합니다. 일반적으로 에 사용됩니다. 자세한 내용은 Amazon Simple Storage Service API Reference쿼리 파라미터를 사용하여 요청 인증(AWS 서명 버전 4)을 참조하십시오.

중요

모든 파라미터가 쿼리 문자열에 포함된 요청을 생성할 경우 결과 URL은 이미 인증된 AWS 작업을 표시합니다. 따라서 실제 자격 증명을 처리할 때와 마찬가지로 결과 URL을 주의해서 취급하십시오. X-Amz-Expires 파라미터를 사용하여 요청에 대한 만료 시간을 짧게 지정하는 것이 좋습니다.

이 방법을 사용할 경우 서명을 제외한 모든 쿼리 문자열 값은 서명 프로세스의 첫 번째 부분에서 생성하는 표준 쿼리의 일부인 표준 쿼리 문자열에 포함됩니다.

다음 유사 코드에서는 모든 요청 파라미터를 포함하는 쿼리 문자열의 구조를 보여줍니다.

querystring = Action=action querystring += &X-Amz-Algorithm=algorithm querystring += &X-Amz-Credential= urlencode(access_key_ID + '/' + credential_scope) querystring += &X-Amz-Date=date querystring += &X-Amz-Expires=timeout interval querystring += &X-Amz-SignedHeaders=signed_headers

다른 쿼리 문자열 값을 계산의 일부로 사용하여 서명을 계산한 후 쿼리 문자열에 서명을 X-Amz-Signature 파라미터로 추가합니다.

querystring += &X-Amz-Signature=signature

다음 예에서는 모든 요청 파라미터와 서명 정보가 쿼리 문자열 파라미터에 포함되는 경우에 요청이 어떻게 표시되는지를 보여줍니다.

https://iam.amazonaws.com?Action=ListUsers&Version=2010-05-08&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIDEXAMPLE%2F20150830%2Fus-east-1%2Fiam%2Faws4_request&X-Amz-Date=20150830T123600Z&X-Amz-Expires=60&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Signature=37ac2f4fde00b0ac9bd9eadeb459b1bbee224158d66e7ae5fcadb70b2d181d02

다음을 참조하십시오.

  • 서명 계산을 위해 쿼리 문자열 파라미터는 코드 포인트를 기준으로 오름차순으로 정렬되어야 하며, 파라미터 값은 URI로 인코딩되어야 합니다. 작업 1: 서명 버전 4에 대한 표준 요청 생성에서 표준 쿼리 문자열을 생성하는 단계를 참조하십시오.

  • 요청 중인 작업에 대해 제한 시간 간격(X-Amz-Expires)을 실행 가능한 최소 시간으로 설정합니다.