ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.