HTML5/JS
Tài liệu này mô tả cách tích hợp Galaxy ID để bảo vệ các ứng dụng HTML5/JavaScript.
Tên ứng dụng: Galaxy ID
Phiên bản: 0.1
Thông tin kỹ thuật:
Phù hợp với các ứng dụng sử dụng HTML5/Javascript.
Từ viết tắt và thuật ngữ
No.
Tên thuật ngữ
Mô tả
1
GID
Galaxy ID
2
SSO
Single Sign-On
3
Client
Ứng dụng muốn tích hợp với GID
Tóm tắt
Galaxy ID là một hệ thống SSO (đăng nhập một lần, dùng ở nhiều nơi). GID cung cấp các endpoint cho phép client (ứng dụng) có thể xác thực một lần và uỷ quyền ở nhiều client (ứng dụng) khác nhau.
Chuẩn bị
Chúng ta sẽ sử dụng một thư viện Javascript là kecloak-js để tích hợp Galaxy ID. Có thể cài đặt thông qua:
Hoặc cũng có thể sử dụng trực tiếp keycloak.js
Tích hợp
Khởi tạo keycloak
Đặt file keycloak.json (được cung cấp) cùng vị trí với trang HTML và khởi tạo:
Hoặc cũng có thể chỉ định file keycloak.json ở một nơi khác:
Mặc định để xác thực, chúng ta cần phải gọi hàm login. Tuy nhiên có 2 lựa để tự động hoá công việc xác thực là:
login-required: sẽ xác thực nếu đã login hoặc hiển thị trang login nếu chưa xác thực.
check-sso: sẽ chỉ xác thực nếu người dùng đã đăng nhập, nếu người dùng chưa đăng nhập thì sẽ redirect về lại ứng dụng.
Truyền vào onLoad vào hàm keycloak.init() để sử dụng.
Chúng ta cũng có thể sử dụng check-sso một cách thầm lặng mà không redirect đến server và ngược lại mà thực hiện thông qua một iframe ẩn:
Token
Sau khi đã xác thực thành công, chúng ta có thể lấy Bearer token từ keycloak.token
Vì thời hạn của access token ngắn nên chúng ta cần phải cập nhật token mới bằng cách gọi phương thức updateToken
Lấy thông tin user
Có thể lấy thông tin của user từ token trả về của GID (khuyên dùng vì giảm tải được 1 lượng request đáng kể lên server) bằng cách gọi keycloak.tokenParsedtokenParsed

Hoặc cũng có thể thông qua Restful API ở phần tiếp theo.
APIs
Lấy thông tin user
URL: <host>/realms/<realmName>/protocol/openid-connect/userinfo
Method: GET
Header: Authorization: Bearer <access token> (keycloak)
Example request:
Example response:
Logout dùng API
URL: <host>/realms/<realmName>/protocol/openid-connect/logout
Method: GET
Header: Authorization: Bearer <access token> (keycloak)
Example request:
Example response:
Status: 204 (No Content)
Last updated