한국어
  • SAML
  • SSO
  • Identity Provider

개발자를 위한 SAML 인증 통합 간소화

SAML이 무엇인지, SSO를 구현하는 방법, 그리고 Identity Provider (IdP) 또는 Service Provider (SP)로서 SAML 인증을 빠르게 통합하는 단계에 대해 알아보세요.

Ran
Ran
Product & Design

사용자 인증에 몇 주를 낭비하지 마세요
Logto로 더 빠르게 안전한 앱을 출시하세요. 몇 분 만에 사용자 인증을 통합하고 핵심 제품에 집중하세요.
시작하기
Product screenshot

단일 사인온 (SSO)는 현대 앱의 핵심이며, SAML은 기업 아이덴티티 시스템 간에 안전하고 편리한 인증을 제공합니다. 이 가이드는 개발자와 디자이너를 위해 SAML 구현을 명확한 단계와 실용적인 예제로 쉽게 설명합니다.

SAML 인증 및 SAML 앱이란?

보안 어설션 마크업 랭귀지 (SAML)은 XML 기반 표준으로, 두 주요 참여자 — **아이덴티티 프로바이더 (IdP)**와 서비스 프로바이더 (SP) — 간에 인증 및 권한 데이터를 교환하는 데 사용됩니다. 조직에서 SSO(단일 사인온) 해법으로 흔히 쓰이며, 엔터프라이즈 사용자가 한 번 로그인하여 여러 애플리케이션에 접근할 수 있도록 생활을 더 편리하게 해 줍니다.

아이덴티티 프로바이더 (IdP)는 사용자 자격 증명(예: 아이디, 비밀번호 등)의 관리 및 검증을 담당합니다. 사용자가 보호된 서비스에 접근할 때 IdP는 사용자의 신원을 확인하고 이 정보를 해당 서비스로 전달합니다.

  • 예시: 당신이 대기업에 근무 중이며, 직원 계정을 Microsoft Azure AD로 관리한다고 가정해 봅시다. Salesforce에 로그인하려고 하면 Azure AD가 IdP 역할을 합니다. 당신의 자격 증명을 확인하고 Salesforce에 사용이 허가됐다는 것을 알립니다.

서비스 프로바이더 (SP)는 사용자가 실제로 접근하고자 하는 어플리케이션 또는 서비스입니다. 이들은 인증의 무거운 작업을 IdP에 위임합니다.

  • 예시: 위 시나리오에서 Salesforce가 SP입니다. Microsoft Azure AD(IdP)의 인증 결과를 신뢰하고, Azure AD가 신원을 보장해 주면 Salesforce에 입장할 수 있습니다.

SAML 앱”이란 말을 할 때는 주로 SP를 의미합니다.

SAML 프로토콜을 사용하면, 서비스를 IdP(예: Azure Ad / Google Workspace)로 설정하여 다른 서비스를 통합하거나, SP(예: Salesforce / Slack)로 설정하여 사용자용 SSO를 지원할 수 있습니다.

SAML 어설션은 SAML 프로토콜의 핵심입니다. 이는 IdP가 생성해 SP에 보내는 디지털 “메모”로, “이 사용자가 확인되었습니다”라는 뜻입니다. 이제 IdP와 SP 각각의 동작 방식을 설명하겠습니다.

SAML 아이덴티티 프로바이더로 동작할 때

서비스가 IdP로 기능할 때, 여러 애플리케이션을 대상으로 SAML 인증을 제공합니다. 이를 통해 사용자는 단일 엔터프라이즈 계정으로 다양한 서비스에 접근할 수 있습니다.

as_saml_identity_provider_idp.png

일반적인 IdP의 SAML SSO 워크플로우는 다음과 같습니다:

  1. 사용자가 (예: Salesforce 같은) 애플리케이션(SP)에 접근을 시도합니다.
  2. 해당 애플리케이션이 사용자를 인증을 위해 IdP로 리디렉션합니다.
  3. 사용자는 IdP 로그인 페이지에서 자격 증명을 입력합니다.
  4. IdP가 자격 증명을 확인합니다.
  5. 자격 증명이 검증되면, IdP가 SP로 SAML 어설션을 전달합니다.
  6. SP가 어설션을 처리하고, 유효성을 확인하며 사용자의 접근을 허용합니다.

