Tổng quan về các phương thức xác thực của Spotnana

Người tạo: Ashish Chaudhary, Đã sửa đổi vào Sat, 4 Tháng 10 lúc 9:32 CH bởi Ashish Chaudhary

Tổng quan về các luồng xác thực của Spotnana

MỤC LỤC

Spotnana cung cấp nhiều phương thức xác thực khác nhau, giúp đối tác tích hợp an toàn với nền tảng của chúng tôi. Tài liệu này sẽ giới thiệu tổng quan về các phương thức xác thực hiện đang được Spotnana hỗ trợ, kèm theo giải thích chi tiết về từng quy trình. Các luồng xác thực này sẽ minh họa cách Spotnana xác thực và phân quyền cho người dùng truy cập vào các tài nguyên cấp tổ chức (tức là tài nguyên thuộc sở hữu của doanh nghiệp người dùng trên nền tảng Spotnana).


Các thành phần chính

Trước khi bắt đầu, quý khách vui lòng tham khảo danh sách dưới đây để hiểu các thành phần hệ thống quan trọng được nhắc đến trong tài liệu này.

  • Giao diện Spotnana UI(Giao diện người dùng Spotnana) Chỉ giao diện web phía người dùng của Spotnana (ví dụ: công cụ đặt vé trực tuyến - Online Booking Tool) hoặc ứng dụng di động Spotnana. Đặc biệt, thuật ngữ này đề cập đến trang đăng nhập, nơi bắt đầu quy trình xác thực khi người dùng đăng nhập hoặc tạo tài khoản mới.
  • Máy chủ Spotnana Là hệ thống máy chủ phía sau của Spotnana, dùng cho mục đích xác thực (ví dụ: phân quyền truy cập tài nguyên cho người dùng, lưu trữ và xử lý thông tin người dùng một cách an toàn).
  • Giao diện đối tác (Partner UI) (Giao diện người dùng của đối tác) Là giao diện (ứng dụng phía người dùng) mà đối tác sử dụng để truy cập nền tảng Spotnana. Ví dụ, với xác thực qua iFrame, nền tảng Spotnana sẽ được nhúng vào giao diện của đối tác và người dùng sẽ truy cập Spotnana thông qua giao diện này.
  • Máy chủ đối tác Là một hoặc nhiều máy chủ phía sau do đối tác sử dụng để tích hợp với Spotnana.
  • Spotnana IdP (Nhà cung cấp danh tính Spotnana) Dịch vụ nội bộ của Spotnana dùng để quản lý danh tính và phân quyền cho người dùng.
  • IdP của đối tác Là các nhà cung cấp danh tính bên thứ ba mà đối tác sử dụng, ví dụ như Google hoặc Azure. 
  • OBT Công cụ đặt vé trực tuyến (Online Booking Tool - OBT) của Spotnana, truy cập tại https://app.spotnana.com/ 
  • Subject token Với xác thực qua iFrame (hoặc trao đổi token), subject token là đại diện cho danh tính người dùng. Token này sẽ được sử dụng để tra cứu thông tin và phân quyền truy cập nền tảng Spotnana.
  • Access token Là thông tin xác thực (theo chuẩn OAuth) mà ứng dụng đối tác sử dụng để truy cập tài nguyên được bảo vệ thay cho người dùng. Đây là khóa tạm thời cho phép ứng dụng thực hiện các yêu cầu API mà không cần lộ thông tin đăng nhập của người dùng.
  • Refresh token Là thông tin xác thực có thời hạn dài, dùng để lấy access token mới mà không cần người dùng xác thực lại. Thường được cấp cùng với access token khi người dùng đăng nhập lần đầu.
  • Client credentials Là thông tin cấp cho người dùng kết nối trực tiếp tới API của Spotnana (ví dụ: một clientIdclientSecret).
  • PID (Mã định danh cá nhân) Là mã định danh cá nhân được tạo cho người dùng. PID dùng để truy xuất thông tin người dùng từ máy chủ Spotnana.
  • orgId Mã định danh duy nhất do Spotnana cấp cho tổ chức của người dùng.
  • tmcId Mã định danh duy nhất do Spotnana cấp cho TMC (Công ty quản lý du lịch).


