SAML v2 簡介
安全性聲明標記語言 (SAML) 是標準 SSO 格式。其 XML 架構透過數位簽章的 XML 文件交換資訊,實現無縫驗 證。SAML v2 (或 SAML 2.0) 自 2005 年以來一直是支援網頁式、跨網域 SSO 的標準通訊協定。
授權流程

基本 SSO
無論您選擇什麼功能,基本 SSO 的設定需求都相同。新增會員計畫或信用卡實作將需要額外的資訊。
設定需求
為了正確設定您範本網站的 SAML SSO 存取權,我們需要一些項目,包括:
- 公開金鑰憑證: 您將使用您端方的私密金鑰對 SAML 檔案進行授權,而 Expedia 則會使用公開金鑰進行驗證。
- 受眾: 此為 SAML 斷言所針對的預定服務提供者,其值指定於
AudienceRestriction參數中,以確保該斷言僅被指定的接收者接受。 - 發行者: 負責生成並對 SAML 斷言進行數位簽名的身分提供者 (IDP) 實體,藉此驗證使用 者的已驗證身分。
- 端點詳細資訊: 驗證 (Authn) 端點是身分識別提供者接收驗證請求的 URL。您需要設定您的範本網站,以便在用戶完成驗證後,Expedia SSO 端點能啟動單一登入 (SSO)。
- 應加入允許清單的 IP 位址: 此為允許在範本網站與 Expedia 之間進行通訊的 IP 位址清單。未列入允許清單 (無論是您那邊或我們這邊) 的 IP 位址,將導致進出站 SSO 呼叫皆出現連線問題。
- 訪客流程 (編號 isPassive)) 支援詳情: 該網站是否提供訪客瀏覽體驗,抑或使用者必須始終登入才能存取網站內容。
Expedia 的標準 SAML SSO 實作將使用我們的公開金鑰進行加密、建立目的地端點,並複製您的 IP 允許清單以防止中斷攻擊。
技術需求:
- 您的網站使用 SAML 2.0
- 您的私密金鑰必須用於簽署整個 SAML 回應,且 SAML 有效負載應採用 Base64 編碼
- Expedia 的公開金鑰將用於加密斷言,隨後將使用 Expedia 的私密金鑰進行解密。
- 根據 SAML v2 標準填入簽章值
- 在 SAML 回應中包含目的地和收件人
- 在 SAML 回應中包含簽發者,以便我們擷取正確的憑證
有效負載詳細資料
當客戶透過您的身分識別供應商 (IdP) 登入後,該供應商會將一個稱為「有效載荷」的生成的回應傳送至您的主網站以進行驗證。如果驗證成功,旅客將獲得存取權。我們提供的有效負載包含下列欄位。欄位並非全部必要,但我們會使用其中一些欄位提供使用者體驗 (例如在歡迎訊息中顯示旅客的姓名),並在驗證中使用其他欄位。
| 欄位 | 詳情 | 是否為必要? |
|---|---|---|
membershipId | 旅客帳戶的唯一識別碼 | 是 |
relayState | 驗證完成後,會重新導向旅客前往的網址 | 是 |
languageID | 用於檢視網站的語言 | — |
channelType | 網站最佳化的目標平台 (值:WEB、MOBILE、TABLET) | — |
firstName | 旅客的名字 | 是 |
middleName | 旅客的中間名 | — |
lastName | 旅客的姓氏 | — |
email | 旅客的電子郵件地址 | — |
新增會員計畫
作為您網站模板的一部分,您可以讓客戶在進行旅遊消費時,透過累積忠誠度點數。您的範本亦可讓客戶使用累積的忠誠度點數來購買旅遊商品。
適用與標準實作相同的設定需求。
有效負載詳細資料
除了標準實作中所述的屬性之外,會員賺取點數和兌換功能還需要下列帳戶 (ProgramAccount) 屬性。
| 欄位 | 詳情 | 是否為必要? |
|---|---|---|
programId | 會員計畫的等級識別碼 | 是 |
programAccountNumber | 旅客所屬計畫的帳號 (也稱為 loyaltyAccountNumber) | — |
lastFourDigitsOfCreditCard | 旅客預訂時所用信用卡的末 4 碼 | — |
accountName | 計畫帳戶名稱 | — |
loyaltyConversionRatio | 付款轉換為賺取點數的比率 (例如 $1 = 1 點) | — |
loyaltyAccountBalance | 旅客所賺取會員點數的目前餘額 | 是 |
限制支付卡
我們可以設定您的網站,讓顧客必須使用貴組織的信用卡才能進行預訂。這是選擇性設定,因為所有範本解決方案都可以接受所有主要信用卡或金融卡,以及 PayPal (僅限美國) 。
信用卡安全與儲存
如果選擇要求使用您組織的自訂信用卡進行購買,我們希望您能感到安心。以下是我們的處理方式。
- 卡片資訊會以記號化形式儲存,並連結至旅客的 Expedia 個人檔案。絕不會以未加密的方式儲存。
- 任何人都無法存取未加密的卡片資料,且只能使用安全的 IAM 登入資訊進行解密。
- 當卡片預先載入付款頁面時,只會顯示卡片詳情,不會顯示卡號。
- 旅客必須輸入卡片的信用卡安全碼,才能使用儲存的卡片完成預訂。
設定需求
除了來自標準實作的設定需求之外,新增您的信用卡也表示必須增加額外一層安全性。為此,我們需要:
- 用於 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 程序。接著,您將把客戶重定向至 Expedia 的 SSO 端點,以啟動對該範本網站的單一登入 (SSO)。
AuthnRequest 元素包括:
| 欄位 | 詳情 | 是否為必要? |
|---|---|---|
AssertionConsumerServiceURL | 使用者登入後的 Expedia 範本網站網址 | 是 |
Destination | AuthnRequest 的發佈目的地端點網址 | 是 |
Issuer | 資料的來源;值:Expedia-Test 或 Expedia-Prod | 是 |
Signature | 要由主要網站驗證的 SSO 簽章 | 是 |
如需詳細資訊,請參閱我們的有效負載範例。
Expedia 端點
使用者完成驗證後,您需要將其重定向至{WLTP domain}/sso/saml。