OAuth (feat. 생활코딩)

나무·2023년 3월 24일
0
post-thumbnail
  • mine = 우리 서비스, user = 사용자, their = 다른 서비스
    • Resource(자원) Server (Their), Resource Owner(user), Client (mine)

    • Authorization Server (인증과 관련된 처리를 전담하는 서버) = Resource Server

      OAuth를 도입할 때 필요한 데이터는 Client ID, Client Secret key, Authorized redirect URLs

ID는 외부에 노출되어도 되지만, Secret key는 절대 지켜!

OAuth 버튼을 만드는 방법은 간단하다 버튼에 URL을

https://resource.server/?client_id=1&scope=B,C&redirect_url=https://client/callback 형식으로

만들면 된다

그래서 Resource Server에서 인증 절차가 끝나면 userID: 1, scope: b, c 라는 인증 정보를 갖게 된다

(* 여기서 scope는 리소스 서버에서 허용하는 기능들 ex. 프로필, 닉네임 등을 의미한다)

이 때, 제 3자간의 인증을 도와주는 임시 비밀번호는 authorization code입니다

유저가 resource server에서 코드를 받아서 클라이언트에게 전달하면 클라이언트 쪽에서 우리가 가진 정보를 토대로 리소스 서버로 다시 정보를 전송합니다 이 때 넘겨야 하는 url은

https://resource.server/token?

grant_type=authorization_code& // 우리가 보내는 토큰의 타입

code=3& // 리소스 서버에서 전달받은 코드

redirect_url=https://client/callbak&

client_id=1&

client_screct=2 // 시크릿 값 중요!! 🌟

이것을 리소스 서버에 전달하면 리소스 오너에게 전달했던 값들이 맞는지 확인하여 모두 일치하면 access token을 발급해준다

그리고 클라이언트에게 acctoken**\footnotesize acctoken**을 전달해주고, 이 토큰은 리소스 서버에 접근할 때 userID 1번에 해당하는 유효한 기능에 대해 권한이 열려있다는 열쇠가 된다

API


리소스 서버 api 문서를 기반으로 인증 정보를 붙여서 리소스 서버에 접근 가능하다 (get, post 등)

get 방식을 더 선호하는데 header에 Bearer <access_token>을 같이 요청해주어야 합니다

refresh token


  • access token은 유효시간이 있기 때문에 시간이 종료되면 api가 응답하지 않기 때문에 refresh token을 이용하여 access token을 재발급 받아와야 합니다
  • 보통 access token 발급시에 refresh token을 같이 발급하지만 아닌 경우도 있다
  • 그래서 서버마다 refresh token을 다루는 방법이 다르기 때문에 확인해야 한다
    • tip! 구글에서는 post로 요청하면 JSON 타입으로 발급해줍니다
profile
🌳

0개의 댓글