OpenID Connect와 OAuth2의 관계

날아올라돼지야·2024년 8월 30일
0

OpenID Connect와 OAuth2의 관계

이번 강의에서는 OpenID Connect가 무엇인지, 그리고 OAuth2 프레임워크와 어떤 관계가 있는지를 설명하겠습니다. 많은 개발자들이 OpenID Connect와 OAuth2를 혼동하거나 서로 대체할 수 있다고 생각하지만, 사실 이 둘은 서로 보완적인 관계에 있습니다.


OAuth2와 OpenID Connect의 차이점

OAuth2는 주로 인가(Authorization)를 위해 설계된 보안 표준입니다. 이 표준은 애플리케이션이 제3자 애플리케이션에게 리소스에 대한 접근 권한을 부여할 수 있도록 합니다. 그러나 OAuth2는 인증(Authentication)을 다루지 않습니다. 인증은 사용자가 누구인지 확인하는 과정이며, 인가는 사용자가 특정 작업을 수행할 수 있는 권한이 있는지를 확인하는 과정입니다.

OAuth2의 인기를 바탕으로 많은 조직이 이를 사용하여 인증 작업도 수행하려고 시도했습니다. 하지만 OAuth2는 본래 인증을 목적으로 설계된 것이 아니므로, 이를 보완하기 위해 OpenID Connect가 등장했습니다.

OpenID Connect란?

OpenID Connect는 OAuth2 위에 구축된 프로토콜로, 인증을 지원하기 위해 개발되었습니다. OAuth2는 접근 토큰을 통해 인가를 제공하지만, OpenID Connect는 ID 토큰이라는 새로운 토큰을 도입하여 인증을 지원합니다. 이 ID 토큰은 사용자에 대한 정보를 포함하고 있어, 클라이언트 애플리케이션이 사용자의 신원을 확인하는 데 사용됩니다.

OpenID Connect의 동작 원리

  1. OAuth2로 인가 요청: 클라이언트 애플리케이션은 OAuth2 프로토콜을 사용하여 인가 서버에 요청을 보냅니다.
  2. OpenID Connect 스코프 추가: 클라이언트가 OpenID Connect를 사용하려면, 요청에 openid라는 스코프를 추가해야 합니다.
  3. 인가 서버의 응답: 인가 서버는 OAuth2의 액세스 토큰과 함께, ID 토큰을 발급합니다. 이 ID 토큰은 사용자의 신원 정보를 담고 있으며, JWT(Json Web Token) 형식을 따릅니다.
  4. ID 토큰 활용: 클라이언트 애플리케이션은 ID 토큰을 사용하여 사용자의 신원을 인증할 수 있으며, 필요 시 /userinfo 엔드포인트를 호출해 추가적인 사용자 정보를 얻을 수 있습니다.

주요 장점

  1. 표준화된 사용자 정보 접근: OpenID Connect는 사용자의 프로필 정보, 이메일, 주소 등의 세부 정보를 안전하게 공유할 수 있는 표준화된 방법을 제공합니다.
  2. JWT 표준: OpenID Connect는 OAuth2와 마찬가지로 JWT 표준을 따르므로, 두 토큰을 동일한 방식으로 처리할 수 있습니다.
  3. /userinfo 엔드포인트 제공: OpenID Connect는 클라이언트 애플리케이션이 사용자의 세부 정보를 요청할 수 있는 표준화된 엔드포인트를 제공합니다.

결론

OpenID ConnectOAuth2를 대체하는 것이 아니라, 그 위에 추가된 확장 기능으로, 인증을 효과적으로 처리할 수 있게 합니다. 이 둘을 결합함으로써 애플리케이션은 사용자를 인증하고, 권한을 관리하며, 안전하게 리소스에 접근할 수 있는 Identity and Access Management(IAM) 기능을 제공합니다.

이제 OpenID Connect와 OAuth2의 관계에 대해 명확히 이해하셨을 것입니다. OAuth2 없이는 OpenID Connect가 존재할 수 없으며, 이 둘은 서로 보완적인 관계임을 잊지 마세요.

감사합니다, 다음 강의에서 뵙겠습니다. 안녕히 계세요!

profile
무슨 생각하며 사니

0개의 댓글