소셜로그인 프로세스의 이해

turnaroundwoo·2023년 2월 12일
0

11st Blogs

목록 보기
16/52

소셜로그인 이란, 별도의 회원가입 절차 없이 소셜 미디어 계정을 이용해 간편하게 새로운 앱이나 웹 사이트를 이용할 수 있는 기능입니다.


AccessToken & RefreshToken


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달)


Token Authorization Process


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 요청 전에 바로 재발급 요청을 할 수도 있습니다.


🗒 출처


0개의 댓글