한국어
  • OIDC
  • SAML
  • SSO
  • authentication
  • authorization

SAML 부 OIDC

SAML과 OIDC는 SSO 업계에서 가장 인기 있는 인증 프로토콜입니다. 이 글은 SAML과 OIDC를 아키텍처와 사용 사례 측면에서 비교합니다.

Simeng
Simeng
Developer

SAML이란?

SAML (보안 어설션 마크업 언어)은 서로 다른 당사자 간, 특히 ID 공급자(IdP)와 서비스 공급자(SP) 간의 인증 및 권한 부여 데이터를 교환하기 위한 XML 기반의 오픈 표준입니다. 사용자가 한 번 인증하면 여러 애플리케이션에 액세스할 수 있도록 하는 웹 기반 SSO (단일 로그인) 기능을 제공합니다. SAML은 오랜 기간 동안 사용되어 온 성숙한 프로토콜로, 기업에서 널리 채택되고 있습니다. Salesforce, Workday, Microsoft Azure AD와 같은 가장 인기 있는 SaaS 플랫폼도 모두 SAML SSO를 지원합니다.

SAML 구성 요소

  1. ID 공급자 (IdP): 사용자를 인증하고 서비스 공급자에게 ID 정보를 제공하는 엔터티입니다.
  2. 서비스 공급자 (SP): 사용자에게 서비스를 제공하고 ID 공급자가 사용자를 인증하는 데 의존하는 엔터티입니다.
  3. SAML 어설션: 사용자의 인증 및 권한 부여 세부 정보를 담고 있는 XML 기반 문서입니다. 인증 문, 속성 문, 권한 부여 결정 문을 포함합니다.
  4. SAML 프로토콜: ID 공급자와 서비스 공급자 간 SAML 어설션을 교환하기 위한 메시지 형식 및 규칙을 정의합니다.
  5. SAML 바인딩: HTTP POST, HTTP 리디렉션 등의 다양한 통신 프로토콜을 통한 SAML 메시지 전송 방법을 정의합니다.
  6. SAML 메타데이터: ID 공급자 및 서비스 공급자의 설정 정보를 포함한 XML 기반 문서입니다. 이는 ID 공급자와 서비스 공급자 간의 신뢰를 구축하는 데 사용되는 공개 키, 엔드포인트, 지원되는 바인딩을 포함합니다.
  7. 단일 로그인 엔드포인트: 서비스 공급자가 사용자를 ID 공급자와 인증하기 위해 리디렉션하는 엔드포인트입니다.
  8. 어설션 소비 서비스 (ACS) URL: ID 공급자가 성공적인 인증 후 SAML 어설션을 보내는 엔드포인트입니다.

SAML은 어떻게 작동합니까?

  1. SP 시작 SSO 흐름:
  1. IdP 시작 SSO 흐름:

SAML의 장점

  • 성숙하고 널리 채택됨: SAML은 오랜 기간 사용되어 온 성숙한 프로토콜로, 기업에서 널리 채택되고 있습니다.
  • 표준화: SAML은 OASIS에서 유지 관리하는 오픈 표준으로, 다양한 공급자 간 상호 운용성을 보장합니다.
  • SSO: SAML은 웹 기반 SSO를 가능하게 하여 사용자가 한 번 인증하면 여러 애플리케이션에 접근할 수 있도록 합니다.
  • 중앙 집중식 사용자 관리: SAML은 조직이 사용자 ID를 중앙에서 관리하고 보안 정책을 일관되게 적용할 수 있도록 합니다.

SAML의 과제

  • 복잡성: SAML은 XML 및 보안 개념에 대한 깊은 이해가 필요한 복잡한 프로토콜입니다.
  • 성능: SAML 메시지는 XML 기반이며 클 수 있습니다. XML 전달 및 구문 분석은 JSON 웹 토큰 (JWT)과 같은 토큰 형식에 비해 느릴 수 있습니다.
  • 낡은 표준: SAML은 OIDC에 비해 오래된 표준으로, 덜 안전하다고 여겨집니다.
  • 벤더 종속성: SAML은 벤더 특정 프로토콜로, 벤더 간 전환이 어려울 수 있습니다.

OIDC란?

OIDC (오픈ID 커넥트)는 OAuth 2.0 프로토콜 위에 구축된 ID 계층입니다. SAML과 유사하게, OIDC도 IdP와 SP 간 인증 및 권한 부여 데이터 교환에 사용됩니다.

SAML에 비해 OIDC는 현대 웹 및 모바일 애플리케이션에 인기 있는 더 현대적이고 가벼운 프로토콜입니다. OIDC는 JWT를 사용하여 ID 정보를 전송하는데, 이는 XML 기반 SAML 어설션에 비해 더 간결하고 쉽게 다룰 수 있습니다. 이는 특히 소비자 대상 애플리케이션 및 API 보안에 인기가 있습니다.

