OAuth란?

이용자가 자신의 비밀번호를 건네지 않고, 다른 앱(클라이언트)에 자신의 리소스에 대한 제한된 범위의 접근을 허가하기(인가를 위임하기) 위한 구조. OAuth 2.0이 널리 사용되고 있다. 리소스 소유자(이용자), 클라이언트, 이용자의 허락을 얻어 액세스 토큰을 발급하는 인가 서버, 토큰을 확인하여 리소스를 돌려주는 리소스 서버의 네 가지 역할로 이루어진다. OAuth 자체는 인가의 구조이며, 로그인(인증)에 사용할 때는 ID 토큰을 더한 OpenID Connect를 사용한다.

일본어 명칭: OAuth

OAuth은(는) 웹 기술 기초 등 1개 분야의 연습 문제 2개에 나와요.

분야: 웹 기술 기초

도전해 보기: OAuth 관련 문제

사진 인화 서비스 앱이 이용자의 허락을 받아, 다른 회사의 사진 보관 서비스에 있는 이용자의 사진을 읽어 온다. OAuth 2.0에서 이용자에게 허락을 구하는 화면을 보여 주고, 이용자가 허락하면 앱에 액세스 토큰을 발급하는 역할은?

  1. A리소스 서버
  2. B인가 서버
  3. C클라이언트
정답과 해설 보기

정답: B. 인가 서버

OAuth 2.0에는 리소스 소유자(이용자), 클라이언트(인화 서비스 앱), 인가 서버, 리소스 서버(사진을 돌려주는 API)의 네 가지 역할이 있습니다. 인가 서버는 이용자를 확인하고 허락을 얻은 뒤, 범위(스코프)와 기한을 제한한 액세스 토큰을 클라이언트에 발급합니다. 클라이언트는 토큰을 붙여 리소스 서버의 API를 호출하고, 리소스 서버는 토큰을 확인하여 사진을 돌려줍니다. 이용자는 사진 보관 서비스의 비밀번호를 앱에 건네지 않아도 되며, 허락을 나중에 취소할 수도 있습니다.

OAuth 2.0과 OpenID Connect의 관계에 대한 설명으로 올바른 것은?

  1. AOAuth 2.0은 리소스에 대한 접근 허가(인가)를 위임하는 구조이며, OpenID Connect는 그 위에 인증 결과를 전하는 ID 토큰을 더해 로그인에 사용할 수 있게 한 것이다
  2. BOAuth 2.0은 이용자의 인증 결과를 전하기 위한 구조이며, OpenID Connect는 이를 사용하지 않고 이용자의 비밀번호를 연계하는 각 서비스로 직접 보내 확인하는 방식이다
  3. COpenID Connect는 HTTP 통신을 암호화하기 위한 프로토콜로, 로그인 화면을 보낼 때 TLS 대신 사용된다
정답과 해설 보기

정답: A. OAuth 2.0은 리소스에 대한 접근 허가(인가)를 위임하는 구조이며, OpenID Connect는 그 위에 인증 결과를 전하는 ID 토큰을 더해 로그인에 사용할 수 있게 한 것이다

OAuth 2.0의 액세스 토큰은 '이 범위의 리소스를 사용해도 된다'는 허가를 나타내는 것으로, 누가 로그인했는지 확인하는 목적으로 만들어지지 않았습니다. OpenID Connect는 OAuth 2.0의 흐름에 서명을 붙인 JWT 형태의 ID 토큰을 더합니다. ID 토큰에는 발행자, 이용자의 식별자, 대상 클라이언트, 유효 기간 등이 들어 있으며, 클라이언트는 서명과 내용을 확인하여 이용자가 누구인지 알게 됩니다. 이 구조는 다른 서비스의 계정으로 로그인하는 기능이나 싱글 사인온에 사용되고 있습니다.

해설 속 OAuth

OAuth이(가) 나오는 문제 (2)

  1. 사진 인화 서비스 앱이 이용자의 허락을 받아, 다른 회사의 사진 보관 서비스에 있는 이용자의 사진을 읽어 온다. OAuth 2.0에서 이용자에게 허락을 구하는 화면을 보여 주고, 이용자가 허락하면 앱에 액세스 토큰을 발급하는 역할은?
  2. OAuth 2.0과 OpenID Connect의 관계에 대한 설명으로 올바른 것은?

관련 용어

JWT(JSON Web Token) 동일 출처 정책(Same-origin Policy) 리버스 프록시(Reverse Proxy) 서버 사이드 렌더링(SSR) 웹소켓(WebSocket) 이벤트 루프(Event Loop) 쿠키(Cookie) CORS(교차 출처 리소스 공유) DOM(문서 객체 모델) HTTP 메서드(HTTP Method)

용어집으로 돌아가기