새로 고침 토큰 - Amazon Cognito

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

새로 고침 토큰

새로 고침 토큰을 사용하여 새 ID와 액세스 토큰을 검색할 수 있습니다. 기본적으로 새로 고침 토큰은 애플리케이션 사용자가 사용자 풀에 로그인하고 30일이 지나면 만료됩니다. 사용자 풀에 대한 애플리케이션을 생성할 경우 애플리케이션의 새로 고침 토큰 만료를 60분에서 10년 사이의 값으로 설정할 수 있습니다.

새로 고침 토큰으로 새 액세스 및 자격 증명 토큰 받기

Amazon Cognito는 관리형 로그인 권한 부여 코드 흐름과 API 작업 또는 SDK 메서드를 사용한 성공적인 인증에 대한 응답으로 새로 고침 토큰을 발급합니다. 새로 고침 토큰은 새 ID 및 액세스 토큰과 선택적으로 새 새로 고침 토큰을 반환합니다. 다음과 같은 방법으로 새로 고침 토큰을 사용할 수 있습니다.

GetTokensFromRefreshToken

GetTokensFromRefreshToken API 작업은 유효한 새로 고침 토큰에서 새 ID와 액세스 토큰을 발급합니다. 새로 고침 토큰 교체를 활성화한 경우에도 새 새로 고침 토큰이 생성됩니다.

InitiateAuth 및 AdminitiateAuth

AdminInitiateAuth 또는 InitiateAuth API 작업에는 REFRESH_TOKEN_AUTH 인증 흐름이 포함됩니다. 이 흐름에서는 새로 고침 토큰을 전달하고 새 ID 및 액세스 토큰을 가져옵니다. 새로 고침 토큰 교체가 활성화된 앱 클라이언트REFRESH_TOKEN_AUTH에서는를 사용하여 인증할 수 없습니다.

OAuth 토큰 엔드포인트

도메인이 있는 사용자 풀의 토큰 엔드포인트에는 유효한 새로 고침 토큰에서 새 ID, 액세스 및 선택적으로(새로 고침 토큰 교체 포함) 새로 고침 토큰을 발급하는 refresh_token 권한 부여 유형이 있습니다.

토큰 교체 새로 고침

새로 고침 토큰 교체를 사용하면 원래 새로 고침 토큰을 무효화하고 토큰 새로 고침마다 새 새로 고침 토큰을 발행하도록 사용자 풀을 선택적으로 구성할 수 있습니다. 이 설정이 활성화되면 모든 형태의 토큰 새로 고침에서 성공한 각 요청은 새 ID, 액세스 새로 고침 토큰을 반환합니다. 새 새로 고침 토큰은 원래 새로 고침 토큰의 남은 기간 동안 유효합니다. 새로 고침 토큰을 교체하거나 원래 새로 고침 토큰을 전달하도록 앱 클라이언트를 구성할 수 있습니다. 짧은 기간 동안 재시도를 허용하려면 원래 새로 고침 토큰에 대해 최대 60초의 유예 기간을 구성할 수도 있습니다.

새로 고침 토큰 교체에 대해 알아야 할 사항
  • 새로 고침 토큰 교체를 활성화하면 사용자 풀의 JSON 웹 토큰에 새 클레임이 추가됩니다. origin_jtijti 클레임이 액세스 토큰과 ID 토큰에 추가됩니다. 이러한 클레임은 JWTs.

  • 새로 고침 토큰 교체는 인증 흐름와 호환되지 않습니다REFRESH_TOKEN_AUTH. 새로 고침 토큰 교체를 구현하려면 앱 클라이언트에서이 인증 흐름을 비활성화하고 GetTokensFromRefreshToken API 작업 또는 이에 상응하는 SDK 방법을 사용하여 토큰 새로 고침 요청을 제출하도록 애플리케이션을 설계해야 합니다.

  • 새로 고침 토큰 교체가 비활성화된 상태에서 GetTokensFromRefreshToken 또는를 사용하여 토큰 새로 고침 요청을 완료할 수 있습니다REFRESH_TOKEN_AUTH.

  • 사용자 풀에서 디바이스 기억이 활성 상태인 경우 GetTokensFromRefreshToken 요청에 디바이스 키를 제공해야 합니다. 사용자에게 애플리케이션이 초기 인증 요청에서 제출하는 확인된 디바이스 키가 없는 경우 Amazon Cognito는 새 키를 발급합니다. 이 구성에서 토큰을 새로 고치려면에서 토큰을 지정AuthParameters했는지 아니면 인증 응답에서 새 토큰을 수신했는지에 관계없이 디바이스 키를 제공해야 합니다.

  • GetTokensFromRefreshToken 요청ClientMetadata에서 사전 토큰 생성 Lambda 트리거에 전달할 수 있습니다. 트리거의 입력 이벤트에 전달되는이 데이터는 Lambda 함수의 사용자 지정 로직에 사용할 수 있는 추가 컨텍스트를 제공합니다.

