인프런:생활코딩 - Web2 - OAuth 2.0 학습 정리
1. 정의
1) facebook, twitter의 기능을 현재 운영하고 있는 서비스에서 접근, 생성, 수정, 삭제 등을 수행하고자 할 때, 각 권한
에 대한 접근제한이 요구되며 이 때 운영하는 서비스는 OAuth를 이용해 접근하고자 하는 서비스에게 요구되는
권한이 할당된 AccessToken을 요청받아 관련한 작업을 수행할 수 있음
2. 용어 정리
1) 접근하고자 하는 외부 서비스 : Resource Server (데이터를 가지고 있는 서버), Authorization Server (인증 서버)
2) 해당 정보의 주체자, 사용자 : Resource Owner
3) 현재 운영하고 있는 AccessToken 접근 서비스 : Client
3. 처리 과정
1) 공통적으로 가지고 요청하는 정보
- Client ID : 현재 만들고 있는, 운영하고 있는 어플리케이션 식별자
- Client Secret : 비밀번호 (절대 외부에 노출되면 안됨)
- Authorized redirect URIs : 권한을 부여하는 과정에서 Authorized code를 전달함, 이 코드를 전송할 주소
4. Resource Owner의 승인
1) Resource Owner는 처음 로그인을 할 경우, 외부 서비스에 1회 직접 로그인 한다
- 로그인 후, 현재 접속하고 있는 서비스에 어떤 권한을 제공할지 승인한다
- Resource Server는 Client id가 맞는지, 접속한 redirect URL이 동일한지 확인한다
- 맞다면, Resource Server는 해당 권한 요청을 사용자 DB에 저장한다.
5. Resource Server의 승인
1) Resource Server는 사용자 로그인과 권한 승인 후 바로 토큰을 발급하지 않는다.
- 임시비밀번호 authorization code를 사용자에게 전송한다
- 해당 임시번호는 http 헤더에 location으로 redirect 주소와 함께 전달된다
- redirect 주소는 현재 접속한 서비스 callback 주소로 이를 통해 client가 임시 비밀번호를 알게 된다
- client는 전달받은 임시비밀번호를 이용해 Resource Server에게 토큰을 요청한다
- Resource Server는 Client Id, Client Secret, Authorization code, Redirect uri를 확인한다
* 해당 방법 외, 추가적인 절차가 더 있는 경우가 있다.
6. 액세스 토큰 발급
1) AccessToken 발급
- 최초 요청 메시지의 Authorization code은 만료, 삭제시킨다.
- AccessToken을 생성하고 Client에게 전달한다. Client는 이 정보를 DB에 저장한다
- Client는 AccessToken을 사용하여 Resource Server에 주어진 권한 내 작업 수행 및 데이터를 요청
7. API 호출
1) 각 서비스들은 API 문서를 제공함 예) 구글 캘린더
- 원 주소 : URIs relative to https://www.googleapis.com/calendar/v3
- API 하위 주소 : get = GET /calendars/calendarId/acl/ruleId
delete = DELETE /calendars/calendarId/acl/ruleId
- 원 주소 뒤에 원하는 하위 주소의 정보를 붙여서 요청하면 된다
2) 요청하는 방법은 가장 많이 사용되는 것으로 2가지가 있다
- Access Token을 쿼리 스트링 파라미터러 전달하는 방식
- GET https://www.googleapis.com/drive/v2/files?access_token=
- Access Token을 HTTP header의 Authorization: Bearer로 입력하는 방식
- GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
8. Refresh Token
1) Access Token은 기본적으로 생명 주기가 있다.
- 갱신을 매번 사용자의 로그인 과정으로 수행하기에는 무리가 있다
2) 자동으로 Access Token을 갱신하는 방법
- 표준 문서에는 Acces Token과 Refresh Token을 같이 받는걸로 되어 있지만,
실재 실무 구현에서는 그렇지 않을 경우도 많다
- Refresh Token은 Access Token과 같이 발급되며 요청하는 방법, 갱신 방법 등은
각 서비스별로 다르기 때문에 해당 서비스 문서를 참고하는게 좋다
3) https://tools.ietf.org/html/rfc6749#section-1.5
'보안 > 인증' 카테고리의 다른 글
iptalbes로 3306 추가 및 저장 방법 (0) | 2023.06.20 |
---|
댓글