SAML v2 개요
SAML(Security Assertion Markup Language)은 표준 SSO 형식입니다. XML 기반 프레임워크는 디지털 서명된 XML 문서를 통해 정보를 교환하여 원활한 인증이 가능하도록 지원합니다. SAML v2(또는 SAML 2.0)는 2005년부터 웹 기반 도메인 간 SSO를 지원하는 표준 프로토콜입니다.
기본 SSO
선택한 기능에 관계없이 기본 SSO의 설정 요구 사항은 동일합니다. 로열티 또는 신용카드 구현을 추가하려면 추가 정보가 필요합니다.
설정 요구 사항
템플릿 사이트에 대한 SAML SSO 액세스를 올바르게 설정하려면 다음과 같이 몇 가지 사항이 필요합니다.
- 공개 키 인증서(서명 인증을 위해)
- 대상
- 발행자
- 엔드포인트 세부 정보
- 허용 목록에 추가할 IP
- 고객 흐름(isPassive) 지원 세부 정보
Expedia의 표준 SAML SSO 구현은 공개 키를 사용하여 암호화하고, 대상 엔드포인트를 생성하고, IP 허용 목록을 복제하여 방해 공격으로부터 보호합니다.
기술 요구 사항:
- 사이트에서 SAML 2.0을 사용해야 합니다.
- 개인 키는 전체 SAML 응답에 서명하는 데 사용되어야 하며 SAML 페이로드는 Base64로 인코딩되어야 합니다.
- Expedia의 공개 키는 어설션을 암호화하는 데 사용됩니다.
- SAML v2 표준에 따라 서명 값을 채웁니다.
- SAML 응답에 목적지와 수신자를 포함합니다.
- 적절한 인증서를 가져올 수 있도록 SAML 응답에 발행자를 포함합니다.
페이로드 세부 정보
고객이 IdP(ID 공급자)를 통해 로그인하면 생성된 응답(페이로드라고 함)이 인증을 위해 기본 사이트로 전송됩니다. 인증에 성공하면 고객에게 액세스 권한이 부여됩니다. 제공하는 페이로드에는 다음 필드가 포함됩니다. 이러한 필드가 모두 필요한 것은 아니지만 일부 필드는 사용자 경험(예: 환영 메시지에 고객의 이름 표시)에 사용하고 다른 필드는 인증의 일부로 사용합니다.
필드 | 설명 | 필수 여부 |
---|---|---|
membershipId | 고객 계정의 고유 식별자 | 예 |
relayState | 인증이 완료되면 고객이 리디렉션되는 URL | 예 |
languageID | 사이트에서 표시되는 언어 | 아니요 |
channelType | 사이트가 최적화된 플랫폼(값: WEB, MOBILE, TABLET) | 아니요 |
firstName | 고객의 이름 | 예 |
middleName | 고객의 중간 이름 | 아니요 |
lastName | 고객의 성 | 예 |
email | 고객의 이메일 주소 | 예 |
로열티 추가
템플릿 사이트의 일부로 고객이 여행 상품 구매 시 로열티 포인트를 적립할 수 있는 기능을 포함할 수 있습니다. 고객이 적립된 로열티 포인트를 사용하여 여행 상품을 구매하도록 템플릿을 설정할 수도 있습니다.
표준 구현과 동일한 설정 요구 사항이 적용됩니다.
페이로드 세부 정보
표준 구현에 설명된 속성 외에도 로열티 적립 및 사용 기능에는 다음 계정(ProgramAccount) 속성이 필요합니다.
필드 | 설명 | 필수 여부 |
---|---|---|
programId | 로열티 프로그램의 등급 식별자 | 예 |
programAccountNumber | 고객이 가입한 프로그램의 계정 번호(loyaltyAccountNumber 라고 함) | 아니요 |
lastFourDigitsOfCreditCard | 고객이 예약에 사용한 신용카드의 마지막 4자리 숫자 | 아니요 |
accountName | 프로그램 계정 이름 | 아니요 |
loyaltyConversionRatio | 결제액이 적립 포인트로 전환되는 비율(예: $1 = 1포인트) | 아니요 |
loyaltyAccountBalance | 고객이 적립한 로열티 포인트의 현재 잔액 | 예 |
결제 카드 제한
고객이 조직의 신용카드를 사용하여 예약하도록 사이트를 설정할 수 있습니다. 이는 선택 사항입니다. 모든 템플릿 솔루션은 모든 주요 신용카드나 직불카드, 그리고 (미국의 경우) PayPal을 허용할 수 있습니다.
신용카드를 안전하게 저장
조직의 맞춤형 신용카드를 사용하여 구매하도록 선택하는 경우 안전하게 사용할 수 있습니다. 이를 처리하는 방법은 다음과 같습니다.
- 카드 정보는 고객의 Expedia 프로필에 연결된 토큰화된 형태로 저장됩니다. 암호화되지 않은 상태로 저장되는 경우는 없습니다.
- 암호화되지 않은 카드 데이터에 누구도 액세스할 수 없으며, 암호 해독은 안전한 IAM 자격 증명을 사용해서만 수행됩니다.
- 카드가 결제 페이지에 미리 로드되어 있는 경우 카드 번호가 아닌 카드 설명만 표시됩니다.
- 고객은 저장된 카드로 예약을 완료하려면 카드의 CVC를 입력해야 합니다.
설정 요구 사항
표준 구현의 설정 요구 사항 외에도 신용카드를 추가하면 보안 계층을 추가해야 합니다. 이를 위해 다음이 필요합니다.
- AuthnRequest 매개변수에 사용할 엔드포인트
- 서명 인증을 위한 공개 키
Expedia의 개인 키를 사용하여 AuthnRequest 페이로드에 서명하고 공개 키를 공유하여 파트너사에서 서명 검증을 수행합니다.
페이로드 세부 정보
표준 구현에 설명된 속성과 함께 고객이 사이트에 로그인하면 서명 및 암호화된 어설션을 포함한 인코딩된 SAML 응답 페이로드를 안전한 Expedia SSO 엔드포인트로 전송합니다.
페이로드에는 다음과 같은 신용카드 정보도 포함됩니다.
필드 | 설명 | 필수 여부 |
---|---|---|
cardNumber | 청구할 카드 번호 | 예 |
cardType | 사용한 카드 유형(예: Visa, MasterCard, American Express) | 예 |
expirationDate | 사용한 카드의 만료 날짜 | 예 |
addressCategoryCode | 사용된 카드와 연결된 청구 주소 유형(예: 집 또는 사무실) | 예 |
firstAddressLine | 청구 주소의 첫 번째 줄 | 예 |
secondAddressLine | 청구 주소의 두 번째 줄 | 아니요 |
thirdAddressLine | 청구 주소의 세 번째 줄 | 아니요 |
cityName | 청구 주소의 도시 | 예 |
provinceName | 청구 주소의 주/도 | 예 |
postalCode | 청구 주소의 우편 번호 | 예 |
countryCode | 청구 주소의 국가 코드 | 예 |
AuthnRequest
인증되지 않은 사용자가 템플릿 사이트에 액세스하면 Expedia는 AuthnRequest
및 RelayState
매개변수를 모두 엔드포인트로 전송합니다. 그러면 사용자에게 로그인하라는 메시지가 표시되고 SSO 프로세스가 시작됩니다.
AuthnRequest
요소는 다음과 같습니다.
필드 | 설명 | 필수 여부 |
---|---|---|
AssertionConsumerServiceURL | 사용자가 로그인한 후 Expedia 템플릿 사이트의 URL | 예 |
Destination | AuthnRequest를 게시할 엔드포인트의 URL | 예 |
Issuer | 데이터의 출처. 값: Expedia-Test 또는 Expedia-Prod | 예 |
Signature | 기본 사이트에서 검증할 SSO 서명 | 예 |
자세한 내용은 페이로드 예를 참조해 주세요.