OpenID란 무엇일까요?

ChangHyun (Olive) Yoo
5 min readAug 11, 2021

오늘은 OpenID에 대해 소개해 드리고자 합니다.

OpenID는 문자 그대로 오픈된 IDentity를 의미합니다. 즉 서로 연계된 서비스 간에 사용자의 인증 등을 오픈해 주는 기술입니다.

OpenID 기술을 정확하게 표현하면 OIDC, 즉 OpenID Connect입니다.

그리고 이 기술에 대해서는 OIDC Foundation(https://openid.net)에서 세계 여러 기업들과 함께 지속적으로 발전시켜 나가고 있습니다.

소금광산은 국내에서 유일한 OIDC Foundation 정회원사입니다.

OpenID에 대해서 설명 드리기 전에 꼭 짚고 넘어가야할 내용이 바로 IDP에 관한 것입니다.

IDP란, IDentity Provider의 약자로 Google이나 Apple 등과 같은 간편 로그인 서비스를 제공하는 회사를 의미입니다.

그리고 어떤 사용자가 A라는 특정 애플리케이션(또는 서비스)에 로그인하기 위해서 별도 회원가입을 거치지 않고 바로 로그인할 수 있도록 사용자의 신원증명(또는 인증)을 해 주는 것이 IDP의 주된 역할입니다.

사용자는 IDP를 통해 A라는 특정 애플리케이션에 별도로 회원 가입을 하지 않고 가입과 사용을 할 수 있기 때문에, IDP와 SP(Service Provider) 사이에는 사용자를 인증할 수 있는 증명 정보에 대한 통신이 이뤄져야 합니다. 이러한 IDP와 SP 사이에 신원 정보 증명을 위한 통신이 이뤄지게 하는 기술이 바로 OpenID로 대표되는 OAuth라는 기술입니다. (현재는 OAuth 2.0 기술)

커다란 범주로 보면 OpenID나 OAuth, 그리고 SAML(Security Assertion Markup Language, ‘샘엘’이라고 부르기도 함) 모두 SSO(Single Sign-On)에 포함되는 기술이긴 합니다. 그래서 몇몇 기업들은 이를 표현하거나 언급할 때 명확하게 구분해서 사용하지 않기도 하는 해프닝이 벌어지기도 합니다. 하지만 SAML과 OAuth는 명확히 그 사용의 범주나 개발 언어 스펙(SAML은 XML, OAuth는 JSON)이 다르기 때문에 구분지어 설명해 주는 것이 필요합니다.

위에 언급된 기술들에 대해 다시 정리해서 요약하자면,

  • SAML: 개방형 인증(Authentication)과 인가(Authorization)의 표준, SSO를 하기 위한 목적으로 XML 언어로 개발된 기술 (현재는 SAML 2.0)
  • OAuth: 개방형 인가(Authorization)의 표준, API를 연동하고 허가하기 위한 목적으로 JSON(JavaScript Object Notation) 언어로 개발된 기술 (현재는 OAuth 2.0)
  • OIDC(OpenID Connect): 개방형 인증(Authentication)의 표준, 주로 컨슈머 애플리케이션(앱스토어나 구글 플레이스토어에 올라와 있는 앱) 간의 SSO 인가를 위한 목적으로 (마찬가지로) JSON(JavaScript Object Notation) 언어로 개발된 기술 (현재는 OIDC 2.0)

위와 같이 정리할 수 있습니다.

요약 정리한 내용 중에 한 가지 눈에 띄는 게 있습니다. 그것은 바로 인증(Authentication)과 인가(Authorization)입니다. 이 둘의 차이는 다음과 같습니다.

  • 인증(Authentication): 사용자가 누구인지 확인하는 절차로, 회원가입을 하고 로그인 하게 하는 것
  • 인가(Authorization): 사용자에 사용 권한을 허락해 주는 절차로, 어떤 서비스에 로그인한 후에 이뤄지는 사용자의 행위에 대해 허가해 주는 것

인증과 인가는 API 형태로 빈번하게 일어나며, 특히 SSO에서는 IDP와 SP 사이에 ‘누가, 언제, 무엇을’ 하게 할지 그리고 하게 할 수 있는지를 요청하고 승인하는 행위를 의미하게 됩니다.

다시 OpenID로 돌아 오면,

OIDC(OpenID를 OIDC라 부르겠습니다)는 엄밀히 얘기하자면 OAuth 위에서 구동되는 기술이며, 이는 OAuth가 인가에 목적이 맞춰져 있다보니 전문 통신을 하는 등의 절차가 조금 복잡할 수 있어서 이를 간편하게 만들고자 해서 나온 기술이 바로 OIDC라 보셔도 무방할 것 같습니다.

아울러 조금 전문적인 얘기를 드리면, OIDC는 인증을 위해 토큰(특정 내용을 담은 암호화된 정보)을 보낼 때 Access Token과 함께 ID Token까지 동시에 보낼 수가 있습니다. 따라서 트랜잭션(서로 주거니 받거니 하는 행위)이 1/2로 줄어들게 되어 인증의 속도가 훨씬 빨라지고 네트워크에 그만큼 부담을 덜 주게 됩니다.

다음 기회에 OIDC의 특징과 사용했을 때의 장점에 대해서 다시 얘기 드리도록 하겠습니다.

#OIDC #OpenID #SSO #소금광산 #saltmine #솔티 #salti #당신의진짜가치를캐내세요 #MiningYourRealValue #블록체인 #Blockchain

--

--