persistAccessToken에 대해서

안녕하세요 카카오 로그인을 구현하려고 하는 학생입니다.
팝업 창으로 로그인 (자바스크립트 sdk)를 이용해서 로그인을 하면 persistAccessToken 옵션이 true이기때문에 암호화된 액세스토큰이 로컬스토리지에 자동저장이 되더라구요

이 토큰은 세션이 종료되어도 액세스토큰을 사용할 수 있게하는 역할이라고 본거 같습니다.
근데 이 부분이 좀 헷갈리더라구요
액세스토큰은 자체적으로 만료시간이 정해져있기때문에 세션이 종료되어도 세션이랑 상관없이 토큰 사용이 가능한게 아닌건가요?
그리고 이 암호화된 토큰이 어떤 과정을 거치기에 세션이 종료되어도 액세스 토큰을 사용할 수 있게하는지도 궁금합니다.

또한, 해당 토큰이 액세스 토큰을 사용할 수 있게 하는 역할이라면 이 토큰이 탈취당했을때 보안상으로 문제가 생길수있는건가요? (ex. 암호화된 해당토큰을 이용해서 실제 액세스토큰을 받아올수있다던지…)


또한 팝업 방식으로 로그인 하는 방법이 oauth2.0의 어떤 방식인지 궁금합니다.
검색을 해보니 oauth2.0은 인가코드 승인(Authorization Code Grant), 암시적승인( Implicit Grant)등 총 네개의 방식이 있다고 알고있습니다. 팝업 방식으로 로그인은 인가코드를 받아오는 과정이 적혀있지 않았는데, 그렇다면 이 방법은 인가코드 승인 방식이 아닌 암시적 승인 방식으로 이루어지는건가요?
만약 암시적 승인 방식이라면 액세스토큰이 url 파라미터에 담겨서 넘어오는건지 궁금합니다


마지막으로, 팝업방식으로 로그인 부분의 문서를 보면 [함수 호출 시 팝업으로 카카오 로그인 동의 화면이 표시됩니다. 로그인 요청 결과 토큰이 발급되며, 이 토큰은 SDK 내부적으로 사용되고 있기 때문에 별도의 처리가 필요하지 않습니다.] 라고 적혀있는데, 그렇다면 해당 방식인 Kakao.Auth.login 함수를 통해 로그인이 이루어지면 Kakao.Auth.setAccessToken이 내부적으로 동작해서 이 과정을 생략해도 토큰이 자동등록되는건가요?

   const loginWithKakao = function () {
            console.log(window.Kakao)
            window.Kakao.Auth.login({
                scope: 'profile_nickname, account_email, gender, age_range',
                success: getKakaoAccount,
            })
        }
        const getKakaoAccount = function () {
            window.Kakao.API.request({
                url: '/v2/user/me',
                success: res => {
                    const kakao_account = res.kakao_account
                    state.nickname = kakao_account.profile.nickname
                    state.email = kakao_account.email
                },
                fail: error => {
                    console.log(error)
                },
            }).then(() => {
                if (state.token) {
                    state.istoken = true
                    store.commit('SET_TOKEN', state.token)
                } else {
                    state.istoken = false
                }
            })
        }

으로 코드를 짰는데 Kakao.Auth.setAccessToken 과정이 없어도 동작이 되길래 질문드립니다!

안녕하세요.

액세스토큰을 로컬스토리지에 저장하면, 브라우저가 닫혔다가 열려도 혹은 다음페이지로 이동하더라도 JS SDK에서는 이전에 사용하던 액세스토큰을 이어서 사용할 수 있습니다. 이렇게 사용하는 토큰이 만료되었으면 401 unauthorized오류가 발생하게 됩니다.

즉, 토큰 저장기능은 토큰을 사용자의 브라우저 세션과 상관없이 계속 사용할 수 있게 하기위한 기능이고 해당 토큰이 만료되어 있으면 사용하지 못합니다.


네이티브 로그인은 Implicit Grant방식을 사용하지 않고, OAuth2.0 PKCE 스팩을 따릅니다.


persistAccessToken 옵션이 false가 아니라면 토큰을 자동으로 로컬에 저장합니다.