새로 고침 토큰 사용 - Amazon Cognito

새로 고침 토큰 사용

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

유효한(만료되지 않은) 새로 고침 토큰이 있는 경우 Mobile SDK for iOS, Mobile SDK for Android, Amplify for iOS, Android 및 Flutter는 ID 및 액세스 토큰을 자동으로 새로 고칩니다. ID 및 액세스 토큰의 최소 잔여 유효 기간은 2분입니다. 새로 고침 토큰의 기간이 만료되면 앱 사용자가 사용자 풀에 다시 로그인하여 재인증을 해야 합니다. 액세스 토큰과 ID 토큰의 최소값을 5분으로 설정하고 SDK를 사용하는 경우 계속해서 새로 고침 토큰을 사용하여 새 액세스 토큰과 ID 토큰이 검색됩니다. 최소값을 5분이 아니라 7분으로 설정하면 예상 동작을 확인할 수 있습니다.

참고

AWS SDK for Android는 ID 및 액세스 토큰의 최소 유효 기간을 0~30분 사이의 값으로 변경할 수 있는 옵션을 제공합니다. Amplify Android SDK 참조에서 CognitoIdentityProviderClientConfigsetRefreshThreshold() 메서드를 참조하세요.

새 계정에 대한 UnusedAccountValidityDays 시간 제한 전에 사용자가 한 번 이상 로그인하는 한, 사용자 계정 자체는 만료되지 않습니다.

새 새로 고침 토큰(API) 시작

API 또는 호스팅 UI를 사용하여 새로 고침 토큰에 대한 인증을 시작합니다.

새로 고침 토큰을 사용하여 사용자 풀 API에서 새 ID 및 액세스 토큰을 가져오려면 AdminInitiateAuth 또는 InitiateAuth API 작업을 사용합니다. AuthFlow 파라미터에 REFRESH_TOKEN_AUTH를 전달합니다. 권한 부여 파라미터 AuthParameters는 키가 "REFRESH_TOKEN"이고 값은 실제 새로 고침 토큰인 키-값 맵입니다. Amazon Cognito는 API 요청이 모든 챌린지를 전달한 후 새 ID 및 액세스 토큰을 반환합니다.

참고

호스트된 UI를 사용하여 로그인한 사용자의 토큰을 변경하려면 InitiateAuth API 작업을 사용합니다.

새로 고침 토큰 철회

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

참고

새로 고침 토큰을 취소하면 새로 고침 토큰을 사용하여 발급된 모든 토큰이 취소됩니다.

사용자는 GlobalSignOutAdminUserGlobalSignOut API 작업을 사용하여 사용자의 모든 토큰을 취소할 경우 현재 로그인되어 있는 모든 디바이스에서 로그아웃할 수 있습니다. 사용자가 로그아웃하고 나면 다음과 같은 현상이 발생합니다.

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

  • 사용자 풀 서비스에 사용자의 액세스 토큰을 사용할 수 없습니다.

  • 새 토큰을 가져오려면 사용자가 다시 인증해야 합니다. 세션 쿠키는 자동으로 만료되지 않습니다. 모범 사례로서, 애플리케이션은 사용자를 로그아웃 엔드포인트로 리디렉션하여 브라우저에서 세션 쿠키를 강제로 지워야 합니다.

애플리케이션에서 GlobalSignOut API를 사용하면 개별 사용자가 모든 디바이스에서 로그아웃할 수 있습니다. 일반적으로 애플리케이션에서는 이 옵션이 모든 디바이스에서 로그아웃(Sign out from all devices)과 같이 선택 사항으로 제공됩니다. 애플리케이션에서는 사용자의 유효하고, 만료되지 않았으며, 취소할 수 없는 액세스 토큰을 사용하여 이 API 작업을 호출해야 합니다. 사용자는 이 작업을 사용하여 다른 사용자를 로그아웃할 수 없습니다.

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