SAML v2 簡介
安全性聲明標記語言 (SAML) 是標準 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) 登入之後,會將產生的回應 (稱為有效負載) 傳送至您的主要網站以進行驗證。如果驗證成功,旅客將獲得存取權。我們提供的有效負載包含下列欄位。欄位並非全部必要,但我們會使用其中一些欄位提供使用者體驗 (例如在歡迎訊息中顯示旅客的姓名),並在驗證中使用其他欄位。
欄位 | 詳情 | 是否為必要? |
---|---|---|
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 程序。
AuthnRequest
元素包括:
欄位 | 詳情 | 是否為必要? |
---|---|---|
AssertionConsumerServiceURL | 使用者登入後的 Expedia 範本網站網址 | 是 |
Destination | AuthnRequest 的發佈目的地端點網址 | 是 |
Issuer | 資料的來源;值:Expedia-Test 或 Expedia-Prod | 是 |
Signature | 要由主要網站驗證的 SSO 簽章 | 是 |
如需詳細資訊,請參閱我們的有效負載範例。