Các phương thức xác thực được hỗ trợ

Sau đây là các phương thức xác thực mà Spotnana đang hỗ trợ:


Xác thực bằng mật khẩu

Khi sử dụng xác thực bằng mật khẩu, giao diện Spotnana UI (tức là trang đăng nhập hoặc đăng ký trên OBT) sẽ khởi tạo và quản lý toàn bộ quá trình xác thực với máy chủ Spotnana. Phương thức này có hai luồng khác nhau, tùy vào việc người dùng đăng nhập bằng tài khoản đã có hay đăng ký mới. Cả hai luồng này sẽ được giải thích chi tiết trong các phần bên dưới kèm sơ đồ trình tự.


Người dùng hiện tại

Sơ đồ trình tự và các bước dưới đây sẽ minh họa cách giao diện Spotnana UI tương tác với các dịch vụ phía sau để xác thực người dùng hiện tại.

Hình: Sơ đồ trình tự minh họa luồng xác thực bằng mật khẩu cho người dùng hiện tại.


BướcLuồng
Người dùng hiện tại đăng nhập qua OBT hoặc ứng dụng di động Spotnana bằng email của mình.
1
  • Giao diện Spotnana UI gửi yêu cầu API đến máy chủ Spotnana để lấy thông tin cấu hình xác thực cho người dùng. Yêu cầu này sẽ bao gồm thông tin đăng nhập của người dùng.
  • Phản hồi trả về sẽ chứa tmcId, orgIdauthProviderType.
2
  • Giao diện Spotnana UI gửi yêu cầu API đến Spotnana IdP với clientId, email và mật khẩu. Spotnana IdP sẽ tạo mới một bearer token và trả về cho Spotnana UI.
  • Bước này xác thực thành công người dùng.
3
  • Sau khi người dùng được xác thực ở bước 2, tất cả các yêu cầu API tiếp theo phải chứa bearer token, orgIdtmcId trong phần header của yêu cầu.
  • Bearer token sẽ được kiểm tra ở tất cả các yêu cầu API gửi đến và phản hồi sẽ được trả về Spotnana UI.


Người dùng mới

Sơ đồ trình tự và các bước dưới đây sẽ giải thích cách Spotnana UI tương tác với các dịch vụ phía sau để xác thực người dùng mới (hoặc người dùng hiện tại đang thực hiện đặt lại mật khẩu).


Hình: Sơ đồ trình tự minh họa luồng xác thực bằng mật khẩu cho người dùng mới.


Bước
Luồng
Người dùng mới nhập email trên trang đăng nhập OBT của Spotnana và nhấn Tiếp theo.
1
  • Giao diện Spotnana UI gửi yêu cầu API đến máy chủ Spotnana để lấy thông tin cấu hình xác thực cho người dùng. Yêu cầu này sẽ bao gồm thông tin đăng nhập của người dùng.
  • Phản hồi trả về sẽ chứa tmcId, orgIdauthProviderType.
1 a

Người dùng nhập mật khẩu mới và nhấn Tiếp theo.

2
  • Spotnana UI gửi yêu cầu API đến Spotnana IdP để đăng ký người dùng cùng với clientId, email và mật khẩu mới.
  • Sau khi đăng ký thành công, một mã OTP sẽ được gửi tới email của người dùng.
3
  • Người dùng nhập mã OTP vào giao diện Spotnana UI và nhấn Xác minh.
  • Spotnana UI gửi yêu cầu đến Spotnana IdP để xác minh OTP và tạo bearer token cho đăng nhập.
  • Bearer token sẽ được tạo và trả về Spotnana UI. Điều này xác nhận người dùng đã xác thực thành công và có thể truy cập nền tảng Spotnana bằng bearer token này.
