안드로이드 Amplify v2(amplify-android version 2) Auth // SESSION_EXPIRED 이벤트 전달받는 방법

0

안녕하세요. 저는 안드로이드 Amplify 라이브러리를 aws-sdk-android -> amplify-android version 2 로 마이그레이션을 진행하고 있습니다.

1.현재 Auth.Hub 를 통해서 AuthChannelEventName.SESSION_EXPIRED 이벤트를 수신했을 때 로그아웃 후 로그인을 유도하도록 로직이 짜여져 있습니다. refreshToken이 만료된 시점에 Amplify.Auth.fetchAuthSession을 호출하면 Auth.Hub에서 SESSION_EXPIRED 이벤트를 수신받나요? 아니라면 어떻게 refreshToken 만료되었을 때 어떤 동작을 통해서 Auth.Hub에서 AuthChannelEventName.SESSION_EXPIRED 이벤트를 수신받을 수 있나요?

  1. session을 refresh 한다는게 어떤 의미인가요? session을 refresh한다는게 access 토큰이 만료되었다면 refersh 토큰을 통해 access 토큰을 발급하고, refresh토큰이 만료되었을 때, Auth.Hub에 AuthChannelEventName.SESSION_EXPIRED 이벤트를 받을 수 있는건가요?
KKH
gefragt vor 6 Monaten267 Aufrufe
1 Antwort
5
Akzeptierte Antwort

안녕하세요 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 을 제공해야 합니다.


답변이 도움이 되었기를 바라며, 추가로 궁금하신 내용이 있을 시 편하게 댓글 남겨주세요 :)

profile picture
Ayeon_K
beantwortet vor 6 Monaten
  • 자세한 답변 감사드립니다! 문서에서 정확하기 이해하기 어려운 부분을 정확하게 이해할 수 있었습니다. 감사합니다.

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen