IT 개발노트

OpenID Connect 란? 본문

인증

OpenID Connect 란?

limsungju 2022. 8. 26. 15:11

OpenID Connect(OIDC)는 권한허가 프로토콜인 OAuth 2.0 기술을 이용하여 만들어진 인증 레이어다. (OpenID Connect is an authentication layer on top of OAuth 2.0, an authorization framework.) JSON 포맷을 이용한 RESTful API 형식을 사용하여 인증한다. OpenID Connect를 이용하면 손쉽게 외부 서비스를 통하여 사용자 인증을 구현할 수 있다.

OpenId Connect와 Oauth 2.0의 차이

OAuth는 권한허가를 처리하기 위해 만들어진 표준 프로토콜이다. Google, Facebook, Twitter 등에서 자신의 서비스를 외부 시스템에서 사용할 수 있게 제공해주기 위해서 생겨난 기술로 OAuth는 사용자 인증 보다는 제한된 사람에게 (혹은 시스템) 제한된 권한을 어떻게 잘 부여할 것인가에 대해서 중점적으로 다룬다. 이에 반해 OpenID는 인증 시스템으로써 사용자 정보를 관리하고 인증하는 것에 초점이 맞춰져 있다.

사용자 인증을 통한 응답 차이

OpenID Connect: 사용자 인증 및 사용자 정보 제공 (id token)
OAuth: 권한 부여 (access token) - 페이스북 posting 권한, 유저 profile view 권한 등

Identity Provider (OpenID Provider)

Identity Provider, 짧게 줄여서 IdP는 실제 사용자 정보를 제공해 주는 신원 제공자이다. OpenID Connect는 인증 표준 규격을 정의하는 프로토콜에 가깝고 실제 인증 및 사용자 정보 제공은 IdP를 통하여 수행한다. OpenID Connect에서 IdP의 역할을 OAuth가 수행합니다.

OAuth 진영에서 OAuth 기술은 Authentication 기술이 아니라고 명시한다. OAuth에서 제공해주는 access token은 특정 액션을 위해 일시적으로 권한을 허가해 준 토큰일 뿐이지 사용자에 대한 정보를 전혀 담고 있지 않다고 얘기한다. (access token을 가지고 있는 누구나 해당 권한을 사용할 수 있다.) 그렇기 때문에 access token을 발급하기 위해 사용자 인증을 거치긴 하였지만 access token 자체가 사용자 신원 정보를 대표해서는 안된다고 설명한다.

openid scope & id token

OpenID Connect가 하고 싶은 것은 사용자 인증과 사용자 신원 정보 제공이고 OAuth가 잘하는 것은 권한을 허가해주는 일이다. 그렇다면 OpenID Connect가 OAuth에게 사용자 신원 정보를 제공해 달라고 권한을 요청하면 어떨까? OAuth는 OpenID Connect의 요청에 따라 사용자를 인증하고 사용자 신원 정보를 전달할 수 있을 것이다.

이때 “사용자 정보 제공” 권한을 openid scope, 사용자 신원 정보가 담긴 토큰을 id token이라고 부른다.

이때 사용하는 id token의 형태는 JWT 형식을 따른다. 그렇기 때문에 IdP를 통해 생성되어 사용자로 전달된 토큰이 변조 되었는지 확인할 수 있다.

'인증' 카테고리의 다른 글

OAuth 2.0 이란?  (0) 2022.08.26
인증 방식의 종류  (0) 2022.08.26