- 최신
- 최다 투표
- 가장 많은 댓글
안녕하세요 KKH 님,
amplify-android version 2 라이브러리에서 SESSION_EXPIRED 에 대한 질문을 주셨습니다.
Q1. SESSION_EXPIRED 이벤트 전달받는 방법.
Q1-1) refeshToken이 만료된 시점에 Amplify.Auth.fetchAuthSession을 호출하면 Auth.Hub에서 SESSION_EXPIRED 이벤트를 수신받나요?
A1-1)
네 맞습니다.
Amplify.Auth.fetchAuthSession
에서 내부적으로 호출되는 _fetchAuthSession
에서 authentication session 로직을 다루고, authStateMachine 상태 머신을 사용하여, 콜백의 성공과 에러를 호출합니다.
_fetchAuthSession
에서 SessionExpiredException 이 발생한 경우 Auth.Hub에 SESSION_EXPIRED
이벤트를 전송하게 됩니다.
자세한 사항은 다음 문서를 참고하세요.
.
Q1-2) 어떻게 refreshToken 만료되었을 때 어떤 동작을 통해서 Auth.Hub에서 AuthChannelEventName.SESSION_EXPIRED 이벤트를 수신받을 수 있나요?
A1-2)
위와 같은 이벤트 처리를 위해서, Amplify Hub 의 subscribe 함수를 사용하여 이벤트를 수신받을 수 있습니다.
자세한 사항은 다음 문서를 참고하세요.
Q2. Session Refresh
Q2-1) Session Refresh 가 어떤 의미인가요?
A2-1)
Amazon Cognito 에서 Session 을 Refresh 한다는 것은 refresh token 으로 만료된 ID token 과 access token 을 새로 발급 받는 것을 말합니다.
.
Q2-2) access 토큰이 만료되었다면 refersh 토큰을 통해 access 토큰을 발급하고, refresh토큰이 만료되었을 때, Auth.Hub에 AuthChannelEventName.SESSION_EXPIRED 이벤트를 받을 수 있는건가요?
A2-2)
네 맞습니다.
Amplify for Android 에서는 유효한 refresh token 이 존재할 때, 만료된 사용자의 ID token 과 access token 을 자동으로 refresh 합니다.
refresh token 만료되면, 자동으로 refresh 하는 과정에서 SessionExpiredException
이 발생하며 Hub 에 AuthChannelEventName.SESSION_EXPIRED
이벤트가 전송됩니다.
하지만 Amplify for Android 에서 Auth.signIn API
가 아닌 federateToIdentityPool API
를 사용하는 경우라면, 수동으로 token refresh logic 를 처리하고 federateToIdentityPool API 에 새로운 token 을 제공해야 합니다.
답변이 도움이 되었기를 바라며, 추가로 궁금하신 내용이 있을 시 편하게 댓글 남겨주세요 :)
관련 콘텐츠
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 2년 전
자세한 답변 감사드립니다! 문서에서 정확하기 이해하기 어려운 부분을 정확하게 이해할 수 있었습니다. 감사합니다.