기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
토큰 발급자 엔드포인트
의 OAuth 2.0 토큰 엔드포인트/oauth2/token
발행합니다JWTs. 이러한 토큰은 사용자 풀을 사용한 인증의 최종 결과입니다. 여기에는 사용자(ID 토큰), 사용자의 액세스 수준(액세스 토큰) 및 로그인 세션을 유지할 수 있는 사용자의 권한(토큰 새로 고침)에 대한 정보가 포함되어 있습니다. OpenID Connect(OIDC) 의존 당사자 라이브러리는 이 엔드포인트에 대한 요청 및 응답 페이로드를 처리합니다. 토큰은 검증 가능한 인증 증명, 프로필 정보 및 백엔드 시스템에 대한 액세스 메커니즘을 제공합니다.
사용자 풀 OAuth 2.0 권한 부여 서버는 토큰 엔드포인트에서 다음 유형의 세션으로 JSON 웹 토큰(JWTs)을 발급합니다.
-
권한 부여 코드 부여 요청을 완료한 사용자입니다. 코드를 성공적으로 사용하면 ID, 액세스 및 새로 고침 토큰이 반환됩니다.
-
Machine-to-machine 클라이언트 자격 증명 부여를 완료한 (M2M) 세션입니다. 클라이언트 암호로 인증에 성공하면 액세스 토큰이 반환됩니다.
-
이전에 로그인하고 새로 고침 토큰을 받은 사용자. 새로 고침 토큰 인증은 새 ID와 액세스 토큰을 반환합니다.
참고
호스팅 UI 또는 페더레이션을 통해 권한 부여 코드 권한 부여로 로그인하는 사용자는 항상 토큰 엔드포인트에서 토큰을 새로 고칠 수 있습니다. API 작업으로 로그인
InitiateAuth
하고 기억된 디바이스가 사용자 풀에서 활성화되지 않은 경우 토큰 엔드포인트로 토큰을 새로 고칠AdminInitiateAuth
수 있는 사용자. 기억된 디바이스가 활성 상태인 경우InitiateAuth
또는AdminInitiateAuth
API 요청REFRESH_TOKEN_AUTH
에서AuthFlow
의 로 토큰을 새로 고칩니다.
도메인을 사용자 풀에 추가하면 토큰 엔드포인트를 공개적으로 사용할 수 있게 됩니다. HTTP POST 요청을 수락합니다. 애플리케이션 보안을 위해 권한 부여 코드 로그인 이벤트PKCE와 함께 를 사용합니다. PKCE 는 인증 코드를 전달하는 사용자가 인증된 사용자와 동일한지 확인합니다. 에 대한 자세한 내용은 IETF RFC 7636
IDs 에서 사용자 풀 앱 클라이언트 및 해당 권한 부여 유형, 클라이언트 보안 암호, 승인된 범위 및 클라이언트에 대해 자세히 알아볼 수 있습니다앱 클라이언트를 사용한 애플리케이션별 설정. 에서 M2M 권한 부여, 클라이언트 자격 증명 권한 부여 및 액세스 토큰 범위를 사용한 권한 부여에 대해 자세히 알아볼 수 있습니다범위, M2M 및 리소스 서버 APIs 포함.
액세스 토큰에서 사용자에 대한 정보를 검색하려면 userInfo 엔드포인트 또는 에 전달합니다. GetUser API 요청.
POST /oauth2/token
/oauth2/token
엔드포인트는 HTTPS POST
만 지원합니다. 앱은 사용자 브라우저를 통하지 않고 직접 이 엔드포인트에 요청을 수행합니다.
토큰 엔드포인트는 client_secret_basic
및 client_secret_post
인증을 지원합니다. OpenID Connect 사양에 대한 자세한 내용은 클라이언트 인증 섹션을
헤더의 요청 파라미터
Authorization
-
클라이언트가 보안 암호를 발급받은 경우 클라이언트는 권한 부여 헤더
client_secret
의client_id
및 를client_secret_basic
HTTP 권한 부여로 전달할 수 있습니다. 요청 본문에client_secret_post
권한 부여로client_id
및client_secret
을 포함할 수도 있습니다.인증 헤더 문자열은 기본
Base64Encode(client_id:client_secret)
입니다. 다음 예제는 문자열 의 Base64-encoded 버전을abcdef01234567890
사용하여 클라이언트 보안 암호가djc98u3jiedmi283eu928
인 앱 클라이언트에 대한 권한 부여 헤더입니다djc98u3jiedmi283eu928:abcdef01234567890
.Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
Content-Type
-
이 파라미터의 값을
'application/x-www-form-urlencoded'
으로 설정합니다.
본문의 요청 파라미터
grant_type
-
(필수) 요청하려는 OIDC 권한 부여 유형입니다.
authorization_code
,refresh_token
또는client_credentials
가 있습니다. 다음 조건에서 토큰 엔드포인트에서 사용자 지정 범위에 대한 액세스 토큰을 요청할 수 있습니다.-
앱 클라이언트 구성에서 요청된 범위를 활성화했습니다.
-
클라이언트 보안 암호로 앱 클라이언트를 구성했습니다.
-
앱 클라이언트에서 클라이언트 보안 인증 권한 부여를 활성화합니다.
-
client_id
-
(선택 사항) 사용자 풀에 있는 앱 클라이언트의 ID입니다. 사용자를 인증한 것과 동일한 앱 클라이언트를 지정합니다.
클라이언트가 퍼블릭이고 보안 암호가 없거나
client_secret
client_secret_post
권한이 있는 경우 이 파라미터를 제공해야 합니다. client_secret
-
(선택 사항) 사용자를 인증한 앱 클라이언트의 클라이언트 보안 암호입니다. 앱 클라이언트에 클라이언트 암호가 있고
Authorization
헤더를 보내지 않은 경우 필수입니다. scope
-
(선택 사항) 앱 클라이언트와 연결된 모든 사용자 지정 범위를 조합할 수 있습니다. 요청한 모든 범위는 앱 클라이언트에 대해 활성화되어야 합니다. 그렇지 않으면 Amazon Cognito는 이를 무시합니다. 클라이언트가 범위를 요청하지 않으면 인증 서버는 앱 클라이언트 구성에서 권한을 부여한 모든 사용자 지정 범위를 할당합니다.
grant_type
이client_credentials
인 경우에만 사용됩니다. redirect_uri
-
(선택 사항)
authorization_code
에서 가져오는 데 사용된redirect_uri
것과 동일해야 합니다/oauth2/authorize
.이
grant_type
인 경우 이 파라미터를 제공해야 합니다authorization_code
. refresh_token
-
(선택 사항) 사용자 세션에 대한 새 액세스 및 ID 토큰을 생성하려면
/oauth2/token
요청의refresh_token
파라미터 값을 동일한 앱 클라이언트에서 이전에 발급된 새로 고침 토큰으로 설정합니다. code
-
(선택 사항) 권한 부여 코드 권한 부여의 권한 부여 코드입니다. 권한 부여 요청에
grant_type
의 가 포함된 경우 이 파라미터를 제공해야 합니다authorization_code
. code_verifier
-
(선택 사항) 를 사용하여 권한 부여 코드 권한 부여 요청
code_challenge
에서 를 계산하는 데 사용한 임의 값입니다PKCE.
긍정적인 응답이 있는 요청의 예
인증 코드를 토큰으로 교환
예 - POST 요청
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=authorization_code& client_id=1example23456789
& code=AUTHORIZATION_CODE
& redirect_uri=com.myclientapp://myclient/redirect
예 - 응답
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
참고
토큰 엔드포인트는 grant_type
이 authorization_code
인 경우에만 refresh_token
을 반환됩니다.
클라이언트 보안 인증 정보를 액세스 토큰으로 교환: 권한 부여 헤더의 클라이언트 암호
예 - POST 요청
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=client_credentials& client_id=1example23456789
& scope=resourceServerIdentifier1
/scope1
resourceServerIdentifier2
/scope2
예 - 응답
HTTP/1.1 200 OK Content-Type: application/json { "access_token": "eyJra1example", "token_type": "Bearer", "expires_in": 3600 }
클라이언트 보안 인증 정보를 액세스 토큰으로 교환: 요청 본문의 클라이언트 암호
예 - POST 요청
POST /oauth2/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded X-Amz-Target: AWSCognitoIdentityProviderService.Client credentials request User-Agent: USER_AGENT Accept: / Accept-Encoding: gzip, deflate, br Content-Length: 177 Referer: http://auth.example.com/oauth2/token Host: auth.example.com Connection: keep-alive grant_type=client_credentials&client_id=
1example23456789
&scope=my_resource_server_identifier
%2Fmy_custom_scope
&client_secret=9example87654321
예 - 응답
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Date: Tue, 05 Dec 2023 16:11:11 GMT x-amz-cognito-request-id: 829f4fe2-a1ee-476e-b834-5cd85c03373b { "access_token": "eyJra12345EXAMPLE", "expires_in": 3600, "token_type": "Bearer" }
권한 부여 코드 권한 부여를 로 토큰 PKCE 교환
예 - POST 요청
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=authorization_code& client_id=1example23456789
& code=AUTHORIZATION_CODE
& code_verifier=CODE_VERIFIER
& redirect_uri=com.myclientapp://myclient/redirect
예 - 응답
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
참고
토큰 엔드포인트는 grant_type
이 authorization_code
인 경우에만 refresh_token
을 반환됩니다.
새로 고침 토큰을 토큰으로 교환
예 - POST 요청
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic
ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
grant_type=refresh_token& client_id=1example23456789
& refresh_token=eyJj3example
예 - 응답
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"token_type": "Bearer",
"expires_in": 3600
}
참고
토큰 엔드포인트는 grant_type
이 authorization_code
인 경우에만 refresh_token
을 반환됩니다.
부정 응답 예제
예 - 오류 응답
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
{
"error":"invalid_request|invalid_client|invalid_grant|unauthorized_client|unsupported_grant_type"
}
invalid_request
-
요청에 필수 파라미터가 누락되거나, 지원되지 않는 파라미터 값(
unsupported_grant_type
아님)이 포함되거나, 잘못되었습니다. 예를 들어,grant_type
이refresh_token
이지만refresh_token
이 포함되어 있지 않습니다. invalid_client
-
클라이언트 인증에 실패했습니다. 예를 들어, 클라이언트가 권한 부여 헤더에
client_id
및client_secret
을 포함하지만client_id
및client_secret
이 있는 클라이언트가 없는 경우입니다. invalid_grant
-
새로 고침 토큰이 취소되었습니다.
권한 부여 코드를 이미 사용했거나 해당 코드가 존재하지 않습니다.
앱 클라이언트에는 요청한 범위의 일부 속성에 대한 읽기 액세스 권한이 없습니다. 예를 들어, 앱이
email
범위를 요청하면 앱 클라이언트는email
속성을 읽을 수 있지만,email_verified
속성은 읽을 수 없습니다. unauthorized_client
-
클라이언트가 코드 부여 흐름이나 토큰 새로 고침에 대해 허용되지 않습니다.
unsupported_grant_type
-
grant_type
이authorization_code
또는refresh_token
또는client_credentials
이외의 것인 경우 반환됩니다.