1. OIDC란?

OIDC(OpenID Connect)는 웹 애플리케이션에 사용자가 로그인하는데 사용할 수 있는 OAuth 2.0 기반의 인증 프로토콜이다. 상위계층에서 간편하게 인증을 처리하며, 신원확인 서비스(IDP)를 통해 보다 안전한 방식으로 정보를 제공할 수 있다.

2. OpenID Connect 작동방식

전자상거래 서비스 eBay를 예로 들면 다음과 같다. 서비스를 이용하기 위해 회원 가입을 하는 경우, eBay 웹사이트에서 개인정보를 직접 입력하는 절차를 거칠수도 있지만, 이미 보유한 Google 계정을 이용하면 OpenID Connect 프로토콜을 통해 간편하게 서비스에 가입할 수 있다. 아래 예시의 경우 OP(Open Provider) 역할을 하는 Facebook, Google이 IDP이다.

Untitled

Untitled

  1. eBay 서비스를 이용하기 위해 ‘Sign in with Google 버튼을 클릭하면 OP(Google)는 eBay 사용 시 필요한 인증화면(예: 로그인, 인증번호입력 등)을 내려 주게 된다. 참고로 eBay는 사전에 해당 OP를 사용하기 위해 인증이 가능하도록 등록을 마쳤으며, 필요한 client id, client secret 같은 정보들을 OP로부터 제공받은 상태이다.

  2. 인증 레벨에 따라 다양한 인증 방법을 요구할 수 있다. eBay는 OP로부터 발급받은 client id를 비롯해 redirect uri, scope 등의 정보로 OP에 Authorization Code(허가 코드)를 요청한다.

  3. OP는 인증 및 인가 여부를 판단하여, 1회용 Authorization Code를 eBay에 발급한다.

  4. eBay는 전달 받은 코드 및 client id, client secret 등의 정보로 OP에 Access Token과 ID Token을 요청하게 된다.

  5. OP는 Access Token 및 ID Token을 eBay로 전달한다.

  6. eBay는 Access Token을 이용하여 다른 RS(Resource Server) 자원들을 요청할 수 있게 된다.

위의 순서를 보면 OAuth 2.0의 흐름과 크게 달라보이지 않는 것을 알 수 있다. 이는 서두에 언급한대로 OpenID Connect가 OAuth 2.0을 기반으로 상위 계층에서 좀 더 간편하게 인증을 처리할 수 있도록 고안되었기 때문이다.

OpenID Connect는 Access Token과 함께 ID Token을 전달한다. 이 JWT(JSON Web Tokens)을 통해 암호화 된 Token 안에 사용자 정보를 비롯한 다양한 정보를 HTTP 헤더를 최대 사이즈인 4KB 이내로 저장할 수 있다. 이로 인해 eBay는 Access 토큰을 사용하여 한번 더 OAuth 2.0 API를 호출할 필요없이 사용자 정보가 담긴 ID Token을 복호화하여 바로 사용할 수 있게된다.

단편적인 예로 5천만 명의 사용자들이 eBay를 이용할 경우, 사용자 정보를 가져오기 위해서는 최소 1억 번의 API 호출이 필요했지만, ID Token을 이용하면 그 절반인 5천만 번 정도만 호출하면 된다.

3. OpenID Connect 특징

OpenID Connect는 다음과 같은 특징을 가지고 있다.