OAuth (Open Authorization)
사용자들이 비밀번호와 같은 자신의 자격 증명 없이 다른 애플리케이션이나 서비스가 사용자의 리소스에 접근할 수 있도록 권한을 부여할 수 있는 수단으로 인증 및 권한 부여를 위한 표준 프로토콜입니다.
ID, PW를 제공하지 않아도 클릭 한 번으로 간편하게 로그인할 수 있을 뿐만 아니라, 연동되는 외부 웹 어플리케이션이 제공하는 기능도 사용할 수도 있습니다.
구성요소
Resource Server (리소스 서버)
데이터를 실제로 보유하고 있는 서버 (Google, Kakao 등)
Resource Owner (자원 소유자)
웹 서비스를 이용하려는 사용자로, 자신의 데이터에 대한 접근 권한을 가지고 있는 주체
Client (클라이언트)
자원 소유자의 데이터를 요청하는 애플리케이션 (사용자가 이용하려는 서비스)
Authorization Server (인증 서버)
사용자를 인증하고, 액세스 토큰을 발급하는 서버
User : ID, PW를 넘겨 Authorization Code를 발급
Client : 발급 받은 Authorization Code을 넘겨 엑세스 토큰을 받급Access Token (액세스 토큰)
클라이언트가 리소스 서버에 요청을 보낼 때 사용하는 임시 자격 증명
인증 단계
사용자가 OAuth를 이용해 소셜 미디어로 로그인을 할 경우, Client(개인 서비스)는 Resource Owner(사용자)를 대신해 필요한 정보를 Resource Server에 요청합니다.
이 때, 다음 2가지 단계가 필요합니다.
- Resource Owner는 Client가 어떤 정보를 사용할 지 동의(허용)하는 단계
- Resource Server는 Client가 Resource Owner의 동의를 받은 Client인지 확인하는 단계
2가지 단계를 기억하고 인증 과정을 살펴보겠습니다.
인증 과정 (Authorization Code Grant)
사용자가 Client에게 서비스 접근 및 로그인 요청 (소셜 로그인 버튼 클릭)
Client가 Authorization Server에 사용자 대신 로그인 요청
Authorization Server가 사용자에게 로그인 페이지 제공
사용자는 로그인 페이지에 ID, PW를 입력하여 유효성 확인
유효성이 확인되면, Authorization Server에서 사용자에게 Authorization Code 발급
사용자가 Client의 Redirect Callback URL로 발급받은 Authorization Code를 담아서 요청
Client가 사용자가 전달한 Authorization Code를 사용해 Authorization Server에 인증 요청 (AccessToken 발급 요청)
Authorization Server에서 해당 Authorization Code를 검증 후 인증 (AccessToken 발급) & Client에서 발급된 AccessToken 저장
서비스에서 사용자의 인증 완료 & 로그인 성공 처리
Resource Server로 발급받은 AccessToken을 사용하여 사용자의 해당 Resource(ID, 프로필 정보, …)를 요청하여 응답받을 수 있습니다.