액세스 토큰 사용 - Amazon Cognito

액세스 토큰 사용

사용자 풀 액세스 토큰에는 인증된 사용자에 대한 클레임, 사용자 그룹 목록 및 범위 목록이 포함되어 있습니다. 액세스 토큰의 목적은 사용자 풀의 사용자 컨텍스트에서 API 작업을 승인하는 것입니다. 예를 들어 액세스 토큰을 사용하여 사용자 속성을 추가, 변경 또는 삭제하기 위한 액세스 권한을 사용자에게 부여할 수 있습니다.

액세스 토큰은 JSON 웹 토큰(JWT)으로 표시됩니다. 액세스 토큰의 헤더는 ID 토큰과 구조가 동일합니다. 그러나 ID 토큰과 액세스 토큰에는 서로 다른 키를 사용하여 서명하므로 키 ID(kid)가 다릅니다. ID 토큰에서와 마찬가지로 먼저 웹 API에서 액세스 토큰의 서명을 확인해야 모든 클레임을 신뢰할 수 있습니다. JSON 웹 토큰 확인 섹션을 참조하세요. 액세스 토큰 만료 시간은 5분~1일 사이로 설정할 수 있습니다. 앱 클라이언트별로 이 값을 설정할 수 있습니다.

중요

액세스 및 ID 토큰의 경우 최소값을 1시간 미만으로 지정하지 마세요. Amazon Cognito 호스팅된 UI는 1시간 동안 유효한 쿠키를 사용합니다. 최소값을 1시간 미만으로 입력하더라도 만료 시간이 1시간 미만이 되지 않습니다.

액세스 토큰 헤더

헤더에는 키 ID(kid) 및 알고리즘(alg) 등 두 가지 정보가 포함되어 있습니다.

{ "kid" : "1234example=" "alg" : "RS256", }
키 ID(kid)

kid 파라미터는 토큰의 JSON 웹 서명(JWS)을 보호하는 데 어떤 키가 사용되었는지 나타내는 힌트입니다.

kid 파라미터에 대한 자세한 내용은 키 식별자(kid) 헤더 파라미터를 참조하세요.

알고리즘(alg)

alg 파라미터는 액세스 토큰을 보호하는 데 사용되는 암호화 알고리즘을 나타냅니다. 사용자 풀은 SHA-256에서의 RSA 서명인 RS256 암호화 알고리즘을 사용합니다.

alg 파라미터에 대한 자세한 내용은 알고리즘(alg) 헤더 파라미터를 참조하세요.

액세스 토큰 페이로드

액세스 토큰에서 나온 샘플 페이로드입니다. 자세한 내용은 JWT 클레임을 참조하세요.

{ "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups": [ "admin" ], "token_use": "access", "scope": "aws.cognito.signin.user.admin", "auth_time": 1562190524, "iss": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "exp": 1562194124, "iat": 1562190524, "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "client_id": "57cbishk4j24pabc1234567890", "username": "janedoe@example.com" }
제목(sub)

sub 클레임은 인증된 사용자의 고유 식별자(UUID)입니다. 사용자 이름과 동일하지 않으므로 고유하지 않을 수도 있습니다.

Amazon Cognito 그룹(cognito:groups)

cognito:groups 클레임은 사용자가 속한 그룹의 목록입니다.

토큰 사용(token_use)

token_use 클레임은 이 토큰의 용도를 설명합니다. 이 값은 액세스 토큰의 경우 항상 access입니다.

범위(scope)

범위 클레임은 토큰이 어떤 액세스를 제공하는지를 정의하는 Oauth 2.0 범위 목록입니다.

인증 시간(auth_time)

auth_time 클레임에는 인증이 발생했던 시간이 포함되어 있습니다. 이 값은 1970-01-01T0:0:0Z부터 시작되며 UTC 형식으로 측정된 초 시간을 나타내는 JSON 번호입니다. 새로 고침 시, 이 값은 토큰이 발행된 시간이 아니라 원래 인증이 발생했던 시간을 나타냅니다.

발급자(iss)

iss 클레임은 다음과 같은 형식을 가집니다.

https://cognito-idp.{region}.amazonaws.com/{userPoolId}.

오리진 jti(origin_jti)

원래 인증이 발생한 시점의 오리진 JWT 식별자입니다.

jti(jti)

jti 클레임은 JWT의 고유 식별자입니다.

액세스 토큰 서명

액세스 토큰의 서명은 JWT 토큰의 헤더와 페이로드에 따라 계산됩니다. 웹 API에 있는 애플리케이션의 외부에서 사용될 경우 해당 토큰을 수락하기 전에 항상 이 서명을 확인해야 합니다. 자세한 내용은 JWT 토큰을 참조하세요.