OAuth 2.0
인증을 위한 개방형 표준 프로토콜으로 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공한다.
- 간편 로그인 기능: 구글, 페이스북, 카카오, 네이버 등에서 제공
역할
- Resource Owner (리소스 소유자): 본인의 정보에 접근할 수 있는 자격을 승인하는 주체.
- 클라이언트를 인증(Authorize)하는 역할
- 인증이 완료되면 동의를 통해 권한 획득 자격(Authorization Grant)을 클라이언트에게 부여
- Client: Resource Owner의 리소스를 사용하고자 접근 요청을 하는 어플리케이션
- Resource Server: 정보가 저장되어 있는 서버
- Authorization Server (권한 서버): 인증/인가를 수행하는 서버로 클라이언트의 접근 자격을 확인하고 Access Token을 발급하여 권한을 부여하는 역할 수행
주요 용어
- Access Token: 리소스 서버에게서 리소스 소유자의 정보를 획득할 때 사용되는 만료 기간이 있는 Token.
- Refresh Token: Access Token 만료시 이를 재발급 받기위한 용도로 사용하는 Token
장점
구글, 페이스북, 카카오, 네이버 등을 이용해 보안 측면에서 안심할 수 있고, 비번과 아이디 정보를 기억해야하는 번거로움을 덜어줄 수 있다.
인증 과정
- 사용자는 특정 웹 application에서 OAuth 서비스 요청.
- OAuth 서비스는 redirect를 통해 Client에서 Authrization Code 부여
- Client는 Server에게 OAuth 서비스를 전달받은 Authorization Code를 보낸다
- Server는 Authrization Code를 다시 OAuth 서비스에 전달해 Access Token을 전달받는다
- Server는 Access Token으로 Client를 인증하고 요청에 대한 응답을 반환한다.