개발자를 위한 SAML 앱 통합 간소화
SAML이 무엇인지, SSO 구현 방법, Identity Provider (IdP) 또는 Service Provider (SP)로서 SAML 앱을 통합하는 방법에 대한 빠른 단계들을 알아봅니다.
싱글 사인 온 (SSO)은 현대 앱의 핵심이며, SAML은 비즈니스 ID 시스템 간에 안전하고 친숙한 인증을 가능하게 합니다. 이 가이드는 개발자와 디자이너에게 명확한 단계와 실용적인 예시를 제공하여 SAML을 효율적으로 구현할 수 있도록 간소화합니다.
SAML SSO와 SAML 앱이란 무엇인가요?
Security Assertion Markup Language (SAML)은 XML 기반의 표준으로, **Identity Provider (IdP)**와 **Service Provider (SP)**라는 두 주요 플레이어 간의 인증 및 권한 부여 데이터를 교환하는 데 사용됩니다. 이는 조직 내에서 싱글 사인 온 (SSO)의 일반적인 솔루션으로, 기업 사용자가 한 번 로그인하여 여러 애플리케이션에 접근할 수 있도록 합니다.
Identity Provider (IdP)는 사용자 자격 증명(예: 사용자 이름 및 비밀번호)을 관리하고 확인하는 역할을 담당합니다. 사용자가 보호된 서비스에 접근하려고 할 때, IdP는 사용자의 신원을 확인하고 이 확인 내용을 서비스에 보내줍니다.
- 예: 대기업에서 Microsoft Azure AD를 사용하여 직원 계정을 관리한다고 가정합시다. Salesforce에 로그인하려고 할 때, Azure AD는 IdP 역할을 합니다. Azure AD는 자격 증명을 확인하고 Salesforce에 사용자가 권한을 가지고 있음을 알립니다.
Service Provider (SP)는 사용자가 실제로 접근하려고 하는 애플리케이션이나 서비스입니다. 이는 IdP가 인증의 주요 작업을 처리하도록 의존합니다.
- 예: 위의 시나리오를 계속 이어가면, Salesforce는 SP입니다. 이는 Microsoft Azure AD (IdP)가 당신의 신원을 확인해 줄 것을 의존합니다. 한 번 Azure AD가 당신의 신원을 보증하면, Salesforce는 사용자를 허가합니다.
“SAML 앱”에 대해 이야기할 때, 사람들은 보통 SP를 가리킵니다.
SAML 프로토콜을 사용하여 Azure Ad / Google Workspace처럼 애플리케이션 통합을 지원하기 위해 IdP로서 서비스를 설정할 수 있으며, 아니면 Salesforce / Slack처럼 사용자를 위해 SSO를 지원하기 위해 SP로서 서비스를 설정할 수 있습니다.
SAML Assertion은 SAML 프로토콜의 핵심입니다. 이는 IdP에 의해 만들어지고 SP로 보내지는 디지털 "메모"이며, "이 사용자의 신원을 확인했습니다." 라고 말합니다. 다음으로, IdP와 SP 모두에 대해 이 프로세스가 어떻게 작동하는지를 다룰 것입니다.
SAML Identity Provider 역할을 수행할 때
서비스가 IdP로 기능할 때, 여러 애플리케이션에 SAML 인증을 활성화합니다. 이는 사용자가 단일 기업 ID를 통해 다양한 서비스에 접근할 수 있도록 합니다.
다음은 IdP의 전형적인 SAML SSO 워크플로우입니다:
- 사용자가 Salesforce와 같은 애플리케이션 (SP)에 접근하려고 합니다.
- 애플리케이션은 사용자를 인증을 위해 IdP로 리디렉션합니다.
- 사용자는 IdP의 로그인 페이지에서 자격 증명을 입력합니다.
- IdP가 자격 증명을 확인합니다.
- 자격 증명이 확인되면, IdP는 SAML 어서션을 SP로 반환합니다.
- SP는 어서션을 처리하고, 유효성을 확인한 후 사용자에게 접근을 허가합니다.
SAML 서비스 제공자 역할을 수행할 때
서비스가 SP일 경우, 다양한 IdP와 통합하여 사용자들에게 SSO 기능을 제공합니다. 이는 서로 다른 조직이나 테넌트의 기업 사용자가 안전하고 효율적으로 애플리케이션에 접근할 수 있게 합니다.
다음은 SP가 시작한 SSO의 워크플로입니다:
- 사용자가 애플리케이션에 로그인하려고 합니다.
- 애플리케이션은 SAML 요청을 생성하고 사용자에게 IdP의 로그인 페이지로 리디렉션합니다.
- 사용자가 IdP에 로그인합니다 (또는 이미 로그인 상태라면 이 단계를 건너뜁니다).
- IdP는 사용자의 신원을 확인한 후, 사용자의 세부 정보를 SAML 어서션에 포장합니다.
- IdP는 어서션을 애플리케이션으로 반환합니다.
- 서비스에서 어서션을 확인하고, 유효하다면 사용자가 애플리케이션에 접근할 수 있습니다.
SAML SSO의 주요 매개변수
성공적인 SAML SSO 통합을 위해, IdP와 SP는 특정 매개변수를 공유해야 합니다. 다음은 필수 항목입니다:
IdP의 매개변수
- IdP 엔터티 ID: SAML 통신에서 IdP의 고유 식별자, 디지털 명패와 같습니다.
- SSO URL: SP가 사용자 인증을 위해 리디렉션하는 로그인 엔드포인트 (URL).
- X.509 인증서: SAML 어서션 서명에 사용되는 공개 키, 인증의 신뢰성을 확인하는 "봉인"입니다.
팁: IdP가 SAML 메타데이터 URL을 제공하는 경우, 필요한 모든 정보(예: 인증서, SSO URL, IdP 엔터티 ID)를 한 장소에서 자동으로 가져올 수 있어 실수의 위험을 줄이고 수동으로 인증서 파일을 업데이트하는 번거로움을 덜 수 있습니다.
SP의 매개변수
- SP 엔터티 ID: SP의 고유한 식별자, IdP 엔터티 ID와 유사합니다.
- Assertion Consumer Service (ACS) URL: SP가 IdP로부터 SAML 어서션을 받기를 기대하는 SP 엔드포인트입니다.
- RelayState (선택 사항): 사용자가 원래 방문하려 했던 URL과 같은 데이터를 SAML 프로세 스를 통해 전달하는 데 사용됩니다.
SAML 속성 매핑 및 암호화
- NameID 형식: 사용자 식별자 형식을 정의합니다 (예: 이메일 주소 또는 사용자 이름).
- SAML 속성: 이는 IdP가 SP에 보내는 추가적인 사용자 세부 정보로, 역할, 이메일, 부서 등이 포함됩니다.
- 예: IdP가 서명한 SAML 어서션에
email
([email protected]),role
(admin),department
(engineering)이 포함될 수 있습니다. SP는role
을 사용하여 관리자 권한을 부여하거나department
로 사용자는 적합한 팀에 그룹화할 수 있습니다.이 기본적 사용자 데이터를 얻기 위해 IdP와 SP는 속성을 어떻게 매핑할지 결정해야 합니다. 예를 들어, IdP는 "department"를 팀으로 정의할 수 있지만, SP는 이를 그룹으로 기대할 수 있습니다. 적절한 매핑은 원활한 통신을 보장합니다.
- 예: IdP가 서명한 SAML 어서션에
- 암호화된 어서션 (선택 사항): 민감한 인증 데이터를 보호하기 위해 SAML 어서션은 암호화될 수 있습니다.
- IdP의 역할: SP의 공개 키를 사용하여 어서션을 암호화합니다.
- SP의 역할: 사용자의 세부 정보를 읽기 위해 개인 키로 어서션을 복호화합니다.
이 시점에서, SAML 연결을 설정할 수 있는 필수 정보를 얻었을 것입니다. Salesforce (서비스 제공자)와 Azure AD (Identity Provider)를 연동하려면 다음 단계를 따릅니다:
- Azure AD에서 IdP 엔터티 ID, SSO URL 및 인증서를 가져와 Salesforce에 구성합니다.
- Salesforce의 SP 엔터티 ID 및 ACS URL을 Azure AD에 제공합니다.
Logto는 SAML 통합을 간소화합니다
Logto는 애플리케이션을 지원하기 위해 IdP 또는 SP로서 작동하여 SAML SSO를 지원할 수 있습니다.
Logto를 SAML IdP로 사용하기
Logto는 연합 ID 인증을 위해 다른 애플리케이션이 Logto를 신뢰할 수 있도록 하며, 다중 요소 인증 (MFA)를 지원하여 보안을 강화합니다.
- Logto 앱 생성하기 Logto 콘솔 > 애플리케이션으로 이동하여 새 SAML 앱을 생성합니다.
- SAML 매개변수 구성하기 서비스 제공자(SP)의 Assertion Consumer Service URL 및 SP 엔터티 ID로 앱을 설정합니다.
- 메타데이터 URL 제공하기 Logto는 SP가 SSO URL 및 인증서와 같은 필수 정보를 자동으로 검색할 수 있는 IdP 메타데이터 URL을 제공합니다.
- 고급 설정 (선택 사항)
- 지문과 만료 날짜가 있는 새 인증서를 여러 개 생성할 수 있지만, 한 번에 하나의 인증서만 활성화할 수 있습니다.
- 비즈니스 요구에 맞게 이름 ID 형식을 수정합니다.
- 서비스 제공자로부터 x509 인증서를 복사하여 붙여넣음으로써 SAML 어서션 암호화를 활성화합니다.
- 속성 매핑 (선택 사항) 서비스 제공자 (SP)와 공유할 사용자 속성을 쉽게 사용자 정의할 수 있습니다.
자세한 안내는 공식 문서를 참조하세요: SAML App
Logto를 SAML SP로 사용하기
Logto는 SAML 또는 OIDC 프로토콜을 통해 모든 기업 IdP와 통합할 수 있습니다. 단일 로그인 페이지를 위한 SP 시작 SSO를 설정하든, IdP 시작 SSO를 구성하든, 프로세스는 간단합니다.
- 기업 연결기 생성하기 Logto 콘솔 > 기업 SSO로 이동하여 새 기업 연결기를 생성합니다. 프로토콜 표준으로 SAML을 선택합니다.
- SAML 매개변수 구성하기 IdP에서 메타데이터 URL 또는 메타데이터 XML 파일을 제공합니다. 메타데이터가 없다면, IdP 엔터티 ID, SSO URL을 입력하고 서명 인증서를 업로드하여 수동 구성으로 전환합니다.
- ACS URL 및 SP 엔터티 ID 공유하기 Logto의 ACS URL과 SP 엔터티 ID를 IdP에 제공하여 통합 설정을 완료합니다.
- 속성 매핑 (선택 사항) 이메일 또는 이름과 같은 사용자 데이터 매핑을 구성하여 IdP와 Logto 간의 정보가 올바르게 전달되도록 합니다.
- 기업 이메일 도메인 추가하기 기업 연결기의 "SSO 경험" 탭에서 하나 이상의 이메일 도메인을 추가합니다. 이를 통해 지정된 도메인을 가진 사용자만 SSO를 통해 인증할 수 있습니다.
- IdP 시작 SSO 활성화 (선택 사항) IdP 대시보드에서 애플리케이션에 직접 로그인할 수 있는 기능을 제공해야 하는 경우에만 IdP 시작 SSO를 활성화합니다.
자세한 안내는 공식 문서를 참조하세요: Enterprise SSO documentation.
마무리 생각
SAML은 SSO를 위한 표준화되고 안전한 방법을 제공하여 인증을 원활하게 만듭니다. Logto는 IdP 또는 SP로 설정하든 관계없이 과정이 간소화됩니다. 사용자 친화적인 인터페이스와 클라우드 및 오픈 소스 버전을 지원하여, Logto는 SAML 통합의 복잡성을 제거합니다. 몇 가지 매개변수만 구성하면, 모든 SAML IdP 또는 SP와 서비스를 연결하여 사용자에게 훌륭한 경험을 제공할 수 있습니다.