-
OAuth 2.0 Intro, 용어concept/server 2020. 11. 2. 17:01
educative를 번역한 자료입니다.
what is OAuth 2.0?
OAuth 2.0은 인증을 위한 업계 표준 프로토콜
OAuth 2.0은 웹 애플리케이션, 데스크탑 애플리케이션, 휴대폰 및 거실 장치에 대한 특정 인증 흐름을 제공하는 동시에 클라이언트 개발자 단순성에 초점을 맞추고 있다.즉, OAuth는 보안된 리소스에 액세스하기 위해 클라이언트에 권한을 제공!(Authorization) 하는 프로세스를 단순화하는 프로토콜이다.
OAuth가 Authentication 이냐, Authorization이냐에 대한 혼란이 있을 수 있다.
정답은 Authorization이다!
OpenId Connect 라는 확장자가 있어서 Authentication이 가능하기는 하지만, OAuth는 Authorization으로만 사용되어야 한다.
Why shouldn't OAuth be used for authentication?
인증 확인 중에 클라이언트 앱은 사용자 정보가 필요하다.
클라이언트 앱은 토큰을 리소스 서버(이 예에서는 Facebook)로 보내 사용자 정보를 얻을 수 있다.하지만! 반대로 사용자 정보를 클라이언트로 다시 보낼 수 있는 표준 방법이 없다.
이것이 애플리케이션이 Authentication에 OAuth를 사용하면 안되는 이유이다. (모든 구현이 달라져 문제가 된다!)
반면에 OpenId Connect는 사용자 정보를 반환하는 표준 방법을 정의한다. 사용자 정보에 액세스하는 데 사용할 수 있는 UserInfo 엔드포인트를 정의한다.
OAuth에서 알아야 할 용어
Resource Owner
리소스 소유자는 액세스 중인 리소스의 유저.
페이스북 계정을 사용하여 PicsArt 앱에 로그인하면 클라이언트 앱에 액세스하여 이미지에 액세스할 수 있는 액세스 권한을 부여하게 된다. 이 경우 PicsArt 앱을 사용하는 유저가 리소스 소유자가 된다.Client
클라이언트는 리소스 소유자를 대신하여 보호된 리소스에 액세스하는 응용 프로그램입니다.
클라이언트는 서버, 데스크톱, 모바일 또는 기타 장치에서 호스팅할 수 있습니다. 우리의 예에서, PicsArt 앱이 고객입니다.
Resource server
protected resources를 호스팅하고 액세스 토큰을 사용하는 클라이언트의 요청을 수락하고 응답할 수 있는 서버.
우리의 예에서 페이스북은 자원 서버다.
Authorization server
클라이언트 및 리소스 소유자를 성공적으로 인증한 후 액세스 토큰을 발급하는 서버를 인증 서버라고 한다.
우리의 예에서, 페이스북 서버는 액세스 토큰을 발행하고 있었다. 일반적으로 이 작업을 수행하는 별도의 서버가 있다.
(Resource server와 차이가 뭐지?)
Authorization grant
Authorization grant(부여)는 액세스 토큰을 얻기 위해 클라이언트가 사용하는 자원 소유자의 Authorization grant(보호된 자원에 액세스하기 위해)를 나타내는 자격 증명이다. OAuth 사양은 4가지 grant 유형을 정의한다.
Authorization code
우리의 예에서, 우리는 페이스북 앱이 고객과 토큰을 공유한다는 것을 보여주었다. 일부 OAuth 흐름에서 인증 서버는 액세스 토큰을 직접 제공하지 않는다. 그것은 Authorization grant를 우선으로 한다. 그런 다음 클라이언트는 클라이언트 비밀이 포함된 이 허가증을 인증 서버로 전송한다. 이 후 권한 부여 서버는 액세스 토큰을 클라이언트에 부여한다.
Access token
액세스 토큰은 보호된 리소스에 액세스하는 데 사용되는 자격 증명이다. 액세스 토큰은 클라이언트에 발급된 권한을 나타내는 문자열이다. 토큰은 리소스 소유자가 부여하고 리소스 서버와 권한 부여 서버가 시행하는 특정 액세스 범위와 기간을 나타낸다.
Scope
범위는 토큰의 권한을 정의한다. 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스를 정의한다.
이 예에서 클라이언트 앱은 이미지에만 액세스하기를 원하므로 이미지가 범위임.'concept > server' 카테고리의 다른 글
OAuth - Implicit Grant Type (암시적 승인 타입) (0) 2020.11.02 OAuth - Authorization Code Grant Type (0) 2020.11.02 Cross-site Request Forgery (CSRF) (0) 2020.11.01 Cross-site Scripting Attack (XSS) (0) 2020.11.01 이 문제들을 다 풀면 session 이해 완료! (0) 2020.07.12