SAML 서비스 프로바이더로 동작할 때

서비스가 SP일 경우, 다양한 IdP와 통합하여 사용자의 SSO 기능을 제공합니다. 이는 여러 조직 또는 테넌트 소속의 엔터프라이즈 사용자가 당신의 애플리케이션에 안전하고 효율적으로 접근할 수 있게 해 줍니다.

as_saml_service_provider_sp.png

다음은 SP-시작 SSO 워크플로우입니다:

  1. 사용자가 당신의 애플리케이션에 로그인하려고 시도합니다.
  2. 애플리케이션이 SAML 요청을 생성하고 사용자를 IdP 로그인 페이지로 리디렉션합니다.
  3. 사용자가 IdP에서 로그인(또는 이미 로그인된 경우 이 과정을 생략)합니다.
  4. IdP가 사용자의 신원을 검증하고 정보가 확인되면, 사용자의 속성을 SAML 어설션에 담습니다.
  5. IdP가 어설션을 애플리케이션으로 전달합니다.
  6. 애플리케이션이 어설션을 검증하고, 유효하다면 사용자에게 접근을 허용합니다.

SAML SSO의 주요 파라미터

SAML SSO 통합이 성공하려면 IdP 및 SP가 특정 파라미터를 상호 공유해야 합니다. 주요 항목은 다음과 같습니다:

IdP에서 제공하는 파라미터

  1. IdP Entity ID: SAML 통신에서 IdP의 고유 식별자로, 디지털 이름표와 같습니다.
  2. SSO URL: SP가 인증을 위해 사용자를 리디렉션하는 로그인 엔드포인트(URL)입니다.
  3. X.509 인증서: SAML 어설션 서명에 사용되는 공개키로, 보안을 보장합니다. 진위성을 검증하는 "봉인"과 같습니다.

팁: IdP가 SAML 메타데이터 URL을 제공한다면 훨씬 쉬워집니다. 이 URL에 인증서, SSO URL, IdP Entity ID 등 필수 정보가 모두 포함되어 있습니다. 수동 복사-붙여넣기로 인한 오류와 인증서 파일 갱신의 번거로움을 줄일 수 있습니다.

SP에서 제공하는 파라미터

  1. SP Entity ID: SP의 고유 식별자, IdP Entity ID와 비슷합니다.
  2. Assertion Consumer Service (ACS) URL: IdP로부터 SAML 어설션을 받기 위해 SP가 사용하는 엔드포인트입니다.
  3. RelayState (선택): 사용자가 원래 이동하려던 URL 같은 데이터를 SAML 과정 중에 전달할 때 쓰입니다.

SAML 속성 매핑 및 암호화

  1. NameID 형식: 사용자 식별자 형식(예: 이메일 주소, 아이디 등)을 정의합니다.
  2. SAML 속성: 역할, 이메일, 부서 등 추가 사용자 정보를 IdP가 SP로 전달합니다.
    • 예시: IdP가 서명한 SAML 어설션에 email ([email protected]), role (admin), department (engineering)이 있다면, SP는 role을 통해 관리자 권한을 할당하거나 department로 해당 팀에 사용자를 할당할 수 있습니다. 중요한 사용자 데이터를 주고받으려면, IdP와 SP가 속성 매핑 방식을 미리 결정해야 합니다. 예를 들어, IdP는 “department”를 팀(team)이라고 정의하는 반면 SP는 그룹(group)으로 기대할 수 있습니다. 올바른 매핑은 원활한 커뮤니케이션을 보장합니다.
  3. 암호화된 어설션(선택): 민감한 인증 데이터를 보호하기 위해 SAML 어설션을 암호화할 수 있습니다.
    • IdP 역할: SP의 공개키로 어설션을 암호화합니다.
    • SP 역할: 개인키로 어설션을 복호화하여 사용자 정보를 읽습니다.

여기까지 이해했다면 SAML 연동에 필수적인 정보를 갖추셨습니다. Salesforce(SP)와 Azure AD(IdP) 연동 예시는 다음과 같습니다:

  • Azure AD에서 IdP Entity ID, SSO URL, 인증서를 받아 Salesforce에 설정하세요.
  • Salesforce의 SP Entity ID 및 ACS URL을 Azure AD에 등록하세요.