4
  • Sau khi người dùng được xác thực ở bước 3, tất cả các yêu cầu API tiếp theo phải chứa bearer token, orgIdtmcId trong phần header của yêu cầu.
  • Bearer token sẽ được kiểm tra ở tất cả các yêu cầu API gửi đến và phản hồi sẽ được trả về Spotnana UI.


Xác thực qua IdP

Spotnana hỗ trợ xác thực thông qua các IdP như Google, Azure hoặc IdP tùy chỉnh sử dụng OpenID Connect cũng như giao thức SAML. Sơ đồ trình tự và các bước dưới đây sẽ giải thích luồng xác thực qua IdP.

Hình: Sơ đồ trình tự minh họa luồng xác thực qua IdP.


BướcLuồng
Người dùng đăng nhập qua OBT hoặc ứng dụng di động Spotnana bằng email của mình.
1
  • Giao diện Spotnana UI gửi yêu cầu API đến máy chủ Spotnana để lấy thông tin cấu hình xác thực cho người dùng. Yêu cầu này sẽ bao gồm thông tin đăng nhập của người dùng.
  • Phản hồi trả về sẽ chứa tmcId, orgIdauthProviderType.
2

Spotnana UI chuyển hướng yêu cầu sang Spotnana IdP.

3

Spotnana IdP chuyển hướng tiếp sang IdP của đối tác, bắt đầu quá trình xác thực qua IdP cho người dùng.

Lưu ý: Mỗi lần chuyển hướng, hệ thống sẽ trả về mã trạng thái 302 để báo hiệu yêu cầu đã được chuyển sang URL khác.
4

Kết nối được thiết lập giữa Spotnana IdP và IdP của đối tác để xác thực người dùng.

Lưu ý: Trong quá trình này, Spotnana IdP sẽ gửi clientIdclientSecret dưới dạng dữ liệu URL-encoded thông qua API đến IdP của đối tác. Nếu IdP không hỗ trợ định dạng này, máy chủ Spotnana có thể đóng vai trò trung gian để chuyển đổi dữ liệu sang định dạng mà IdP của đối tác chấp nhận.
5

IdP của đối tác xác thực thành công người dùng.

Lưu ý: Sau bước này, hồ sơ người dùng vẫn cần được xác thực qua bearer token.
5 a

Sau khi xác thực thành công, phản hồi từ IdP của đối tác sẽ được gửi về Spotnana IdP.

5 b

Spotnana IdP tạo mã code duy nhất cho hồ sơ người dùng và gửi về Spotnana UI.

6
  • Spotnana UI gửi yêu cầu API đến Spotnana IdP với clientID và mã code nhận được ở bước 5(b).
  • Spotnana IdP tạo mới bearer token và gửi về Spotnana UI.
Lưu ý: Khi bearer token được tạo thành công, người dùng đã được xác thực và có thể truy cập Spotnana.
7
  • Sau khi người dùng được xác thực ở bước 6, tất cả các yêu cầu API tiếp theo phải chứa bearer token, orgIdtmcId trong phần header của yêu cầu.
  • Bearer token sẽ được kiểm tra ở tất cả các yêu cầu API gửi đến và phản hồi sẽ được trả về Spotnana UI.


Xác thực qua API

Các đối tác sử dụng API của Spotnana để kết nối với nền tảng có thể sử dụng endpoint xác thực của chúng tôi để tạo bearer token cho người dùng của mình. Sơ đồ trình tự dưới đây minh họa luồng xác thực cho đối tác sử dụng phương thức này.

Hình: Sơ đồ trình tự minh họa xác thực qua API.


BướcLuồng
1

Người dùng API thực hiện lệnh POST tới endpoint get-auth-token(clientId,clientSecret) trên máy chủ Spotnana để tạo và lấy bearer token tạm thời.

Dưới đây là ví dụ lệnh cURL để gọi endpoint get-auth-token :