보안 모범 사례로 앱 클라이언트에서 새로 고침 토큰 교체를 활성화합니다.

Enable refresh token rotation (console)

다음 절차에서는 앱 클라이언트에 대해 새로 고침 토큰 교체를 켜거나 끕니다. 이 절차에는 기존 앱 클라이언트가 필요합니다. 앱 클라이언트 생성에 대한 자세한 내용은 섹션을 참조하세요앱 클라이언트를 사용한 애플리케이션별 설정.

새로 고침 토큰 교체를 활성화하려면
  1. Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 자격 AWS 증명을 입력합니다.

  2. 사용자 풀(User Pools)을 선택합니다.

  3. 목록에서 기존 사용자 풀을 선택합니다.

  4. 앱 클라이언트 메뉴로 이동하여 기존 앱 클라이언트를 선택합니다.

  5. 페이지의 앱 클라이언트 정보 섹션에서 편집을 선택합니다.

  6. 고급 보안 구성에서 새로 고침 토큰 교체 활성화 옵션을 찾습니다.

  7. 교체를 활성화하려면 확인란을 선택합니다. 교체를 비활성화하려면 확인란을 선택 취소합니다.

  8. 새로 고침 토큰 교체 유예 기간에 교체된 새로 고침 토큰이 취소되기 전에 지연으로 설정할 초 수를 최대 60까지 입력합니다.

Enable refresh token rotation (API)

CreateUserPoolClient 또는 UpdateUserPoolClient API 요청에서 새로 고침 토큰 교체를 구성합니다. 다음 부분 요청 본문은 새로 고침 토큰 교체를 켜고 유예 기간을 10초로 설정합니다.

