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
clientId
vàclientSecret
). - 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
- Xác thực qua IdP
- Xác thực qua API
- Xác thực qua iFrame
- Xác thực bằng mã ủy quyền (Auth code)
- Xác thực máy với máy (M2M)
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ước | Luồ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 |
|
2 |
|
3 |
|
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 |
|
1 a | Người dùng nhập mật khẩu mới và nhấn Tiếp theo. |
2 |
|
3 |
|
4 |
|
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ước | Luồ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 |
|
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 |
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 |
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 |
|
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ước | Luồng |
---|---|
1 | Người dùng API thực hiện lệnh POST tới endpoint Dưới đây là ví dụ lệnh cURL để gọi endpoint 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ị |
2 |
|
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ước | Luồng |
---|---|
Caller đăng nhập thông qua giao diện đối tác (Partner UI). | |
1 | Giao diện đối tác hiển thị giao diện Spotnana UI qua iFrame. |
2 | Spotnana 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 |
|
3 c |
|
4 | Partner UI gửi token sang Spotnana UI qua post message với |
5 |
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 |
|
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ước | Luồ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ó |
3 | Spotnana UI thực hiện gọi API POST tới máy chủ Spotnana với endpoint |
3 a |
|
3 b | Access token và refresh token sẽ được máy chủ Spotnana tạo và gửi về Spotnana UI. |
4 |
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 |
|
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ước | Luồ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 |
2 |
|
3 |
|
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
Đã 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