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)

keycloak-documentation/javascript-adapter.adoc at main · keycloak/keycloak-documentation (github.com)arrow-up-right

Last updated