1. 세션 로그인
로그인 과정
1. Client가 Server로 로그인 요청 ( 아이디, 비밀번호 )
2. 회원정보가 맞는지 확인 ( DB와 비교 )
3. Server가 Session정보 생성 ( 작은 데이터 저장소 )
4. 만들어진 SessionID 응답 ( Server > Client )
5. Client의 Cookie 속에 SessionID 저장
6. 다음 요청부터, SessionID를 함께 보냄 ( 요청보낸 유저가 누군지 알 수 있도록 )
7. Server가 받은 SessionID를, Session에 저장되어 있는 내용과 비교하여 사용자 인증
문제점
네이티브앱 같이 Session이 없는 환경에서 사용이 불가능
-> 토큰 로그인으로 해결
2. 토큰 로그인
1. Client가 Server에 로그인 요청 ( 아이디, 비밀번호 )
2. 회원정보가 맞는지 확인 ( DB 비교 )
3. Server가 Access Token 생성 ( 사용자 정보가 담긴, 고유한 문장 )
4. 만들어진 Access Token 응답 ( Server > Client )
5. Client의 LocalStorage에 Access Token 저장
6. 다음 요청부터, Access Token을 함께 보냄 ( 사용자 정보가 담긴, 고유한 문장 )
7. Server가 받은 Access Token을 받아 사용자 인증
문제점
Access Token을 탈취당하면, 사용자 정보 다 털림 ㄷㄷ
-> Refresh Token으로 해결
3. Refresh 토큰 로그인
1. Client가 Server에 로그인 요청
2. 회원정보가 맞는지 확인
3. Server가 Access Token과, Refresh Token 생성
- Access Token == 사용자 정보가 담긴 고유한 문장, "일정시간 지나면 사용못함" (유효기간)
- Refresh Token == Access Token을 다시 받고자 할때 필요한, 고유한 문장
4. 만들어진 Access Token 응답 ( Server > Client )
5. Client의 LocalStorage에 Access Token 저장
6. 다음 요청부터, Access Token을 함께 보냄 ( 사용자 정보가 담긴, 고유한 문장 )
7. Server가 받은 Access Token을 받아 사용자 인증
8. Server가 받은 Access Token이 유효기간이 지남
9. Client가 오래된 Access Token을 가지고 데이터 요청
10. Access Token이 만료됐다고, Client에게 알려줌
11. Client가 새로운 Access Token을 발급요청
12. Client가 보낸 Refresh Token이, Access Token과 연동된 토근이 맞다면, 새로운 Access Token 발급
12. 새로 발급한 Access Token 응답
문제점
개발 과정이 복잡하다.
-> 좋으니까 하세요.
4. OAuth2.0 로그인
외부서비스의 인증 및 권한을 맡기는 것 ( Google, Naver, Kakao )
위에서 설명한 Access Token + Refresh Token 방식을 사용한다.
1. Client가 앱 내부에 저장되어 있는 버튼을 눌러 OAuth2.0 로그인 요청
- 이때, 요청 속에는 Client ID와, Redirect_URI가 담겨져 있다. ( 개발자가 구현해야하는 부분 )
- Client ID == OAuth 회사( Google )에서, 앱을 구분하기 위해 제공하는 ID
- Redirect_URI == OAuth로 로그인을 완료한 후에,
2. OAuthServer가 로그인 페이지 응답
3. Client가 로그인 요청 ( 아이디, 비밀번호 )
4. OAuthServer가 정보확인하고, 인증코드 발급 & 전송
5. Client가, 받은 인증코드를 사용해 Redirect_URI로 접속해서, Access Token 요청
6. OAuthServer가 정보확인하고, Access Token 및 Refresh Token 발급 & 전송
7. Client의 LocalStorage안에 토큰 저장
8. 로그인 완료처리, 사용자 데이터 보여줌
9. 이후에 OAuth의 기능을 사용해야할때 마다, Access Token을 함께 보냄 ( Client > OAuthServer )
반응형