OAuth("Open Authorization")는
- 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
- 소위 말하는 '구글, 페이스북, 카카오, 네이버 등으로 로그인하기' 기능들
OAuth 2.0(Open Authorization 2.0, OAuth2)은
- 인가을 위한 개방형 표준 프로토콜
- Third-Party 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공
- 구글, 페이스북, 카카오, 네이버 등에서 제공하는 간편 로그인 기능도 OAuth2 프로토콜 기반의 사용자 인증 기능을 제공
OAuth 2.0과 OpenID Connect
- OAuth 2.0 : 인가를 위한 표준 프로토콜
- OpenID Connect : 인증을 위한 OAuth 2.0 확장 표준 프로토콜
cf) OAuth는 유저 인증을 곧바로 제공하지 않지만 권한 부여를 위한 엑세스 토큰을 제공한다.
OpenID Connect는 권한부여 서버에 의해 작동하는 인증 시스템을 기반으로 클라이언트가 사용자를 판단할 수 있게 해준다.
구분설명
인증 (Authentication) |
ID와 비밀번호로 사용자 신원을 확인 카카오 로그인은 각 서비스에 사용자가 카카오계정으로 로그인할 수 있는 기능을 지원 서비스에서 각 사용자를 식별할 수 있는 고유한 회원번호 제공 참고: OpenID Connect 지원, 로그인 세션 대신 사용 가능한 ID 토큰 제공 가능 |
인가(Authorization) | 사용자 개인정보와 같은 자원(Resource)에 대한 접근 권한 획득 카카오 로그인은 사용자 동의를 통해 사용자 정보나 기능에 대한 접근 권한을 서비스에 부여 서비스에서 부여받은 권한은 카카오 로그인 시 발급되는 토큰에 부여되며, 토큰을 사용해 해당 사용자에 대해 다양한 카카오 API 요청 가능 카카오 API를 통해 카카오 플랫폼에 저장된 사용자 정보를 제공받거나, 특정 기능이나 동작을 요청할 수 있음 |
OAuth 구성 요소
구분 | 설명 |
Resource Owner | 웹 서비스를 이용하려는 유저, 자원(개인정보)을 소유하는 자, 사용자 'Resource' 는 개인정보라고 생각하면 된다. |
Client | 자사 또는 개인이 만든 애플리케이션 서버 클라이언트 라는 이름은 client가 Resource server에게 필요한 자원을 요청하고 응답하는 관계여서 그렇다. |
Authorization Server | 권한을 부여(인증에 사용할 아이템을 제공주는)해주는 서버 사용자는 이 서버로 ID, PW를 넘겨 Authorization Code를 발급 받을 수 있다. Client는 이 서버로 Authorization Code을 넘겨 Token을 받급 받을 수 있다. |
Resource Server | 사용자의 개인정보를 가지고있는 애플리케이션 (Google, Facebook, Kakao 등) 회사 서버 Client는 Token을 이 서버로 넘겨 개인정보를 응답 받을 수 있다. |
Access Token | 리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 만료 기간이 있는 Token 자원에 대한 접근 권한을 Resource Owner가 인가하였음을 나타내는 자격증명 ex) 사용자를 인증하고 카카오 API 호출 권한을 부여합니다. |
Refresh Token | Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token ex) 일정 기간 동안 다시 인증 절차를 거치지 않고도 액세스 토큰 발급을 받을 수 있게 합니다. 유효한 리프레시 토큰이 있다면 사용자가 매번 카카오계정 정보를 입력하거나 카카오톡으로 로그인하지 않고도 액세스 토큰을 다시 발급받을 수 있습니다. Client는 Authorization Server로 부터 access token(비교적 짧은 만료기간을 가짐) 과 refresh token(비교적 긴 만료기간을 가짐)을 함께 부여 받는다. access token은 보안상 만료기간이 짧기 때문에 얼마 지나지 않아 만료되면 사용자는 로그인을 다시 시도해야한다. 그러나 refresh token이 있다면 access token이 만료될 때 refresh token을 통해 access token을 재발급 받아 재 로그인 할 필요없게끔 한다. |

직접 사용자가 로그인 하는것이 아닌, 소셜 미디어로 로그인을 할 경우,
client(개인 서비스)는 Resource Owner(사용자)를 대신해 로그인 하는데, 이때 필요한 정보를 Resource Server(kakao, naver, ...)에서 얻어 서로 비교해 유효성을 판단한다.
client가 유저의 (로그인)정보/자원(resource)을 Resource Server에 요청해 대신 로그인 하는 것이다.
[출처]
- https://ko.wikipedia.org/wiki/OAuth
- OAuth 2.0 동작 방식의 이해|작성자 한컴인텔리전스
- https://inpa.tistory.com/entry/WEB-📚-OAuth-20-개념-💯-정리 [👨💻 Dev Scroll:티스토리]