Spotnana 驗證流程總覽
目錄
Spotnana 提供多種驗證方式,協助合作夥伴安全地串接我們的平台。這份說明文件會帶你快速了解 Spotnana 目前支援的各種驗證方式,並詳細說明每一種流程。這些驗證流程主要是用來說明 Spotnana 如何驗證並授權使用者,讓他們能夠存取公司在 Spotnana 平台上的專屬資源。
主要元件說明
在開始之前,建議先看過這份元件說明,了解本文件中會提到的主要系統元件。
- Spotnana UI(Spotnana 使用者介面) 指的是 Spotnana 的前端網頁應用程式(也就是線上訂位工具)或 Spotnana 行動應用程式。這裡主要是指登入頁面,當使用者登入或註冊時,會啟動前端的驗證流程。
- Spotnana server 指的是 Spotnana 負責驗證的後端伺服器(例如授權使用者存取資源,以及安全儲存、處理使用者資料)。
- 合作夥伴 UI (合作夥伴的使用者介面) 合作夥伴用來存取 Spotnana 平台的前端介面。例如,在 iFrame 驗證情境下,Spotnana 會嵌入在合作夥伴的 UI 裡,使用者會透過合作夥伴的 UI 進入 Spotnana。
- 合作夥伴 server 指的是合作夥伴用來串接 Spotnana 的一個或多個後端伺服器。
- Spotnana IdP (Spotnana 身分驗證服務) 指的是 Spotnana 內部用來管理使用者身分與授權的服務。
- 合作夥伴 IdP 合作夥伴所使用的第三方身分驗證服務(IdP),常見的有 Google、Azure 等。
- OBT Spotnana 線上訂位工具(OBT),可透過下列網址使用 https://app.spotnana.com/
- Subject token 在 iFrame(或稱 token 交換)驗證中,subject token 代表使用者的身分。這個 token 會用來查詢使用者資訊並授權他們進入 Spotnana 平台。
- Access token 這是一組憑證(OAuth),讓合作夥伴的應用程式可以代表使用者存取受保護的資源。它是一組暫時性的授權金鑰,讓應用程式可以安全發送 API 請求,而不用暴露使用者的帳號密碼。
- Refresh token 這是一組長效憑證,可以用來更新 access token,不需要使用者再次登入。通常在首次登入時,會和 access token 一起發放。
- Client credentials 提供給直接連接 Spotnana API 的使用者(例如:一組唯一的
clientId
和clientSecret
)。 - PID(個人識別碼) 為每位使用者建立的專屬識別碼。PID 會用來從 Spotnana server 取得使用者資訊。
orgId
Spotnana 指派給每個公司(組織)的唯一識別碼。tmcId
Spotnana 指派給每個 TMC(旅行管理公司)的唯一識別碼。
支援的驗證方式
Spotnana 目前支援以下幾種驗證方式:
密碼驗證
如果你選擇用密碼驗證,Spotnana UI(也就是 OBT 的登入或註冊頁面)會負責啟動並處理整個驗證流程,與 Spotnana 的後端伺服器互動。這種方式會依照使用者是登入現有帳號,還是註冊新帳號,流程上有些不同。以下會用流程圖來說明這兩種情境的驗證步驟。
現有使用者
下方的流程圖及步驟,會說明 Spotnana UI 如何與後端服務互動,完成現有使用者的驗證。
圖示: 說明現有使用者密碼驗證流程的時序圖。
步驟 | 流程說明 |
---|---|
現有使用者在 OBT 或 Spotnana 行動版輸入 email 進行登入。 | |
1 |
|
2 |
|
3 |
|
新使用者
下方的流程圖及步驟,會說明 Spotnana UI 如何與後端服務互動,完成新使用者(或要重設密碼的現有使用者)的驗證。
圖示: 說明新使用者密碼驗證流程的時序圖。
步驟 | 流程說明 |
---|---|
新使用者在 Spotnana OBT 登入頁輸入 email,然後點選 下一步。 | |
1 |
|
1 a | 使用者輸入新密碼後,點選 下一步。 |
2 |
|
3 |
|
4 |
|
IdP 驗證
Spotnana 支援透過像是 Google、Azure 及客製化 IdP(支援 OpenID Connect 或 SAML)的驗證。下方會用流程圖及步驟說明 IdP 驗證的流程。
圖示: 說明 IdP 驗證流程的時序圖。
步驟 | 流程說明 |
---|---|
使用者在 OBT 或 Spotnana 行動版輸入 email 進行登入。 | |
1 |
|
2 | Spotnana UI 會將請求導向 Spotnana IdP。 |
3 | Spotnana IdP 會再將請求導向合作夥伴的 IdP,正式啟動 IdP 驗證流程。 注意: 每次重新導向時,系統會回傳 302 狀態碼,表示請求已被導向到其他網址。 |
4 | Spotnana IdP 和合作夥伴 IdP 之間會建立連線,確保使用者由合作夥伴 IdP 驗證通過。 注意: 在這個連線過程中,Spotnana IdP 會用 API call 方式,把 |
5 | 合作夥伴 IdP 驗證使用者成功。 注意: 這一步完成後,使用者資料還需要經過 bearer token 驗證。 |
5 a | 合作夥伴 IdP 驗證成功後,會把回應傳給 Spotnana IdP。 |
5 b | Spotnana IdP 會針對該使用者產生一組唯一的 code,並傳給 Spotnana UI。 |
6 |
注意: 成功產生 bearer token 就代表使用者已經驗證通過,可以存取 Spotnana。 |
7 |
|
API 驗證
如果合作夥伴是透過 Spotnana API 串接平台,可以用我們的驗證端點,為使用者產生 bearer token。下方的時序圖會說明 API 驗證的流程。
圖示: 說明 API 驗證流程的時序圖。
步驟 | 流程說明 |
---|---|
1 | API 使用者發送 POST 請求到 下面提供一個 cURL 範例,說明如何呼叫 curl -i -X POST \ https://api.spotnana.com/get-auth-token \ -H 'Content-Type: application/json' \ -d '{ "clientId": "sample-apiuser@tmcorg.com", "clientSecret": "<password>" }' 注意: 請將 |
2 |
|
API 使用者拿到 bearer token 後,之後所有發送到 Spotnana API(例如 行程相關 API)的請求,都必須在 header 夾帶 bearer token 才能授權。
注意: 這個 get-auth-token(clientId, clientSecret)
端點每 5 分鐘最多只能呼叫 100 次。
iFrame 驗證
iFrame 或嵌入式方案是指合作夥伴把 Spotnana UI 直接嵌入在自己的 UI 裡,這樣使用者就會從合作夥伴的 UI 進入 Spotnana。這種情境下,使用者的驗證主要是透過合作夥伴與 Spotnana 之間的 token 交換來完成。
注意:在 iFrame 驗證流程中,登入的使用者會被稱為 caller。這是因為有些情境下,API/機器用戶會以管理員身分登入,並為其他使用者請求 access token。所以我們用 caller 這個詞,泛指登入自己帳號的使用者,或是 API/機器用戶幫其他人請求 access token 的情況。
下方的時序圖會說明 Spotnana 與合作夥伴 server 之間,透過 token 交換來處理驗證流程。
圖示: 說明 iFrame 驗證流程(token 交換)的時序圖。
步驟 | 流程說明 |
---|---|
caller 透過合作夥伴 UI 進行登入。 | |
1 | 合作夥伴 UI 會用 iFrame 方式顯示 Spotnana UI。 |
2 | Spotnana UI 會透過 post message 向合作夥伴 UI 請求 token,請求內容會帶上 type=TOKEN_EXCHANGE_REQUEST 。 |
3 | 合作夥伴 UI 會發送 API 請求給合作夥伴 server,取得 OAuth token,啟動後續驗證流程。 |
3 a | 合作夥伴 server 會帶著使用者憑證和 subject token,呼叫 Spotnana server。Spotnana server 會檢查這個請求是不是來自 API/機器用戶。 |
3 b |
|
3 c |
|
4 | 合作夥伴 UI 會用 post message,把 token 傳給 Spotnana UI,內容帶上 |
5 |
注意: 成功產生 bearer token 就代表使用者已經驗證通過,可以存取 Spotnana。 |
6 |
|
授權碼驗證
下方的時序圖會說明,如何用授權碼來處理驗證流程。
圖示: 說明授權碼驗證流程的時序圖。
步驟 | 流程說明 |
---|---|
1 | 合作夥伴 UI 會呼叫合作夥伴 server,取得 caller 的授權碼,然後回傳給合作夥伴 UI。 |
2 | 合作夥伴 UI 會用帶有 |
3 | Spotnana UI 會發送 POST API 請求到 Spotnana server,使用 |
3 a |
|
3 b | Spotnana server 會產生 access token 和 refresh token,並回傳給 Spotnana UI。 |
4 |
注意: 成功產生 bearer token 就代表使用者已經驗證通過,可以存取 Spotnana。 |
5 |
|
注意: 這種驗證流程不適合 TMC 管理員讓多位使用者共用同一個 email 登入的情境。
機器對機器(M2M)驗證
M2M 驗證適合用在客戶端應用程式需要存取第三方 callback URL,來為使用者產生 accessToken
的情境。下方時序圖會說明 M2M 驗證流程。
圖示: 說明 M2M 驗證流程的時序圖。
步驟 | 流程說明 |
---|---|
所有參與驗證的應用程式公鑰,會在 Spotnana server 和 Spotnana IdP 之間同步。這些公鑰會用來驗證 access token。 | |
1 | 合作夥伴 server 會發送 API 請求到 |
2 |
|
3 |
|
這篇文章是否有幫助?
太棒了!
感謝您提供意見回饋
抱歉,沒能幫到您
感謝您提供意見回饋
意見已發送
感謝您的寶貴意見,我們將嘗試修改這篇文章