-
OAUTH 2.0 정리학습/개발노트 2022. 10. 19. 21:09
용어 정리
ex) 티스토리에서 카카오 로그인
[ Target ]
Resource Owner : 유저, 사용자
Client Server : 애플리케이션 제공서버 ( 티스토리 )
Resource Server : 인증, 권한 부여 서버 ( 카카오 )
[ Jargon ]
Client Id : Client Server의 고유 ID
Client Secret : Client Server의 비밀번호
Redirect URL : Client Server에서 Resource Server에 인증을 요청한 이후 Resource Server가 Client Server에 응답값을 전송하기 위한 URL
Scope list: 권한 목록
Authorization code : Resource Server가 승인한 코드
티스토리 카카오톡 로그인 절차
0. 등록
Oauth 프로토콜을 제공하는 서버에 등록
ex) FaceBook, Twitter, Google, KakaoTalk, Naver 등 ...
1. Resource Owner 인증
1-1 Resource Owner > Client Server
로그인 버튼 클릭
1-2 Client Server > Resource Owner (브라우저에서 자동으로 넘어감) > Resource Server
Client ID, scope list, Redirect URL가 담긴 URL 전송
Resource Server에 Resource Owner가 로그인이 되어있지 않은 경우 1-3
로그인이 되어있는 경우 2로 넘어감
1-3 Resource Server > Resource Owner
로그인 창 반환
1-4 Resource Owner > Resource Server
로그인 요청
로그인 실패 : 종료
로그인 성공 : Client id와 Redirect URL를 비교
비교 실패 : 종료
비교 성공 : 1-5
1-5 Resource Server > Resource Owner
권한 허용 여부 창 반환
1-6 Resource Owner > Resource Server
권한에 대한 응답값 확인
권한 허용안함 : 종료
권한 허용 : Resource Server는 User ID와 Scope를 저장해 권한 동의 이력을 관리
2, Resource Server 인증
2-1 Resource Server > Resource Owner (브라우저에서 자동으로 넘어감) > Client Server
Resource Server는 로그인이 완료되면 Authorization code를 생성
Redirect주소에 Authorization code를 담아 전송 ( Location 헤더에 담아 전송하면 Client Server가 자동 호출)
2-2 Client Server > Resource Server
Authorization Code, Redirect URL, Client ID, Client Secret 전송
Resource 서버는 Authorization Code가 발급된 서버를 검증
검증 값 : Client id, Client Secret, Redirect URL
3. Access Token 발급
Resource Server
Authorization Code 삭제, Access Token 생성
3-1 Resource Server > Client Server
Access Token 전송
4. API에서 사용
방식 1 : 요청 헤더안에 Authorization : Bearer 값에 Access Token을 넣기
Authorization : Bearer ( Access_Token )
방식 2 : API 호출 URL에 query parameter로 전송
https://www.API_URL?access_token=?
정리 : 로그인이 된 유저는 Scope( 허용된 권한 )에 접근할 수 있다.
5. Refresh Token
Access Token의 유효시간은 짧게 설정된다.
5-1 : Access Token으로 요청
만료 신호
5-2 : Access Token과 Refresh Token으로 요청
Refresh Token이 검증이 완료되면 Access Token과 Refresh Token을 재발급해 넘겨준다.
* Refresh Token이 사용된다면 Access Token을 넘겨주는 3-1에서 Refresh Token을 같이 전송한다.
6. Refresh Token 만료
처음부터 다시 시작.
'학습 > 개발노트' 카테고리의 다른 글
[JWT] 어디에 저장하는게 좋을까? (1) 2022.10.28 FINAL 키워드의 집착을 버려본다. (0) 2022.10.14