SAML 인증에 대한 개발자 안내서 [3 Online Tools]
SAML (Security Assertion Markup Language) 인증 완벽 가이드
현대 사회에서 암호 관리의 간소화는 매우 중요해졌습니다. 기업의 디지털 전환이 가속화되면서, 직원들은 협업, 메신저, 저장 도구 등 다양한 디지털 도구를 이전보다 더욱 많이 사용하고 있습니다.
이러한 환경은 개발자들에게 복잡한 과제를 제시합니다. 어떻게 하면 직원들에게 클라우드에 저장된 내부 애플리케이션과 데이터에 대한 안전한 접근 권한을 제공할 수 있을까요? 많은 개발자들이 그 해답으로 SAML 인증을 선택하고 있습니다!
SAML이란 무엇일까요?
SAML, 즉 보안 어설션 마크업 언어는 인증 과정을 단순화하는 개방형 표준입니다. SAML은 XML(확장 가능한 마크업 언어)을 기반으로 하며, 인증 주체와 웹 서비스 또는 애플리케이션 간의 통신을 표준화합니다. 다시 말해, SAML을 사용하면 하나의 로그인으로 다양한 애플리케이션에 접속할 수 있습니다.
서비스 제공자(SP)는 사용자에게 권한을 부여하기 위해 ID 제공자(IdP)의 인증을 필요로 합니다. 예를 들어 Salesforce는 사용자 인증을 위해 IdP에 의존하는 SP입니다.
반면 IdP는 최종 사용자가 본인임을 확인하고, 서비스 제공자에게 해당 사용자의 접근 권한과 함께 데이터를 전달합니다. Auth0은 대표적인 ID 솔루션 제공 기업 중 하나입니다.
SAML 싱글 사인온 (SSO)이란 무엇일까요?
SAML의 핵심 기능 중 하나는 싱글 사인온(SSO)을 구현하는 것입니다. SAML 이전에도 SSO가 가능했지만, 쿠키에 의존해야 했고 동일한 도메인에서만 사용 가능했습니다.
SAML은 사용자가 하나의 로그인 정보로 여러 애플리케이션에 접근할 수 있도록 하여 SSO를 활성화합니다. SAML 자체는 새로운 기술이 아니며, 2002년부터 사용되어 왔습니다. 최근에는 많은 새로운 애플리케이션과 SaaS 기업에서 SSO를 위해 SAML을 채택하고 있습니다. 최신 버전인 SAML 2.0은 웹 기반 교차 도메인 SSO를 가능하게 하며, 리소스 인증의 표준으로 자리 잡았습니다.
SAML 인증의 장점은 무엇일까요?
SAML은 보안, 사용자, 그리고 서비스 제공자(SP) 모두에게 다양한 이점을 제공합니다.
단순성: 사용자는 IdP에 한 번만 로그인하면 여러 애플리케이션에 안전하고 원활하게 접근할 수 있습니다.
강화된 보안: 많은 SP는 로그인 시 사용자 인증을 구현하고 관리할 시간이나 자원이 부족합니다. 일반적으로 IdP가 사용자 ID를 인증하는 데 더 적합합니다. SAML은 IdP에게 인증을 위임함으로써 다단계 인증(MFA)과 같은 다양한 보안 계층을 적용할 수 있도록 합니다.
향상된 사용자 경험: SAML은 사용자가 여러 개의 사용자 이름과 비밀번호를 기억해야 하는 번거로움을 없애줍니다.
관리 부담 감소: 서비스 제공자는 비밀번호를 저장하지 않고도 플랫폼 보안을 강화할 수 있습니다. 비밀번호 분실 문제 처리 필요성이 줄어들어 헬프 데스크 비용을 절감하고, 기술 팀은 다른 긴급 요청에 집중할 수 있게 됩니다.
Auth0는 무엇이며 SAML 인증과 어떤 관계가 있나요?
Auth0는 사용자 인증 및 권한 부여 서비스를 제공하는 플랫폼으로, IdP와 SP 역할을 모두 수행할 수 있습니다. Auth0는 SAML과 통합될 수 있는 범용 로그인 기능을 제공합니다. 개발자들은 위험을 분산시키기 위해 여러 IdP와 함께 Auth0을 사용하는 경우가 많습니다.
Auth0은 대부분의 주요 언어 및 API와 함께 사용 가능하며, 소셜 공급자, 데이터베이스, LDAP 디렉토리와도 통합될 수 있습니다.
SAML SSO 흐름은 어떻게 될까요?
SAML은 사용자가 한 번의 로그인으로 여러 애플리케이션에 접근할 수 있도록 SSO(Single Sign-On)를 활성화하는 데 중요한 역할을 합니다. SAML 이전에도 SSO가 있었지만, 쿠키에 의존하여 동일한 도메인 내에서만 가능했습니다.
SAML은 2002년부터 사용되어 왔으며, 많은 최신 애플리케이션과 SaaS 기업에서 SSO를 위해 사용되고 있습니다. 최신 버전인 SAML 2.0은 웹 기반 교차 도메인 SSO를 가능하게 하며, 리소스 인증을 위한 표준으로 자리매김했습니다.
SAML SSO의 핵심은 사용자가 여러 애플리케이션을 사용할 때 한 번만 인증을 요청하는 것입니다. 예를 들어, Gmail, YouTube, Google Apps와 같은 여러 Google 서비스에서 공유되는 Google 인증을 떠올릴 수 있습니다.
여기서 Google은 여러 서비스에 대한 ID 제공자(IdP) 역할을 하며, 각 서비스는 서비스 제공자(SP)로 간주됩니다.
| 단계 | 설명 |
| 인증 요청 | 외부 애플리케이션에 연결 시, 인증되지 않은 사용자를 회사 IdP로 리디렉션합니다. IdP는 HTTPS를 통해 접근할 수 있는 웹 서비스이며, 내부 또는 외부에서 호스팅될 수 있습니다. |
| 내부 인증 | 사용자는 IdP에게 자신의 신원을 증명합니다. 이 과정은 명시적 인증(로그인/비밀번호) 또는 기존 토큰 전달을 통해 수행될 수 있습니다. |
| 주장 생성 | IdP는 요청된 서비스에 한해 유효한 "토큰"을 생성합니다. 이 토큰은 사용자 ID 카드와 같은 역할을 하며, 다음 정보를 포함합니다:
|
| IdP에서 SP로 전송 | 일반적으로 토큰은 IdP에서 SP로 직접 전달되지 않고, 사용자를 통해 전달됩니다. IdP는 HTTP 바운스를 통해 클라이언트 브라우저에 토큰을 제공하고, 브라우저는 해당 토큰을 SP로 전달합니다. 이는 정부에서 발급한 신분증과 유사하며, 여러 기관에 제시할 수 있습니다. |
| SP의 토큰 처리 | SP는 사용자로부터 토큰을 받습니다. SP는 해당 IdP를 신뢰하며, 서명, 토큰의 무결성, 유효 기간을 확인합니다. 검증이 완료되면, SP는 사용자에게 세션을 시작합니다. |

