ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] - 231023 OAuth
    TIL 2023. 10. 23. 23:39
    반응형

    # 부스트캠프 멤버십 8기

    📌Facts

    • OAuth 2.0
      • OAuth의 배경
      • 용어 정리
      • 등록 방법
      • 인증
      • Access Token 발급

     


    📚 Findings

    <참고> 생활코딩 WEB2 - OAuth 2.0

    https://www.youtube.com/watch?v=hm2r6LtUbk8&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-

    OAuth의 배경

    안전하게 우리가 만든 서비스를 외부(Google, Facebook, Twitter) 서비스와 상호작용 할 수 있다.

    외부 서비스들의 계정들의 대한 정보(id, pw)를 받아오는 방법은 서로 아주 찜찜하다...

     

    user가 id, pw 대신에 accessToken을 가지게 된다. 그리고 우리 서비스는 accessToken을 활용해 외부 서비스와 상호작용할 수 있다.

    • id, pw가 아니다.
    • 필요한 서비스만 부분적으로 허용할 수 있다.

     

    용어정리

    Resource Owner: 유저

    Client: 내 서비스

    Resource Server: 그들의 서비스

     

    등록방법

    Client ID: 식별 ID

    Client Secret: 절대 노출되면 안됨
    Authorized redirect URIs: 접속하는 url

     

     

    Resource Owner의 승인

    1. Resource Server는 Resouce Owner가 로그인이 되어있는지 확인한다. 안되어있으면 로그인 페이지를 띄워줌.

    2. 로그인이 되어있으면, 요청 URL에 담긴 Client_id 값을 자기가 가지고 있는지 확인

    3. 그리고 redirect URL이 일치하는지 확인

    4. 일치하면, scope 해당하는 권한을 client에게 부여할 건지 확인하는 메시지 전송

    4번 단계

    5. 허용하면 user_id와 허용한 scope들을 서버에 저장

     

    인증(Resouce Server의 승인)

    Client가 Server에게 authorization code: 3을 전송해서 accessToken을 발급받기 바로 전이다.

    Resouce Owner를 통하지 않고 Resource Server로 바로 전송한다.

    Resource Server는 이 값들을 확인해서 일치하면 accessToken 발급을 진행한다.

     

    Access Token 발급

    Resource Server는 authorization code로 인증을 진행했으니 재인증 안하기 위해 code를 지운다.

    그리고 accessToken을 발급한다. 그리고 Client에게 토큰을 응답해준다.

     

    액세스 토큰은 이 user id 1이라는 사람에 대한 b,c 에 대한 정보를 access token 4를 가진 사람에게 허용해 줘야겠다. 라고 동작하게 된다.

     

    추가로, 보통 access tokenrefresh token을 같이 발급해준다.

    access token 수명이 끝나면 resource server는 invalid token error를 던져준다. 그러면 refresh token을 통해서 access token을 새로 발급 받는다.

     

     

    form에서 post 방식으로 구글 api로 전송
    토큰 정보와 언제까지 유효한지 보내줌

     

     


    😁 Feelings

    OAuth 2.0이 어떤 기술인지, 어떻게 서버와 클라이언트 사이에서 동작하는 지 원리가 궁금했었는데, 생활코딩 강의 덕분에 전반적인 흐름을 정리할 수 있었다. 이제, 여러 api를 사용해보면서 각각의 서비스들이 어떤 것들을 요구하는지 직접 개발해보면서 공부해봐야겠다.

     


    🧭 Future

    내일은 github login을 위한 OAuth 코드를 직접 짜보겠다.

    반응형
Designed by Tistory.