소셜로그인
이란, 별도의 회원가입 절차 없이 소셜 미디어 계정을 이용해 간편하게 새로운 앱이나 웹 사이트를 이용할 수 있는 기능입니다.
RefreshToken
로그인 요청 후, 서버에서 토큰을 프론트에게 넘겨줄 때, 토큰을 하나 더 만들어서 넘겨주는데, 여기서 하나 더 만든 토큰을 Refresh token이라고 하며, 기존에 발행하던 토큰은 Access token
이라고 합니다.
Refresh token
은 Access token이 만료되었을 때, Access token을 다시 발행하기 위한 용도로 쓸 것이기 때문에 Access token보다 유효기간이 길어야 합니다.
✅ 그렇다면, 왜 Refresh Token
을 사용해야 하는 걸까요?🤔
☞ Access Token의 경우, 해킹을 당했을 때 보안에 취약하다는 단점이 있습니다. 이 단점을 보완하기 위해 유효기간을 짧게 한 토큰의 경우도 그만큼 사용자가 로그인을 자주하여 새롭게 토큰을 재발급받아야 하므로 불편함이 있는데요.(토큰의 유효기간을 늘리면 보안에 더 취약해지기 때문에 보안강화를 위해 유효기간을 짧게 설정하기도 함.) 이러한 점들을 보완하는 것이 바로 Refresh Token
입니다.
1️⃣ Refresh token은 access token과 같은 형태의 JWT이며, 처음에 로그인을 완료할 때
access token과 동시에 발급이 됩니다.
2️⃣ Refresh token은 access token보다 긴 유효기간을 가지면서 access token이 만료
되었을 때, 새로 발급해주는 열쇠🔑가 됩니다.
3️⃣ Access token은 보안에 취약하여 해킹 당하면 정보가 유출됩니다. 하지만 유효기간을 짧게
해두면(30분 ~ 2시간) 그 기간 안에서만 사용이 가능하기 때문에 보안이 강화됩니다.
4️⃣ Refresh token의 유효기간이 만료되면, 사용자는 새로 로그인을 해야 합니다. Refresh
token도 해킹 위험에 완전히 배제되는 건 아니기 때문에 적절한 유효기간을 설정해주는
것이 좋습니다.(2주 ~ 2달)
1️⃣ 사용자가 로그인을 합니다.
2️⃣ 서버에서 사용자가 입력한 아이디와 비밀번호를 회원 DB에서 값을 비교합니다(인가=Authorization)
3️⃣ 로그인이 완료되면 AccessToken(→Body), RefreshToken(→Cookie) 을 발급합니다.
4️⃣ 만료된 AccessToken을 첨부하여 요청을 보냅니다.
5️⃣ 서버가 Authorization(인가)을 해보면서 토큰이 만료되었음을 확인하고 에러를 반환합니다.
6️⃣ 토큰이 만료 되었음을 확인하고 쿠키와 함께 토큰 재발급 요청(RestoreAccessToken)을 보냅니다.
7️⃣ 쿠키에 RefreshToken을 확인해(인가=Authorization) 새로운 AccessToken을 발급해서 반환합니다.
8️⃣ 재발급된 토큰과 함께 실패한 요청에 대해 재요청을 보냅니다.
9️⃣ 정상적으로 요청에 대한 값을 반환합니다
☞ AccessToken이 만료가 될 때마다 4️⃣~7️⃣번의 과정을 계속 거칠 필요는 없습니다.
AccessToken의 유효기간을 프론트에서 알 수 있으며, 토큰이 만료 되었다면 프론트에서 API 요청 전에 바로 재발급 요청을 할 수도 있습니다.
이미지(2) 출처 - Authorization Process : https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbdacfcc9-b9cd-4524-9ca2-02dc35f7ed2e%2FUntitled.png?id=176ea6fd-52e3-4ade-b0c8-1e11978af1e5&table=block&spaceId=9c9b02bc-6cb6-4924-bf38-dad25e0fe77b&width=1320&userId=7a6851f4-cb8f-4032-992b-9a3aa80a7636&cache=v2
https://www.okta.com/kr/blog/2020/08/social-login/ - Okta | 소셜로그인이란?
https://velog.io/@hyunju-song/%EC%86%8C%EC%85%9C%EB%A1%9C%EA%B7%B8%EC%9D%B8%EA%B8%B0%EB%8A%A51OAuth - Hazel | 소셜로그인 기능 구현_그 원리와 절차에 대해
23일차 노션 강의자료 참고 - codecamp
https://tecoble.techcourse.co.kr/post/2021-07-10-understanding-oauth/ - OAuth 개념 및 동작 방식 이해하기