OAuth ?
1. HTTP에 대한 사전 지식
1) 들어가기 전에
(1) http://www.naver.com/logo.png 파일을 요청하는 HTTP Request?
GET /logo.png HTTP/1.1
Host: www.naver.com
Method SP Request_URI SP HTTP-Version CRLF 순으로 출력된다.
위의 값에서 Method = GET, Request_URI=/logo.png, HTTP-Version=HTTP/1.1이다.
Method의 종류는 다음과 같다.
Method | 설명 |
---|---|
OPTIONS | 시스템에서 지원되는 메소드 종류를 확인할 수 있다. |
GET | URI(URL)가 가전 정보를 검색하기 위해 서버 측에 요청하는 형태 |
HEAD | GET방식과 유사한 방식이나 웹 서버에서 헤더 정보 이외에는 어떤 데이터도 보내지 않는다. |
POST | 폼 입력 정보가 헤더 정보에 포함되지 않고 데이터 부분에 요청 정보가 들어간다. |
PUT | POST와 유사한 전송 구조를 가지기 대문에 헤더 이외에 메시지가 함께 전송된다. |
DELETE | 원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT과는 반대 개념의 메소드다. |
TRACE | 원격지 서버에 Loopback 메시지를 호출하기 위해 사용된다. |
CONNECT | 웹 서버에 프락시 기능을 요청할 대 사용된다. |
extension-method |
출처 : http://gyrfalcon.tistory.com/entry/HTTP-응답-코드-종류-HTTP-메소드-종류
(2) 위와 같이 요청 했지만 해당 자원이 없을 때 서버의 응답은?
HTTP/1.1 404 Not Found
HTTP-Version SP Status-code SP Reason-Phrase CRLF 순으로 출력된다.
위의 값에서 HTTP-Version=HTTP/1.1, Status-code=404, Reason-Phrase=Not Found이다.
Status-Code는 40개 정도가 존재하고 그중 많이 볼 수 있는 Status-Code를 추려보면 다음과 같다.
Status-Code | Reason-Phrase |
---|---|
200 | OK |
301 | Moved Permanently |
302 | Found |
304 | Not Modified |
401 | Unauthorized |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowedad |
500 | Internal Server Error |
503 | Service Unavailable |
2. OAuth
1) 용어
-
Authentication
인증; 내 신원을 확인함.
-
Authorization
허가; 내 신원을 확인하고, 내가 무엇을 할 수 있는지 제한
OAuth는 여기에 해당한다. 인증을 해주고 정보를 요청하기 때문에
2) 역할
-
Resource server
자원을 호스팅하는 서버(예; 페이스북 사진 비디오 등)
-
Resource owner
사용자
-
Client
Resource Server에서 제공하는 자원을 사용하는 어플리케이션
(예; 페이스북의 뉴스를 모아서 보여주는 앱) -
Authorization Server
사용자의 동의를 받아서 권한을 부여하는 서버,
일반저그올 Resource Server와 같은 URL 하위에 잇는 경우가 많음.
3. OAuth 2.0
1) 인증 종류
종류 | 설명 |
---|---|
Authorization Code Grant | 웹 서버에서 API를 호출하는 등의 시나리오에서 Confidential Client가 사용하는 방식 |
Implicit Grant | token과 scope에 대한 스펙 등은 다르지만 OAuth 1.0a와 가장 비슷한 인증 방식 |
Resource Owner Password Credentials Grant | Client에 아이디/패스워드를 저장해 놓고 직접 access token을 받아오는 방식 |
Client Credentials Grant | 어플리케이션이 Confidential Client일 때 id와 secret을 가지고 인증하는 방식 |
2) 인증 방식
- 사용자가 브라우저에 접속하여 어플리케이션을 요청하면 어플리케이션은 응답을 준다.
- 인증을 위한 사이트에 따라 로그인 버튼을 클릭한다.
- 브라우저는 어플리케이션에서 로그인 요청을한다.
- 어플리케이션은 브라우저에 302 Found를 보낸다.
- 브라우저는 인증 서비스에 요청을 보낸다.
- 인증 서비스는 브라우저에 로그인 페이지를 보여준다.
- ID/PW를 입력하고 로그인을 한다.
- ID/PW를 브라우저는 인증 서비스에 전달한다.
- 인증 서비스는 다시 302 Found를 브라우저로 보낸다.
- 브라우저, 어플리케이션, 인증 서비스 순으로 요청이 보내진다.
- 정상적으로 인증이 되었을 경우 브라우저에게 응답이 보내지고 인증이 완료된다.
4. 마무리
처음으로 OAuth 교육을 들으면서 사용해 보지 못한 OAuth에 대한 두려움을 조금이나마 떨칠 수 있던거 같다. 과거에 OAuth 인증 코드를 사용하여 fitbit을 인증받아 데이터를 수집해 온적 말고는 OAuth를 처음들어봤다. 아직 아무것도 하지도 않고 시작도 안한 상태이지만 그렇게 어려울거 같지 않다는 좋은 생각이 든다.