AWS CLI를 사용하여 Amazon Cognito에서 JWT 토큰을 취소하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Cognito 사용자 풀에서 발행된 JSON 웹 토큰(JWT) 토큰을 취소하고 싶습니다.

간략한 설명

Amazon Cognito 새로 고침 토큰은 사용자가 사용자 풀에 로그인한 후 30일 후에 만료됩니다. 앱 클라이언트 새로 고침 토큰 만료를 60분에서 10년 사이에 설정할 수 있습니다. 자세한 내용은 새로 고침 토큰 사용을 참조하세요.

새로 고침 토큰을 실시간으로 취소할 수도 있습니다. 이렇게 하면 새로 고침 토큰이 추가 액세스 토큰을 생성할 수 없습니다. 새로 고침 토큰으로 의해 이전에 발급된 모든 액세스 토큰은 유효하지 않습니다.

새로 고침 토큰을 취소해도 병렬 사용자 세션과 연결된 다른 새로 고침 토큰에는 영향을 미치지 않습니다.

해결 방법

JWT 토큰을 취소하려면 앱 클라이언트에 따른 관련 지침을 참조하세요.

참고:

암호가 없는 앱 클라이언트

AWS CLI 명령 admin-initiate-auth를 실행하여 관리자로 인증 흐름을 시작하여 ID, 액세스 토큰 및 새로 고침 토큰을 가져옵니다.

$ aws  --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters USERNAME=user-name,PASSWORD=your-password --auth-flow ADMIN_NO_SRP_AUTH

다음과 유사한 출력이 나타납니다.

{
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "AccessToken": "eyJra....",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "ey.._9Dg",
        "IdToken": "ey..DU-Q"
    }
}

AWS CLI 명령 revoke-token을 실행하여 다음과 유사한 새로 고침 토큰을 취소합니다.

$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJra....

참고: 출력이 수신되지 않습니다.

새 액세스 토큰과 ID를 받기 위해 동일한 새로 고침 토큰을 사용하여 테스트합니다.

$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters REFRESH_TOKEN=eyJra....tw --auth-flow REFRESH_TOKEN_AUTH

다음과 유사한 새로 고침 토큰이 취소된 출력이 수신됩니다.

Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked

암호가 있는 앱 클라이언트

지침에 따라 Python 스크립트를 사용하여 SecretHash 값을 생성합니다.

AWS CLI 명령 admin-initiate-auth를 실행하여 관리자 권한으로 인증 흐름을 시작합니다. 그러면 ID, 액세스 토큰 및 새로 고침 토큰이 제공됩니다. 이 명령은 다음과 유사합니다.

$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters USERNAME=user-name,PASSWORD=your-password,SECRET_HASH=IkVyH...= --auth-flow ADMIN_NO_SRP_AUTH

다음과 비슷한 출력이 표시됩니다.

{
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "AccessToken": "eyJra....",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "eyJjd....",
        "IdToken": "ey..YQSA"
    }
}

AWS CLI 명령 revoke-token을 실행하여 새로 고침 토큰을 취소합니다.

$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJjd... --client-secret 1n00....

동일한 새로 고침 토큰을 사용하여 테스트를 실행하여 새 액세스 토큰과 ID를 얻으세요.

$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters REFRESH_TOKEN=eyJjdH.... --auth-flow REFRESH_TOKEN_AUTH

새로 고침 토큰이 취소되었다는 출력이 표시됩니다.

Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked

새로 추가된 클레임

두 개의 새로운 클레임인 origin_jtijti가 액세스 토큰과 ID 토큰에 추가되어 앱 클라이언트의 토큰 크기가 커졌습니다.

jti 클레임은 JWT에 대한 고유 식별자를 제공합니다. 동일한 값을 다른 데이터 객체에 할당할 수 없도록 식별자 값을 할당해야 합니다. 앱 클라이언트가 여러 발급자를 사용하는 경우 다른 값을 사용하여 충돌을 방지합니다.

참고: jti 클레임은 선택 사항입니다. 자세한 내용은 Internet Engineering Task Force 웹 사이트에서 RFC-7519)을 참조하세요.


관련 정보

JSON 웹 토큰 확인

새로 고침 토큰 취소

Amazon Cognito JSON 웹 토큰의 서명을 디코딩하고 확인하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음