한국어
  • sso
  • saml
  • oidc

SAML과 OIDC의 차이점은 무엇인가요?

이 기사에서는 SAML 및 OIDC 프로토콜에 대한 개요와 일반적인 인증 흐름을 제공하며, 각 프로토콜의 뚜렷한 차이점, 장단점을 비교합니다. 또한, 잠재적인 사용자 시나리오를 기반으로 두 프로토콜 중에서 선택하는 데 대한 지침을 제공합니다.

Darcy Ye
Darcy Ye
Developer

OpenID Connect (OIDC)와 Security Assertion Markup Language (SAML)은 아이덴티티 제공자(IdP)가 사용자 인증 및 접근 제어를 구현할 수 있게 해주는 인증 프로토콜입니다. 각 프로토콜은 인증된 사용자의 아이덴티티를 유지하는 자체 메커니즘을 정의하며, 이는 이후 보안 애플리케이션에 대한 접근 허용이나 거부에 사용됩니다.

SAML과 OIDC란 무엇인가요?

IdP는 사용자 아이덴티티 정보를 데이터베이스에 유지합니다. 서비스 제공자(SP)는 이 정보를 기반으로 사용자를 인증하며, 경우에 따라 여러 애플리케이션에서 단일 인증(싱글 사인온)을 사용할 수 있도록 합니다. OIDC와 SAML은 이러한 사용자 아이덴티티 관련 정보가 두 당사자 간에 어떻게 흐르는지를 정의하는 표준입니다. 이들의 궁극적인 목표는 동일합니다: 사용자 인증. 그러나 이를 달성하기 위한 근본적인 접근 방식은 다릅니다.

SAML

2005년 이후 SAML 2.0은 현재 표준의 버전입니다. XML을 사용하여 아이덴티티 정보, 요청 및 응답을 형식화합니다. XML은 문서를 사람과 컴퓨터 모두 쉽게 이해할 수 있도록 형식화하는 성숙한 표준입니다. XML로 인코딩된 정보를 전송하거나 받을 때 기본 SOAP 또는 HTTP 요청을 사용합니다. SAML 프로토콜에 의해 정의된, 아이덴티티 정보를 요청하는 서비스는 서비스 제공자(SP)입니다.

일반적인 SAML 인증 프로세스를 소개하기 전에 SAML 인증이 의존하는 요소를 이해해야 합니다. IdP와 SP가 서로를 인식하고 인증 프로세스를 완료하기 전에 필요한 정보를 "교환"해야 하며, 이는 일반적으로 XML 형식의 메타데이터를 통해 이루어집니다. 교환된 정보에는 다음이 포함됩니다:

  • 공개 키, IdP와 SP는 자체 개인 키와 공개 키 쌍을 생성하고 이를 교환하여 통신을 서명하거나 암호화합니다. 네트워크 통신 보안이 발전하면서 대부분의 시나리오에서는 이제 암호화 단계 없이 요청 서명만 필요합니다.
  • 엔드포인트, SP에서 IdP로 SAML 인증 요청을 보내고 IdP에서 SP로 인증 요청에 대한 SAML 어설션을 수신하기 위해 사용됩니다.
  • 지원되는 XML 속성 형식, IdP가 인증을 완료한 후 SP로 필요한 사용자 정보를 전송하는 데 사용됩니다.

IdP와 SP가 앞서 언급한 정보를 인식한 후, 그들은 인증 프로세스를 진행할 수 있습니다(일반적인 SP 시작 인증 흐름):

OIDC

OIDC는 OAuth 2.0 프레임워크를 강화하는 현대적인 프로토콜입니다. JSON 기반의 웹 토큰(JWT)을 사용하여 데이터 페이로드를 구성합니다. JWT는 암호화된 사용자 데이터로 실체 간의 주장을 안전하게 교환하고 표현하기 위한 지침을 설정하는 확립된 산업 표준입니다. OIDC는 주로 범용적인 HTTPS를 사용하여 데이터를 전송합니다.

잘 알려져 있듯이, OIDC 프로토콜은 권한 코드 흐름, 암시적 흐름, 하이브리드 흐름을 포함하여 다양한 흐름을 지원합니다. 다음 예에서는 이러한 흐름 중 가장 안전하고 일반적인 방법인 권한 코드 흐름을 설명합니다. 이 흐름은 Logto에서도 사용됩니다.

OIDC와 SAML의 독특한 측면

  • 최근의 개발을 감안할 때, OIDC는 오래된 SAML 표준에 비해 현대적 애플리케이션 인증에 더 적합합니다.
  • 역사적으로 SAML은 OIDC보다 먼저 개발되었으며, 수많은 기존 기업 시스템에 통합되었습니다.
  • SAML의 무거운 XML 문서와 대조적으로, OIDC의 JWT는 간결하고 처리하기 더 사용하기 편리합니다.
  • OIDC의 설정은 일반적으로 SAML보다 더 간단합니다.
  • OIDC의 주요 기능 중 하나는