작성
·
268
0
세션이 아닌 REST API로 접근을 한다고 했을 때, 어떤식으로 구현을 해야 하는지 질문을 드립니다.
우선 생각했던 방법은 로그인 시에 각 oAuth 제공 플랫폼이 주는 고유 식별 값이 있으니 그걸 DB에 저장하고, 매 Request마다, accessToken의 유효성 검사 및, 고유 식별자 값이 DB에있다면 DB에 접근, 없으면 회원가입 이러한 방식으로 구현하려 했으나, 모든 Request마다, oAuth서버에 접근해서 알아오는 것이 과연 맞는가 생각해보게 되었습니다.
혹시 accessToken과 refreshToken, expire을 DB에 저장해놓고 있고, 내부 로직으로만 확인하고 독자적으로 저만의 JWT를 구성하고 인증을한 다음 해당 플랫폼의 정보에 접근할 때만 oAuthAccessToken을 사용하면 되는 것인지요...
조언부탁드립니다...
답변 3
1
카카오 로그인 때 보내주는 accessToken과 refreshToken은 그 이후로 카카오 API를 호출할 때만 의미가 있습니다. 독자 API 서비스를 할 때는 accessToken과 refreshToken 모두 직접 구현하셔야 합니다.
0
아 현재 로컬전략이아닌 카카오로만 로그인을하려고하고있습니다.
카카오로 로그인할 경우, 카카오가 최초로그인시에
유저식별자 aceessToken refreshToken 두 토큰의 만료시간 이렇게보내주는데, 저의 궁금점은 저의 독자 api서비스시에, 이 acessToken의 유효성을 매 request마다 카카오에 확인을해야하는지,
아니면 제 서비스만의 token을만들어 그것으로 유저인증 및 인가를진행하고, 카카오 서비스를 이용할때만
카카오 accessToken을 인증하면되는것 인지 였습니다.
혹시 두방법 둘다 오답일까요?ㅠ
0
보통 accessToken은 DB에 저장하지 않고 클라이언트로 보내고, refreshToken과 고유식별자는 DB에 저장합니다(refreshToken은 redis같은 메모리 서버에 저장해도 됩니다).
accessToken(유효시간 5분~1시간)이 유효하다면 유효한 동안에는 refreshToken(1시간~며칠)이나 고유식별자는 검사하지 않고 accessToken으로 모든 걸 다 허용합니다. accessToken이 만료되었다면 refreshToken으로 재발급하는 것이고요. refreshToken마저 만료되었다면 다시 로그인하거나 그래야 합니다. 고유식별자는 id이므로 바뀔 일이 없으니 저장하면 됩니다.
JWT는 토큰의 종류로 accessToken을 JWT 형식으로 만들면 좋습니다. 정보를 담을 수 있어 accessToken을 더 적극적으로 쓸 수 있습니다.