OAuth2.0
OAuth2.0
OAuth란, 타사의 사이트에 대한 접근 권한을 얻고, 그 권한을 이용하여 개발할 수 있도록 도와주는 프레임워크
특정 Provider( 구글, 네이버, 카카오등 )로 부터 AccessToken을 발급받고, 그 토큰을 기반으로 원하는 기능을 구현
- Provider로 부터 Provider의 기능을 사용할수 있는 AccessToken을 발급받고, 이 AccessToken을 이용하여 그 기능 ( 달력, 메일, 로그인등 )을 사용.
- 여기서 AccessToken을 발급받기 위한 일련의 과정을 인터페이스로 정의해둔 것이 바로 OAuth 라는 것입니다.
OAuth 1.0 OAuth 2.0 차이
예) “나는 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는 해당 요청을 무시하게 됩니다.
OAuth 흐름
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