OIDC 구성 요소

  1. ID 공급자 (IdP): 사용자를 인증하고 서비스 공급자에게 ID 정보를 제공하는 엔터티입니다.
  2. 신뢰하는 파티 (RP): 사용자를 인증하는 데 ID 공급자에 의존하는 서비스를 제공하는 엔터티입니다. 예: 웹 애플리케이션, 모바일 앱 또는 API.
  3. OIDC 토큰: 사용자의 ID 정보를 전달하는 토큰입니다.
    • ID 토큰: 사용자의 ID 정보를 포함하는 JWT 형식의 토큰입니다.
    • 액세스 토큰: 보호된 리소스에 대한 접근 권한을 부여하는 JWT 또는 불투명 형식의 토큰입니다.
    • 갱신 토큰: 사용자가 다시 인증하지 않고도 새로운 액세스 토큰을 얻는 데 사용되는 토큰입니다. RP에 오프라인 장기 권한을 제공합니다.
  4. OIDC 엔드포인트: 인증 및 토큰 교환에 사용되는 엔드포인트입니다. 가장 중요한 엔드포인트 중 일부는 다음과 같습니다:
    • 디스커버리 엔드포인트: RP가 IdP로부터 공개적인 OIDC 구성 정보를 가져올 수 있는 곳입니다.
    • 권한 부여 엔드포인트: RP가 인증 요청을 보내는 곳입니다.
    • 토큰 엔드포인트: RP가 토큰을 요청하는 인증 서버입니다.
    • 사용자 정보 엔드포인트: RP가 사용자의 프로필 정보를 가져올 수 있는 곳입니다.
  5. 스코프: OIDC는 RP에 부여된 액세스 권한을 정의하는 일련의 표준 스코프를 정의합니다. 예: openid, profile, email, address 등.

OIDC는 어떻게 작동합니까?

OIDC는 다양한 사용 사례를 위해 명시적으로 설계된 여러 흐름을 제공합니다. 여기 가장 일반적인 두 가지 OIDC 흐름이 있습니다:

  1. 권한 코드 흐름:

권한 코드 흐름은 소비자 대상 애플리케이션에서 OIDC에 가장 자주 사용하는 흐름입니다.

  1. 클라이언트 자격 증명 흐름:

클라이언트 자격 증명 흐름은 비사용자 기반(기계 대 기계) 인증에 사용할 수 있습니다.

OIDC의 장점

  • 현대적이고 가벼움: OIDC는 JSON 기반 JWT 토큰을 사용하는 현대적인 프로토콜로, XML 기반 SAML 어설션에 비해 더 간결하고 쉽게 다룰 수 있습니다.
  • 소비자 대상 애플리케이션: OIDC는 특히 소비자 대상 애플리케이션 및 API 보안에 인기입니다.
  • 상호 운용성: OAuth 2.0 위에 구축된 OIDC는 다양한 플랫폼, 디바이스 및 플랫폼과 호환 가능합니다.
  • 보안: OIDC는 사용자 인증 및 API 보호를 위한 더 안전한 방법을 제공합니다. 이는 토큰 인트로스펙션, 토큰 철회, 코드 교환을 위한 증명 키 (PKCE)와 같은 다양한 현대적 보안 기능을 포함하며, 다양한 보안 요구에 맞춘 다양한 인증 흐름을 지원합니다.
  • 사용 용이성: OIDC는 SAML에 비해 간단하게 구현하고 작업할 수 있습니다. 이는 더 개발자 친화적이며, 여러 프로그래밍 언어와 플랫폼을 위한 포괄적인 라이브러리 및 SDK를 제공합니다.

OIDC의 과제

  • 토큰 관리: OIDC는 인증 및 권한 부여를 위해 토큰에 의존합니다. 보안을 보장하기 위해 적절한 토큰 관리 관행이 필요합니다.
  • 복잡성: OIDC는 기본 설정에서는 간단하지만, 유연한 특성으로 인해 고급 사용자 정의를 구현할 때 복잡성을 더할 수 있습니다. 예: 사용자 정의 클레임, 역할 기반 접근 제어 (RBAC) 등.
  • 채택: OIDC는 특히 기업 분야에서 SAML에 비해 상대적으로 새로운 프로토콜입니다. 일부 레거시 시스템은 여전히 SSO 목적으로 SAML에 의존할 수 있습니다.

SAML과 OIDC 비교

측면SAMLOIDC
토큰 형식XML 기반 SAML 어설션JSON 기반 JWT 토큰
주요 사용 사례기업 SSO, B2B 통합소비자 대상 앱, API 보안
사용 용이성복잡함, XML에 대한 깊은 이해 필요간단함, JSON 기반, 구현하기 쉬움
채택기업에서 널리 채택됨현대적 앱에서 증가하는 인기
보안성숙하지만 덜 안전하다고 여겨짐현대적이고, 더 안전함
유연성제한적, SSO 사용 사례에 맞춰 설계됨유연함, 다양한 사용 사례를 지원

SAML과 OIDC의 미래

두 프로토콜 모두 인증 및 권한 부여 목적으로 널리 사용되고 있습니다.

SAML은 기업 SSO 및 B2B 통합의 초석으로 남아 있습니다. 연합 ID 관리에 대한 강력한 지원과 검증된 실적은 특히 레거시 시스템 및 대규모 조직에 대해 계속해서 그 중요성을 유지할 것입니다.

반면 OIDC는 현대 애플리케이션에서 안전하고 확장 가능한 인증에 대한 수요에 의해 계속해서 발전하고 있습니다. 이를 가볍게 설계한 특성과 API 및 마이크로서비스와의 정렬 덕분에, OIDC는 클라우드 네이티브 및 분산 아키텍처의 초석이 되고 있습니다. 비밀번호 없이 인증, 생체인식 및 다중 요인 인증 (MFA)의 부상과 함께, OIDC는 향후 몇 년 동안 관련성을 보장하기 위해 새로운 기술과 원활하게 통합될 것으로 예상됩니다.