OAuth
인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
인증 프로토콜
Resource Server : 자원을 보유하고 있는 서버(제공자)
Resource Owner : 자원의 소유자(유저)
Client : Server에서 정보를 가져오고자 하는 웹 어플리케이션
OAuth의 동작 과정
Client 등록
Resource Server를 이용하기 위한 서비스 등록 과정(사전 승인)
Client ID, Client Secret(비밀키), Authorized redirect URL(Code를 전달받을 리다이렉트 주소)
Resource Owner의 승인
각 제공자는 소셜로그인을 하기위해 url로 GET 요청을 보내도록 명시함
Resource Owner는 Client에서 해당 url로 연결되는 소셜 로그인 버튼을 클릭
Resource Owner는 로그인을 수행하고 완료되면 Server는 Query String으로 넘어온 파라미터들을 통해 Client를 검사함
Client ID 확인, Redirect URL 확인
Resource Server의 승인
명시된 Redirect URL로 리다이렉트 시키고 Resource Server는 임시 암호인 Authorization Code를 함께 발급(Query String)
Client는 ID와 비밀키 및 Code를 Server에 직접 전달하고 유효한 요청이라면 Access Token을 발급받게 됨
API 호출
Client는 해당 토큰을 서버에 저장해두고 Server의 자원을 사용하기 위한 API호출시 토큰을 헤더에 담아서 보냄
Refresh Token
Refresh Token의 발급 여부와 방법 및 갱신 주기는 Server마다 상이함
보통 Access Token을 발급할 때 Refresh Token을 함께 발급
Client는 두 Token을 모두 저장해두고 Access Token이 만료되어 401에러가 발생하면 Refresh Token을 보내 새로운 Access Token을 발급받음
Reference
Last updated