OAuth2.0

서영태

Updated:

OAuth2.0

OAuth란, 타사의 사이트에 대한 접근 권한을 얻고, 그 권한을 이용하여 개발할 수 있도록 도와주는 프레임워크

특정 Provider( 구글, 네이버, 카카오등 )로 부터 AccessToken을 발급받고, 그 토큰을 기반으로 원하는 기능을 구현

  • Provider로 부터 Provider의 기능을 사용할수 있는 AccessToken을 발급받고, 이 AccessToken을 이용하여 그 기능 ( 달력, 메일, 로그인등 )을 사용.
  • 여기서 AccessToken을 발급받기 위한 일련의 과정을 인터페이스로 정의해둔 것이 바로 OAuth 라는 것입니다.

OAuth 1.0 OAuth 2.0 차이

oauth2

예) “나는 PMS를 통하여 하이웍스 메일전송을 하겠다” 고 가정했을 때

OAuth용어

  • Resource Owner : 개인정보의 소유자 즉
  • Client : 제 3의 서비스로부터 인증을 받고자 하는 서버 PMS
  • Authorization Server : ‘나’의 개인정보를 저장하고, Token, AuthCode 생성 해주는 하이웍스 서버
  • Resource Server : 서비스 이용하는 하이웍스 서버

AccessToken을 발급받기 위한 Client 등록

Provider에 우리의 서버 PMS를 등록해야 합니다. 다음은 필수 요소

  • Client ID
  • Client Secret
  • Authorized redirect URL

Client ID와 Client Secret은 Authorization Server에서 발급해주는 아이디와 비밀번호 개념입니다. Authorized redirect url은 Client측에서 등록하는 url입니다. 만약 이 url로부터 인증을 요구하는 것이 아니라면, Authorization Server는 해당 요청을 무시하게 됩니다.

hiworksAppReg

OAuth 흐름

oauth1

Authorization Code 요청

GET https://api.hiworks.com/open/auth/authform?client_id=&access_type=offline

Params

  • client_id : 발급받은 client 아이디
  • access_type : online 또는 offline ( refrehs token이 필요한 경우 offline )

Access Token 요청

POST https://api.hiworks.com/open/auth/accesstoken

formdata

  • client_id : 발급받은 client 아이디
  • client_secret : 발급받은 client 비밀번호
  • grant_type : 타입 지정 AccessToken 요청시 ‘authorization_code’
  • auth_code : 발급받은 authorization_code 입력
  • access_type : online 또는 offline ( refrehs token이 필요한 경우 offline )

Response

{ “code”: “SUC”, “msg”: “”, “data”: { “access_token”: “2xxycv2zm9gbb7xp5tr7urg5ixycdemp”, “refresh_token”: “gsfxab509fmhm2y4nj2rjuj5a4y3n10q”, “office_no”: “391341”, “user_no”: “9962656” } }

Access Token 갱신

POST https://api.hiworks.com/open/auth/accesstoken

formdata

  • client_id : 발급받은 client 아이디
  • client_secret : 발급받은 client 비밀번호
  • grant_type : 타입 지정 AccessToken 갱신시 ‘refresh_token’
  • refresh_token : 발급받은 refresh_token 입력
  • access_type : online 또는 offline ( refrehs token이 필요한 경우 offline )

Response

{ “code”: “SUC”, “msg”: “”, “data”: { “access_token”: “il8nqtfus0y7ndlyym2zxyl4yw80jdt1”, “refresh_token”: “rbwr5pb83zlvyve6s9zhbtttejr4ysj1”, “office_no”: “123123”, “user_no”: “1234567” } }

Leave a comment