[토큰 기반 인증] OAuth 2.0
1. OAuth란
: 인터넷 사용자들이 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 개방형 표준(RFC 6479)이다.
2. 배경
: 기존의 웹사이트 및 어플리케이션 간의 인증/권한 표준화가 없었음
3. OAuth와 로그인의 차이
- 로그인: 회사 직원이 본인의 회사에 출입하는 것
- OAuth: 외부인이 회사 직원에게 요청해 방문증을 수령한 후 회사에 출입하는 것
※ 방문증의 경우 출입이 제한되는 구역을 설정할 수 있다.
4. 용어 정리
- 사용자 (User = Resource Owner) : 서비스를 이용하는 사람들
- 클라이언트 (Client = x사이트) : OAuth를 이용하기 위한 대상 사이트
- client_id : 인증 서버에서 어떤 사이트에서 OAuth 토큰을 요청 했는지 확인하는 값 (Client 고유값)
※ OAuth 공식 홈페이지에서는 Resource Owner와 Client로 정의를 하지만 한국어로 번역되는 과정에서 사용자와 클라이언트로 개념 혼동이 올수 있어 별도 구분지어 정의함
5. OAuth 프로세스
[그림 1] A사이트(junshae.com)에서 OAuth를 이용한 페이스북 로그인 인증 사용 예
6. 설계 시 보안 고려사항
- OAuth 토큰 안전성 (Access / Refresh / Authorize code)
: OAuth 인증을 하기 위해 사용되는 Authorizatioin code 및 Access Token에 대한 안전성 (재사용 / 파기 / 횟수제한 / 만료시간)을 고려해야 한다.
- OAuth Scope 설정
- OAuth 토큰 발급/처리 시 Resource Owner 알림 설정
- 특정 Resource Server Token 사용 가능성
- CallBack URL (redirect URL 검증)
- 통신구간 안전성 (SSL/TLS) 적용
- OAuth 토큰 처리 시 Client(client_id) 확인
- OAuth 토큰 발급 시 안전한 암호 알고리즘 사용
7. Reference
: https://tools.ietf.org/html/rfc6749
: https://d2.naver.com/helloworld/24942
: https://ko.wikipedia.org/wiki/OAuth
: https://meetup.toast.com/posts/105
: https://developers.nugu.co.kr/docs/create-plays-with-play-builder/link-oauth20.html
: https://spring.io/blog/2011/11/30/cross-site-request-forgery-and-oauth2
: https://tools.ietf.org/id/draft-lodderstedt-oauth-security-01.html
'IT Knowledge' 카테고리의 다른 글
FrontEnd vs BackEnd vs FullStack 차이 (프론트엔드/백엔드/풀스택) (0) | 2023.09.21 |
---|---|
[토큰 기반 인증] JWT (JSON Web Token) (0) | 2019.01.24 |
[IT 정보] Web Storage 사용의 보안적 위험요소 분석 (0) | 2018.12.30 |