SAML 부 OIDC
SAML과 OIDC는 SSO 업계에서 가장 인기 있는 인증 프로토콜입니다. 이 글은 SAML과 OIDC를 아키텍처와 사용 사례 측면에서 비교합니다.
SAML이란?
SAML (보안 어설션 마크업 언어)은 서로 다른 당사자 간, 특히 ID 공급자(IdP)와 서비스 공급자(SP) 간의 인증 및 권한 부여 데이터를 교환하기 위한 XML 기반의 오픈 표준입니다. 사용자가 한 번 인증하면 여러 애플리케이션에 액세스할 수 있도록 하는 웹 기반 SSO (단일 로그인) 기능을 제공합니다. SAML은 오랜 기간 동안 사용되어 온 성숙한 프로토콜로, 기업에서 널리 채택되고 있습니다. Salesforce, Workday, Microsoft Azure AD와 같은 가장 인기 있는 SaaS 플랫폼도 모두 SAML SSO를 지원합니다.
SAML 구성 요소
- ID 공급자 (IdP): 사용자를 인증하고 서비스 공급자에게 ID 정보를 제공하는 엔터티입니다.
- 서비스 공급자 (SP): 사용자에게 서비스를 제공하고 ID 공급자가 사용자를 인증하는 데 의존하는 엔터티입니다.
- SAML 어설션: 사용자의 인증 및 권한 부여 세부 정보를 담고 있는 XML 기반 문서입니다. 인증 문, 속성 문, 권한 부여 결정 문을 포함합니다.
- SAML 프로토콜: ID 공급자와 서비스 공급자 간 SAML 어설션을 교환하기 위한 메시지 형식 및 규칙을 정의합니다.
- SAML 바인딩: HTTP POST, HTTP 리디렉션 등의 다양한 통신 프로토콜을 통한 SAML 메시지 전송 방법 을 정의합니다.
- SAML 메타데이터: ID 공급자 및 서비스 공급자의 설정 정보를 포함한 XML 기반 문서입니다. 이는 ID 공급자와 서비스 공급자 간의 신뢰를 구축하는 데 사용되는 공개 키, 엔드포인트, 지원되는 바인딩을 포함합니다.
- 단일 로그인 엔드포인트: 서비스 공급자가 사용자를 ID 공급자와 인증하기 위해 리디렉션하는 엔드포인트입니다.
- 어설션 소비 서비스 (ACS) URL: ID 공급자가 성공적인 인증 후 SAML 어설션을 보내는 엔드포인트입니다.
SAML은 어떻게 작동합니까?
- SP 시작 SSO 흐름:
- 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 구성 요소
- ID 공급자 (IdP): 사용자를 인증하고 서비스 공급자에게 ID 정보를 제공하는 엔터티입니다.
- 신뢰하는 파티 (RP): 사용자를 인증하는 데 ID 공급자에 의존하는 서비스를 제공하는 엔터티입니다. 예: 웹 애플리케이션, 모바일 앱 또는 API.
- OIDC 토큰: 사용자의 ID 정보를 전달하는 토큰입니다.
- OIDC 엔드포인트: 인증 및 토큰 교환에 사용되는 엔드포인트입니다. 가장 중요한 엔드포인트 중 일부는 다음과 같습니다:
- 디스커버리 엔드포인트: RP가 IdP로부터 공개적인 OIDC 구성 정보를 가져올 수 있는 곳입니다.
- 권한 부여 엔드포인트: RP가 인증 요청을 보내는 곳입니다.
- 토큰 엔드포인트: RP가 토큰을 요청하는 인증 서버입니다.
- 사용자 정보 엔드포인트: RP가 사용자의 프로필 정보를 가져올 수 있는 곳입니다.
- 스코프: OIDC는 RP에 부여된 액세스 권한을 정의하는 일련의 표준 스코프를 정의합니다. 예:
openid
,profile
,email
,address
등.
OIDC는 어떻게 작동합니까?
OIDC는 다양한 사용 사례를 위해 명시적으로 설계된 여러 흐름을 제공합니다. 여기 가장 일반적인 두 가지 OIDC 흐름이 있습니다:
- 권한 코드 흐름:
권한 코드 흐름은 소비자 대상 애플리케이션에서 OIDC에 가장 자주 사용하는 흐름입니다.
- 클라이언트 자격 증명 흐름:
클라이언트 자격 증명 흐름은 비사용자 기반(기계 대 기계) 인증에 사용할 수 있습니다.
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 비교
측면 | SAML | OIDC |
---|---|---|
토큰 형식 | XML 기반 SAML 어설션 | JSON 기반 JWT 토큰 |
주요 사용 사례 | 기업 SSO, B2B 통합 | 소비자 대상 앱, API 보안 |
사용 용이성 | 복잡함, XML에 대한 깊은 이해 필요 | 간단함, JSON 기반, 구현하기 쉬움 |
채택 | 기업에서 널리 채택됨 | 현대적 앱에서 증가하는 인기 |
보안 | 성숙하지만 덜 안전하다고 여겨짐 | 현대적이고, 더 안전함 |
유연성 | 제한적, SSO 사용 사례에 맞춰 설계됨 | 유연함, 다양한 사용 사례를 지원 |
SAML과 OIDC의 미래
두 프로토콜 모두 인증 및 권한 부여 목적으로 널리 사용되고 있습니다.
SAML은 기업 SSO 및 B2B 통합의 초석으로 남아 있습니다. 연합 ID 관리에 대한 강력한 지원과 검증된 실적은 특히 레거시 시스템 및 대규모 조직에 대해 계속해서 그 중요성을 유지할 것입니다.
반면 OIDC는 현대 애플리케이션에서 안전하고 확장 가능한 인증에 대한 수요에 의해 계속해서 발전하고 있습니다. 이를 가볍게 설계한 특성과 API 및 마이크로서비스와의 정렬 덕분에, OIDC는 클라우드 네이티브 및 분산 아키텍처의 초석이 되고 있습니다. 비밀번호 없이 인증, 생체인식 및 다중 요인 인증 (MFA)의 부상과 함께, OIDC는 향후 몇 년 동안 관련성을 보장하기 위해 새로운 기술과 원활하게 통합될 것으로 예상됩니다.