SAML의 복잡성과 한계: OIDC로의 전환 필요성
SAML: A fractal of bad design
Hacker NewsSAML은 초창기 웹 서비스의 싱글 사인온(SSO)을 구현했지만, 과도한 XML 기반 구조와 내재된 보안 취약성 때문에 현대적인 환경에서는 사용 중단이 권장됩니다.
- 복잡한 SAML 대신, 경량화되고 직관적인 JSON을 활용하는 OpenID Connect(OIDC)와 같은 최신 표준으로 인증 체계를 전환해야 합니다.
- 이 글은 프로토콜 설계 시, 방대한 초기 요구사항보다 간결함과 현대적인 통신 표준(예: HTTPS)을 우선하는 것이 중요함을 강조합니다.
- SAML의 복잡성은 '설계된 대로 작동하는' 문제(Ossification)를 야기하며, 이는 지속적인 업데이트와 단순화가 필요한 이유입니다.
보안 어설션 마크업 언어(SAML)는 2002년 OASIS SSTC에 의해 개발되었으며, 웹 서비스가 Web 1.0에서 Web 2.0으로 변화하는 과정에서 사용자 인증을 위한 싱글 사인온(SSO) 솔루션으로 자리 잡았습니다. SAML은 초기 SSO 산업의 핵심 역할을 수행했으나, 그 구조적 복잡성 때문에 현재는 사용 중단이 권장되고 있습니다. 이 프로토콜은 XML 기반 마크업 언어를 사용하며, 설계 과정에서 여러 이해관계자의 요구가 반영된 '위원회식 디자인'의 산물이라는 비판을 받고 있습니다.
SAML의 주요 취약점 중 하나는 복잡한 XML 구조와 보안 서명 처리 방식에 기인합니다. 특히 SAML은 XML 기반이어서 JSON 같은 현대적인 대안보다 훨씬 복잡하며, 이로 인해 구현 과정에서 난해한 C 코드베이스(예: libxmlsec)를 사용해야 하는 경우가 많습니다. 또한, XML 시그니처 래핑(XSW) 공격이나 캐노니컬라이제이션 관련 버그 등 다양한 보안 취약점이 발견되어 프로토콜의 신뢰성을 저해하고 있습니다.
최신 인증 표준인 OpenID Connect (OIDC)는 SAML과 달리 JSON을 활용하여 구조가 간결하며, HTTPS와 같은 현대적인 전송 계층의 암호화 및 신뢰를 가정합니다. OIDC는 특정 요구사항에 맞춰 점진적으로 성장(organic growth)해 왔기 때문에, 초기부터 모든 미래 시나리오를 예측하려 했던 SAML의 '설계된 대로 작동하는' 경직성(ossification) 문제를 피할 수 있었습니다. 따라서 현대 웹 서비스 환경에서는 간결하고 전송 계층을 활용하는 OIDC와 같은 대안으로 전환하는 것이 권장됩니다.