curl -i -X POST \
https://api.spotnana.com/get-auth-token \
-H 'Content-Type: application/json' \
-d '{
  "clientId": "sample-apiuser@tmcorg.com",
  "clientSecret": "<password>"
}'
Lưu ý: Hãy thay thế giá trị clientId và clientSecret bằng thông tin đăng nhập mà bạn nhận được từ Spotnana. 
2
  • Máy chủ Spotnana gọi phương thức getToken(clientId,clientSecret) trên Spotnana IdP để tạo bearerToken tạm thời và trả về cho máy chủ Spotnana. Máy chủ Spotnana sẽ gửi bearer token này dưới dạng JSON cho người dùng API.
  • Sau khi nhận được bearer token, tất cả các yêu cầu tiếp theo tới API của Spotnana (ví dụ:


Trip APIs ) đều phải đính kèm bearer token trong phần header để được phân quyền.  

Lưu ý: Endpoint get-auth-token(clientId, clientSecret) có giới hạn 100 lượt gọi API mỗi 5 phút.


Xác thực qua iFrame

Giải pháp iFrame hoặc nhúng là khi đối tác tích hợp giao diện Spotnana UI vào giao diện của mình, tức là người dùng truy cập Spotnana thông qua giao diện đối tác. Trong trường hợp này, việc xác thực người dùng sẽ dựa trên việc trao đổi token giữa hệ thống đối tác và Spotnana.

Lưu ý: Với xác thực qua iFrame, người dùng đăng nhập sẽ được gọi là caller. Cách gọi này nhằm bao quát các trường hợp đặc biệt khi người dùng API/Máy đăng nhập và yêu cầu cấp access token cho người dùng khác. Người dùng API/Máy này có thể sử dụng tài khoản quản trị viên TMC để kết nối trực tiếp với máy chủ Spotnana. Do đó, thuật ngữ caller sẽ được dùng chung, có thể là người dùng đăng nhập tài khoản của mình hoặc người dùng API/Máy yêu cầu access token cho người khác.


Sơ đồ trình tự dưới đây minh họa cách xác thực được thực hiện thông qua trao đổi token giữa Spotnana và máy chủ đối tác.

Hình: Sơ đồ trình tự minh họa xác thực qua iFrame bằng trao đổi token.


BướcLuồng
Caller đăng nhập thông qua giao diện đối tác (Partner UI).
1Giao diện đối tác hiển thị giao diện Spotnana UI qua iFrame.
2Spotnana UI gửi yêu cầu tới Partner UI qua post message để lấy token. Yêu cầu này có type=TOKEN_EXCHANGE_REQUEST.
3

Partner UI gửi yêu cầu API lên máy chủ đối tác để lấy OAuth token, bắt đầu các bước xác thực tiếp theo.

3 a

Máy chủ đối tác gọi máy chủ Spotnana với thông tin đăng nhập người dùng và subject token làm tham số. Máy chủ Spotnana kiểm tra xem yêu cầu đến từ người dùng API/Máy hay không.

3 b
  • Máy chủ Spotnana gọi lại máy chủ đối tác để lấy email của subject (tức là caller).
  • Email sẽ được trả về cho máy chủ Spotnana để xác định người dùng.
3 c
  • Phản hồi cho yêu cầu API ở bước 1 sẽ được máy chủ Spotnana gửi về máy chủ đối tác, gồm access token và refresh token.
  • Các thông tin này sẽ được gửi tiếp cho Partner UI.
4

Partner UI gửi token sang Spotnana UI qua post message với type=TOKEN_EXCHANGE_RESPONSE.

5
  • Spotnana UI gửi yêu cầu API tới máy chủ Spotnana để tạo và lấy bearer token mới.
  • Bearer token sẽ được máy chủ Spotnana tạo và trả về Spotnana UI.
Lưu ý: Khi bearer token được tạo thành công, người dùng đã được xác thực và có thể truy cập Spotnana.
6
  • Sau khi người dùng được xác thực ở bước 3, tất cả các yêu cầu API tiếp theo phải chứa bearer token, orgIdtmcId trong phần header của yêu cầu.
  • Bearer token sẽ được kiểm tra ở tất cả các yêu cầu API gửi đến và phản hồi sẽ được trả về Spotnana UI.


