OAuth
개요
OAuth는 인가(Authorization)를 처리하기 위해 만들어진 표준 프로토콜이다.
위키 정의로는 "인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준"이라고 한다.
간단하게 예를 들자면..
어떤 웹사이트는 사용자가 네이버 메일을 자동으로 보낼 수 있게 하는 서비스를 제공한다.
그래서 이 웹사이트에 로그인한 유저는 자신의 네이버 메일을 이 사이트를 통해서 보낼 수 있어야 한다.
이때 유저는 네이버로부터 신원을 받아와 서버에 제시하고, 서버는 해당 신원을 통해 네이버 메일에 api를 날린다.
네이버는 유저의 신원을 받아보게 되니 유저의 메일을 사용할 권한이 있다고 판단하고 서버의 요청을 인가한다.
자주 혼동하는 개념이지만, OAuth는 기본적으로 인가를 하기 위한 프로토콜이다.
여기에서 정해진 표준 방식이 조금 더 발전해서 인증 기능을 제공하는 OIDC가 나왔다.
구조
사진 정리가 잘 돼있어 가져왔다.[1]
위에서 잠깐 든 예시에서의 클라이언트가 바로 서버이다.
- 사용자(user): 서비스 제공자와 소비자를 사용하는 계정을 가지고 있는 개인
- 소비자(consumer): Open API를 이용하여 개발된 OAuth를 사용하여 서비스 제공자에게 접근하는 웹사이트 또는 애플리케이션
- 서비스 제공자(service provider): OAuth를 통해 접근을 지원하는 웹 애플리케이션(Open API를 제공하는 서비스)
- 소비자 비밀번호(consumer secret) : 서비스 제공자에서 소비자가 자신임을 인증하기 위한 키
- 요청 토큰(request token) : 소비자가 사용자에게 접근권한을 인증받기 위해 필요한 정보가 담겨있으며 후에 접근 토큰으로 변환된다.
- 접근 토큰(access token) : 인증 후에 사용자가 서비스 제공자가 아닌 소비자를 통해서 보호된 자원에 접근하기 위한 키를 포함한 값.
관련 문서
이름 | noteType | created |
---|