[ TERMS 12 ] OAuth 2.0
1. OAuth 2.0 ( Open Authorization 2.0, OAuth2 ) 의 정의
OAuth 2.0은 사용자 인증을 위한 개방형 표준 프로토콜이다. 기존의 아이디/비밀번호 형태로 인증/인가를 수행하는 것이 아니라 접근 권한을 인증받기 위한 토큰을 발급받아 인증/인가를 수행하는 방식이다.
2. OAuth 2.0은 어떻게 접하게 될까?
구글 로그인, 페이스북 로그인, 네이버 로그인, 카카오 로그인 등이 OAuth 2.0을 사용한 대표적인 인증 방식이다. 또한 페이스북이나 구글 아이디로 제 3의 서비스에 로그인해서 등록되어 있는 정보(친구 목록)등에 접근 권한을 제어할 수도 있다.
이미 구글, 페이스북, 트위터와 같은 대기업들이 해당 방식으로 API 사용에 대한 인증/인가를 수행하고 있기 때문에 OAuth 2.0은 IETF(인터넷 표준화 작업 기구) 글로벌 표준이다.
OAuth 2.0 인증 방식을 제공하는 업체로부터 API를 제공받아 로그인 서비스를 개발하는 경우 간단하게 회원 가입 및 로그인 기능을 만들 수 있다. 또한 사용자 정보를 데이터베이스에 저장하지 않아도 되기에 보안적인 측면에서도 우수하다.
3. OAuth 2.0 알아보기
> 역사
OAuth는 트위터의 수석 개발자가 트위터 OpenID 개발 과정에서 시작되었다. OpenID는 여러 앱에서 공용 로그인 수단으로 사용되는 아이디를 말하며, 현재는 OAuth에 통합된 기술이다. 한편, 소셜 북마크 사이트인 Magnolia는 OpenID가 있는 회원이 Dashboard Widgets 서비스에 액세스할 수 있도록 승인하는 솔루션이 필요했다. 이에 각 서비스 담당자들은 인증을 위임하는 방법을 논의했다. 그리고 API 액세스 위임에 대한 공개 표준을 만들기 시작했다.
2007년 7월에 초기 사양의 OAuth초안이 작성되어 사용되었다. 하지만 해당 1.0버전은 웹 앱이 아닌 앱에서의 사용이 곤란하고 라이브러리 제작이 복잡하다는 2가지의 문제가 존재하였고 이를 극복하기 위해 2012년 10월에 OAuth 2.0 공식 표준안이 발표되어 현재까지 사용중이다.
> 기본 용어
- 사용자(Resource Owner) : 액세스 중인 리소스의 유저
- 클라이언트 : 사용자를 대신하여 보호된 리소스에 액세스하는 응용 프로그램
- 리소스 서버(Resource Server) : 클라이언트의 요청을 수락하고 응답하는 서버로 사용자의 정보를 제공한다.
- 인증 서버(Authorization Server) : 로그인 서비스를 제공하며, 로그인을 통한 인증 후 권한을 부여하는 서버이다. 인증 서버는 리소스 서버와 동일할 수도, 다를 수도 있다.
- 액세스 토큰(Access Token) : 보호된 리소스에 액세스하는 데 사용되는 비밀키이다.
> 동작 원리
네이버 로그인을 구현한다고 할때 사용자가 네이버 회원임을 아는 방법은 무엇이 있을까? 가장 쉬운 방법은 아이디와 비밀번호를 받아 확인하는 것이다. 하지만 이는 보안에 매우 취약하다. 이때 OAuth를 사용하면 고객이 자신의 아이디와 비밀번호를 알려 주지 않아도 네이버에 등록한 정보를 사용할 수 있다.
이것이 가능한 것은 액세스 토큰 때문이다. 액세스 토큰은 임의의 문자열 값인데 이 문자열의 정체는 이 토큰을 발급한 서비스만 알 수 있다. 이 엑서스 토큰을 이용해 토큰 값과 관련된 고객 정보를 해당 서비스에 요청할 수 있다. 해당 서비스는 이 토큰을 검증하고, 발급된 것이 맞다면 해당 고객의 정보를 넘겨준다. 즉 엑세스 토큰의 존재 자체가 고객이 정보를 넘겨주는 것에 동의하는 것을 의미한다.
사용자가 '네이버로 로그인' 버튼을 클릭하면 네이버 로그인 페이지로 이동한다. 사용자가 로그인하면 네이버 서버에서는 아이디와 비밀번호를 확인하고 해당 사용자가 네이버 회원임을 확인한다. 확인을 마친 네이버는 사용에 해당하는 액세스 토큰을 발급해 주고, 이 액세스 토큰을 이용해 네이버 사용자 정보를 이용할 수 있다.
4. OAuth 2.0을 사용하는 이유
> 계정 통합
OAuth 2.0을 이용하면 이용하려는 서비스마다 일일이 회원 가입할 필요 없이 기존에 사용하던 타사의 정보를 이용하여 로그인할 수 있다. 클릭만으로 사이트와 타사 계정을 연동할 수 있어 하나의 계정으로 여러 사이트를 이용할 수 있고 기억해야 하는 계정 정보도 그만큼 줄어든다. 대표적인 예로 '카카오 로그인'을 들 수 있다.
> 보안 강화
타사의 정보를 이용해 특정 사이트를 이용하는 것은 매우 위험할 수 있다. 사용자가 클라이언트에게 자신의 아이디와 패스워드를 노출시키는 것은 그 자체로 보안상 취약점이 되기 때문이다. OAuth 2.0은 사용자가 클라이언트에게 아이디와 패스워드를 제공하는 대신 인증 서버에 직접 인증하면 되기 때문에 안전하게 사용할 수 있다.
> 기타 API 접근 가능
OAuth 2.0을 사용하면 SDK를 통해 기타 API 정보에도 접근할 수 있다. 예를 들어, 클라이언트는 인증 서버로부터 발급받은 액세스 토큰을 사용하여 구글 아이디로 로그인한 사용자의 구글 캘린더 정보를 조회할 수 있다. 또는 페이스북으로 로그인한 사용자의 담벼락 게시글에 접근해서 정보를 이용할 수 도 있다.
5. OAuth 2.0 더 알아보기
> 함께 알아 두면 좋은 용어
- 클라이언트 / 서버
- 인증 / 인가
- 리프레시 토큰
> 혼동하기 쉬운 용어
- JWT
- SSO
'IT 도서 리뷰 > 개발자가 되기 위해 꼭 알아야 하는 IT 용어' 카테고리의 다른 글
[PART5] 운영체제/시스템/보안 - TERMS 14 (0) | 2025.09.04 |
---|---|
[PART5] 운영체제/시스템/보안 - TERMS 13 (2) | 2025.08.26 |
[PART5] 운영체제/시스템/보안 - TERMS 11 (1) | 2025.08.11 |
[PART5] 운영체제/시스템/보안 - TERMS 10 (4) | 2025.07.31 |
[PART5] 운영체제/시스템/보안 - TERMS 09 (3) | 2025.07.25 |