Logto로 SAML 통합을 간편하게

Logto는 IdP 또는 SP로 동작하며, 애플리케이션을 위한 SAML SSO를 지원합니다.

Logto를 SAML IdP로 사용하기

Logto는 타 애플리케이션에서 연합 아이덴티티 인증을 제공받을 수 있게 하며, 강화된 보안을 위해 다단계 인증 (MFA)도 지원합니다.

  1. Logto 앱 생성 Logto 콘솔 > 애플리케이션에서 새 SAML 앱을 만드세요.
  2. SAML 파라미터 구성 서비스 프로바이더(SP)의 Assertion Consumer Service URLSP Entity ID를 앱에 설정합니다.
  3. 메타데이터 URL 제공 Logto는 SP들이 SSO URL, 인증서 등 필수 정보를 자동으로 가져올 수 있도록 IdP 메타데이터 URL을 제공합니다.
  4. 고급 설정 (선택)
    • 여러 새 인증서를 생성(지문 추가 및 만료일 설정)할 수 있으며, 단 하나의 인증서만 활성화할 수 있습니다.
    • 업무 상황에 맞게 Name ID 형식을 수정할 수 있습니다.
    • 서비스 제공자의 x509 인증서를 복사하여 붙여넣으면 SAML 어설션 암호화를 활성화할 수 있습니다.
  5. 속성 매핑 (선택) 사용자의 속성을 서비스 프로바이더(SP)와 공유하는 방식을 손쉽게 커스터마이즈할 수 있습니다.

logto_saml_apps_saml_providers.png

자세한 안내는 공식 문서를 참고하세요: SAML App

Logto를 SAML SP로 사용하기

Logto는 엔터프라이즈 IdP와 SAML 또는 OIDC 프로토콜로 연동됩니다. SP-시작 SSO, IdP-시작 SSO 등 다양한 시나리오를 간단하게 구성할 수 있습니다.

  1. 엔터프라이즈 커넥터 생성 Logto 콘솔 > 엔터프라이즈 SSO에서 새 엔터프라이즈 커넥터를 만드세요. 프로토콜 표준은 SAML로 선택합니다.
  2. SAML 파라미터 구성 IdP에서 메타데이터 URL 혹은 메타데이터 XML 파일 중 하나를 제공합니다. 메타데이터가 없다면 수동 구성으로 전환하여 IdP Entity ID, SSO URL 입력 및 서명 인증서를 업로드하세요.
  3. ACS URL 및 SP Entity ID 공유 Logto의 ACS URLSP Entity ID를 IdP 측에 제공하여 연동을 마무리합니다.
  4. 속성 매핑 (선택) 이메일, 이름 등 사용자 데이터 매핑을 설정하여 IdP와 Logto 간에 정보가 올바르게 전달되도록 합니다.
  5. 엔터프라이즈 이메일 도메인 추가 엔터프라이즈 커넥터 “SSO 경험” 탭에서 하나 이상의 이메일 도메인을 추가합니다. 특정 도메인 소유자만 SSO 인증을 받을 수 있도록 제한합니다.
  6. IdP-시작 SSO 활성화 (선택) 기업 고객이 필요로 할 때만 IdP-시작 SSO를 활성화하세요. 이 기능으로 사용자는 IdP 대시보드에서 바로 애플리케이션에 로그인할 수 있습니다.

logto-enterprise-saml-sso.png

자세한 안내는 공식 문서를 참고하세요: Enterprise SSO documentation.

마무리

SAML은 SSO를 위한 표준화된 안전한 방식으로, 인증 절차를 매끄럽게 만듭니다. Logto는 IdP 또는 SP 환경 모두에서 간편한 SAML 통합을 지원합니다. 사용이 쉬운 인터페이스와 클라우드오픈소스 버전 모두를 지원하는 Logto는 SAML 통합의 복잡함을 줄여줍니다. 몇 가지 파라미터만 설정하면 어떤 SAML IdP나 SP와도 손쉽게 서비스를 연결하고, 진정한 사용자 경험에 집중할 수 있습니다.