"RefreshTokenRotation" : { "Feature" : "ENABLED, "RetryGracePeriodSeconds" : 10 }

API 및 SDK 토큰 새로 고침

새로 고침 토큰 교체가 활성 상태인지 여부에 따라 새로 고침 토큰을 사용하여 사용자 풀 API로 새 ID 및 액세스 토큰을 가져오는 두 가지 방법이 있습니다. 새로 고침 토큰 교체가 활성화된 앱 클라이언트에서 GetTokensFromRefreshToken API 작업을 사용합니다. 새로 고침 토큰 교체가 없는 앱 클라이언트에서는 AdminInitiateAuth 또는 InitiateAuth API 작업의 REFRESH_TOKEN_AUTH 흐름을 사용합니다.

참고

사용자는 관리형 로그인 또는 AWS SDKs 및 Amazon Cognito API 작업으로 빌드하는 사용자 지정 애플리케이션에서 사용자 풀을 사용하여 인증할 수 있습니다. REFRESH_TOKEN_AUTH 흐름과 모두 관리형 로그인 사용자의 토큰 새로 고침을 완료할 GetTokensFromRefreshToken 수 있습니다. 사용자 지정 애플리케이션의 토큰 새로 고침은 관리형 로그인 세션에 영향을 주지 않습니다. 이러한 세션은 브라우저 쿠키에 설정되며 1시간 동안 유효합니다. GetTokensFromRefreshToken 응답은 새 ID, 액세스 및 선택적으로 새로 고침 토큰을 발급하지만 관리형 로그인 세션 쿠키는 갱신하지 않습니다.

REFRESH_TOKEN_AUTH 새로 고침 토큰 교체가 활성화된 앱 클라이언트에서는를 사용할 수 없습니다.

GetTokensFromRefreshToken

GetTokensFromRefreshToken은 새로 고침 토큰으로 권한을 부여하는 요청에서 새 ID, 액세스 및 새로 고침 토큰을 반환합니다. 다음은에 대한 요청 본문의 예입니다GetTokensFromRefreshToken. 이 작업에 대한 요청에서 Lambda 트리거에 클라이언트 메타데이터를 제출할 수 있습니다.

{ "RefreshToken": "eyJjd123abcEXAMPLE", "ClientId": "1example23456789", "ClientSecret": "myappclientsecret123abc", "ClientMetadata": { "MyMetadataKey" : "MyMetadataValue" }, }
AdminInitiateAuth/InitiateAuth

새로 고침 토큰 교체가 비활성 상태일 때 새로 고침 토큰을 사용하려면 AdminInitiateAuth 또는 InitiateAuth API 작업을 사용합니다. AuthFlow 파라미터에 REFRESH_TOKEN_AUTH를 전달합니다. AuthFlow의 AuthParameters 속성에서 사용자의 새로 고침 토큰을 "REFRESH_TOKEN" 값으로 전달합니다. Amazon Cognito는 API 요청이 모든 챌린지를 전달한 후 새 ID 및 액세스 토큰을 반환합니다.

다음은 InitiateAuth 또는 AdminInitiateAuth API를 사용한 토큰 새로 고침 요청 본문의 예입니다.

{ "AuthFlow": "REFRESH_TOKEN_AUTH", "ClientId": "1example23456789", "UserPoolId": "us-west-2_EXAMPLE", "AuthParameters": { "REFRESH_TOKEN": "eyJjd123abcEXAMPLE", "SECRET_HASH": "kT5acwCVrbD6JexhW3EQwnRSe6fLuPTRkEQ50athqv8=" } }

OAuth 토큰 새로 고침

도메인을 구성한 사용자 풀의 Token 엔드포인트에 새로 고침 토큰을 제출할 수도 있습니다. 요청 본문에 refresh_token의 grant_type 값과 사용자 새로 고침 토큰의 refresh_token 값을 포함합니다.

토큰 엔드포인트에 대한 요청은 새로 고침 토큰 교체가 활성 상태인 앱 클라이언트와 비활성 상태인 앱 클라이언트에서 사용할 수 있습니다. 새로 고침 토큰 교체가 활성화되면 토큰 엔드포인트가 새 새로 고침 토큰을 반환합니다.

다음은 새로 고침 토큰이 있는 요청의 예입니다.

POST /oauth2/token HTTP/1.1 Host: auth.example.com Content-Type: application/x-www-form-urlencoded Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw Content-Length: ** client_id=1example23456789&grant_type=refresh_token&refresh_token=eyJjd123abcEXAMPLE

새로 고침 토큰 철회

사용자에게 속한 새로 고침 토큰을 취소할 수 있습니다. 토큰 취소에 대한 자세한 내용은 토큰 취소로 사용자 세션 종료 섹션을 참조하세요.

참고

새로 고침 토큰을 취소하면 Amazon Cognito가 해당 토큰을 사용하여 새로 고침 요청에서 발급한 모든 ID 및 액세스 토큰이 취소됩니다.

현재 로그인한 모든 세션에서 사용자를 로그아웃하려면 GlobalSignOut 또는 AdminUserGlobalSignOut API 요청을 사용하여 모든 토큰을 취소합니다. 사용자가 로그아웃하면 다음과 같은 효과가 발생합니다.

  • 사용자의 새로 고침 토큰을 사용하여 사용자에 대한 새 토큰을 가져올 수 없습니다.

  • 사용자의 액세스 토큰을 사용하여 토큰으로 권한이 부여된 API 요청을 할 수 없습니다.

  • 새 토큰을 가져오려면 사용자가 다시 인증해야 합니다. 관리형 로그인 세션 쿠키는 자동으로 만료되지 않으므로 사용자는 자격 증명에 대한 추가 프롬프트 없이 세션 쿠키로 다시 인증할 수 있습니다. 관리형 로그인 사용자를 로그아웃한 후 Amazon Cognito가 세션 쿠키를 지우Logout 엔드포인트는 로 리디렉션합니다.

새로 고침 토큰을 사용하면 앱에서 사용자의 세션을 오랫동안 유지할 수 있습니다. 시간이 지남에 따라 사용자는 새로 고침 토큰으로 로그인한 일부 애플리케이션의 권한을 취소할 수 있습니다. 단일 세션에서 사용자를 로그아웃하려면 새로 고침 토큰을 취소합니다. 사용자가 인증된 모든 세션에서 로그아웃하려는 경우 GlobalSignOut API 요청을 생성합니다. 앱에서 사용자에게 모든 디바이스에서 로그아웃과 같은 선택 항목을 제공할 수 있습니다. GlobalSignOut은 변경되지 않고 만료되지 않고 취소되지 않은 사용자의 유효한 액세스 토큰을 허용합니다. 이 API는 토큰으로 권한이 부여되었기 때문에 한 사용자가 이 API를 사용하여 다른 사용자의 로그아웃을 시작할 수 없습니다.

그러나 자격 AWS 증명으로 모든 디바이스에서 사용자를 로그아웃하도록 권한을 부여하는 AdminUserGlobalSignOut API 요청을 생성할 수 있습니다. 관리자 애플리케이션은 AWS 개발자 자격 증명으로이 API 작업을 호출하고 사용자 풀 ID와 사용자의 사용자 이름을 파라미터로 전달해야 합니다. AdminUserGlobalSignOut API를 사용하면 사용자 풀의 모든 사용자를 로그아웃할 수 있습니다.

자격 AWS 증명 또는 사용자의 액세스 토큰으로 권한을 부여할 수 있는 요청에 대한 자세한 내용은 섹션을 참조하세요권한 부여 모델별로 그룹화된 API 작업 목록.