Xác thực bằng mã ủy quyền (Auth code)

Sơ đồ trình tự dưới đây minh họa cách xác thực được thực hiện thông qua mã ủy quyền (authorization code).

Hình: Sơ đồ trình tự minh họa xác thực bằng mã ủy quyền (auth code).


BướcLuồng
1

Partner UI gọi máy chủ đối tác để lấy mã ủy quyền (auth code) cho caller đăng nhập. Auth code này sẽ được trả về cho Partner UI.

2

Partner UI gửi yêu cầu tới Spotnana UI bằng một URL chuyển hướng tùy chỉnh, trong đó có tmcIdauthCode làm tham số.

3

Spotnana UI thực hiện gọi API POST tới máy chủ Spotnana với endpoint v2/auth/token/companies/<tmcId>(authCode) .

3 a
  • Máy chủ Spotnana gửi yêu cầu tới máy chủ đối tác để lấy pid của người dùng dựa trên auth code.
  • PID của người dùng sẽ được trả về máy chủ Spotnana.
3 b

Access token và refresh token sẽ được máy chủ Spotnana tạo và gửi về Spotnana UI.

4
  • Spotnana UI gửi yêu cầu tới máy chủ Spotnana với access token và refresh token để tạo và lấy bearer token truy cập.
  • Bearer token sẽ được tạo và gửi về Spotnana UI.
Lưu ý: Khi bearer token được tạo thành công, người dùng đã được xác thực và có thể truy cập Spotnana.
5
  • Sau khi người dùng được xác thực ở bước 4, tất cả các yêu cầu API tiếp theo phải chứa bearer token, orgIdtmcId trong phần header của yêu cầu.
  • Bearer token sẽ được kiểm tra ở tất cả các yêu cầu API gửi đến và phản hồi sẽ được trả về Spotnana UI.


Lưu ý: Luồng xác thực này không áp dụng trong trường hợp quản trị viên TMC cho phép nhiều người dùng sử dụng cùng một email khi đăng nhập.


Xác thực máy với máy (M2M)

Phương thức xác thực M2M phù hợp khi luồng xác thực yêu cầu ứng dụng khách truy cập vào một callback URL của bên thứ ba để tạo accessToken cho người dùng. Sơ đồ trình tự dưới đây minh họa luồng xác thực M2M.

Hình: Sơ đồ trình tự minh họa luồng xác thực M2M.


BướcLuồng
Tất cả khóa công khai của các ứng dụng dùng trong quá trình xác thực sẽ được đồng bộ giữa máy chủ Spotnana và Spotnana IdP. Những khóa này sẽ được dùng để xác minh access token trong luồng xác thực.
1

Máy chủ đối tác gửi yêu cầu API tới /oauth2/token(clientId,clientSecret) trên Spotnana IdP để tạo bearer token mới. Bearer token này sẽ được trả về máy chủ đối tác.

2
  • Máy chủ đối tác gửi yêu cầu API tới callback URL của bên thứ ba để tạo access token cho người dùng.
  • Access token này sẽ được tạo và gửi về máy chủ Spotnana.
3
  • Máy chủ Spotnana sẽ kiểm tra chữ ký của access token bằng các khóa công khai đã đồng bộ trước đó, đồng thời xác thực claim_id để xác minh danh tính đối tác.
  • Access token sau đó sẽ được gửi về máy chủ đối tác để xác thực người dùng.




Bài viết này có hữu ích không?

Thật tuyệt!

Cám ơn phản hồi của bạn

Rất tiếc là chúng tôi không giúp được nhiều!

Cám ơn phản hồi của bạn

Hãy cho chúng tôi biết làm thế nào chúng tôi có thể cải thiện bài viết này!

Chọn ít nhất một trong những lý do
Yêu cầu xác minh CAPTCHA.

Đã gửi phản hồi

Chúng tôi đánh giá cao nỗ lực của bạn và sẽ cố gắng sửa bài viết