출처: 위키피디아
SAML 인증과 사용자 권한 부여
SAML 인증은 종종 권한 부여와 혼동됩니다. 두 개념을 명확히 구분하는 것이 중요합니다.
인증: 사용자의 신원을 확인하는 과정입니다. 즉, 사용자가 주장하는 사람이 맞는지 확인하는 것입니다. 이메일과 비밀번호를 사용하여 시스템에 접속하는 것이 대표적인 예입니다.
권한 부여: 사용자가 계정의 리소스에 접근하기 위해 타사 도구에게 부여하는 권한입니다. 사용자 동의 하에 인증 프로토콜은 자격 증명을 직접 사용하지 않고 토큰을 교환합니다. 예를 들어, Facebook이 Google 계정의 특정 정보에 접근하도록 허용하는 것이 권한 부여에 해당합니다.
SAML 관련 핵심 용어
SAML 어설션
SAML 어설션은 일반적으로 ID 제공자에서 서비스 제공자로 전달됩니다. 어설션에는 서비스 제공자가 접근 제어 결정을 내릴 때 사용하는 문장이 포함되어 있습니다. SAML은 세 가지 유형의 어설션을 제공합니다:
- 인증 어설션: 서비스 제공자가 특정 시간 동안 인증 방법으로 ID 제공자에게 실제로 인증되었음을 주장합니다.
- 속성 어설션: 주제가 특정 속성과 연관되어 있음을 주장합니다. 속성은 단순한 이름-값 쌍입니다. 신뢰 당사자는 이러한 속성을 사용하여 접근 제어 결정을 내립니다.
- 권한 부여 결정 어설션: 주체가 자원에 대한 증거를 제시함으로써 해당 자원에 대한 작업을 수행할 수 있음을 주장합니다. SAML에서 권한 결정 상태의 표현은 의도적으로 제한됩니다.
어설션 소비자 서비스 (ACS)
ACS는 ID 제공자가 사용자 인증 응답 후 리디렉션하는 지점입니다. IdP가 리디렉션하는 지점은 개인 정보를 전송하는 HTTPS 엔드포인트입니다.
기본 릴레이 상태
SAML 메시지가 인증된 후 사용자가 리디렉션되는 기본 URL입니다. 기본 릴레이 상태는 IdP와 SP 간의 메시지 조정을 위해 사용됩니다.
SAML은 널리 사용되는 프로토콜이며, SAML 어설션을 디코딩해야 할 때가 많습니다. 다음은 SAML 메시지 및 어설션을 인코딩, 디코딩, 포맷하는 데 유용한 도구입니다.
#1. SAMLtool

SAMLtool 은 OneDesign에서 제공하는 온라인 SAML 도구 및 툴킷 모음입니다. SAML 메시지 인코딩/디코딩, 어설션 암호화/복호화, 메시지/어설션 서명/검증 기능을 제공합니다. 또한, 다양한 CMS와 통합할 수 있는 플러그인도 제공합니다.
#2. Samtool.io

samltool.io는 Auth0에서 제공하는 온라인 도구로, SAML 메시지 및 어설션을 디코딩, 검사, 유효성 검사할 수 있습니다. 간단히 XML 또는 URL을 복사하여 붙여넣기만 하면 됩니다.
#3. SAM 디코더

SAM 디코더는 PingIdentity에서 제공하는 SAML 디코딩을 위한 간단한 온라인 도구입니다. SAML 메시지, 어설션, 메타데이터를 디코딩, 확장, 포맷할 수 있습니다.
마무리
SAML 표준은 마크업 언어를 기반으로 중앙 인증 인스턴스를 구현하는 데 매우 효과적입니다. 특히 높은 수준의 효율성과 보안 표준을 제공한다는 점이 큰 장점입니다.
개별 애플리케이션이 사용자 데이터를 저장하거나 동기화할 필요가 없어 보안 유출 위험을 최소화합니다. 결과적으로 높은 수준의 보안과 최상의 사용 편의성을 조화시킨다는 핵심 목표를 달성할 수 있습니다.
더불어 최고의 사용자 인증 플랫폼을 살펴보는 것도 좋습니다.