Bỏ qua đến nội dung
AI Portal Docs
Trên trang này Luồng đăng nhập 1/8

Mọi người đăng nhập trên các màn hình do Keycloak hiển thị, mang giao diện của chính portal. Mỗi bản triển khai phục vụ một tổ chức, nên nhà cung cấp của tổ chức là một nút ngay trên màn hình đầu tiên và không ai phải nhập địa chỉ trước; mật khẩu không bao giờ đi qua portal. Hướng dẫn từng bước cho nhân viên có ở Đăng nhập.

Quy tắc chính

  1. Nhà cung cấp đứng đầu. Màn hình mở ra với nút của nhà cung cấp: Sign in with Microsoft, Sign in with Okta hoặc Sign in with SSO.
  2. Nhà cung cấp của bạn xác thực. Entra ID hoặc Okta đăng nhập cho người dùng, kèm MFA của chính nó, rồi trả họ về.
  3. Chỉ tài khoản do portal tự quản lý mới dùng biểu mẫu mật khẩu. Biểu mẫu nằm dưới nút, dành cho Owner được tạo khi thiết lập và tài khoản dự phòng.
  4. Mật khẩu không bao giờ đến portal. Keycloak xử lý mọi thông tin đăng nhập.
  5. Đăng xuất là kết thúc cả hai phiên, phiên của portal và phiên của Keycloak.
Màn hình đăng nhập có nút Sign in with Microsoft, dòng phân cách “or use your email and password” và biểu mẫu mật khẩu bên dưới
Nút nhà cung cấp đứng đầu; biểu mẫu mật khẩu bên dưới dành cho tài khoản nội bộ.
Nút nhà cung cấp đứng đầu; biểu mẫu mật khẩu bên dưới dành cho tài khoản nội bộ.

Luồng đăng nhập

  1. Mở portal

    Backend của portal chuyển hướng trình duyệt sang Keycloak.

  2. Chọn nút nhà cung cấp

    Keycloak hiện nút nhà cung cấp và, bên dưới, biểu mẫu mật khẩu. Nút chuyển trình duyệt sang Entra ID hoặc Okta; Entra ID trả về token mang claim upn. Tài khoản do chính portal quản lý thì điền vào biểu mẫu.

  3. Keycloak trao lượt đăng nhập cho portal

    Portal đổi mã OIDC lấy token. Backend giữ các token này.

  4. Portal đọc chỗ của người dùng

    Portal đọc chỗ của người đó trong tổ chức: phòng ban, vai trò và có đang bị tạm khóa hay không. Xem Tổ chức và chỗ ngồi.

  5. Trình duyệt nhận cookie phiên

    Người dùng vào portal. Từ đây mọi yêu cầu đều được kiểm tra như mô tả ở Xác thực yêu cầu.

Một bước sau đó, chẳng hạn mã dùng một lần, hiện địa chỉ và cho phép đổi địa chỉ, việc này bắt đầu lại luồng. Nút nhà cung cấp mang đúng tên mà portal đã đăng ký: Sign in with Microsoft (kèm logo bốn ô vuông của Microsoft), Sign in with Okta hoặc Sign in with SSO.

Màn hình hiện gì

Tình huốngNgười dùng thấy gì
Đã kết nối nhà cung cấp“Dùng tài khoản công ty để tiếp tục.”, nút nhà cung cấp, dòng “hoặc dùng email và mật khẩu”, rồi biểu mẫu mật khẩu với nút Sign in phụ
Chưa có nhà cung cấp (lần chạy đầu)“Nhập email và mật khẩu của bạn.” và chỉ biểu mẫu mật khẩu, với Sign in là nút chính

Để đăng ký nhà cung cấp, xem Kết nối Entra ID hoặc Kết nối Okta.

Quy tắc với nhà cung cấp

Quy tắcChi tiết
Claim địa chỉupn với Entra ID, email với mọi nhà cung cấp khác
IssuerPhải chỉ đúng một thư mục. Ba endpoint chung của Microsoft đại diện cho mọi tenant nên bị từ chối
Client secretChỉ chuyển vào Keycloak một lần rồi được niêm phong
Tên miền emailThuộc về tổ chức của bạn và được kiểm tra trước khi ghi bất cứ thứ gì. Đăng ký lại nhà cung cấp sẽ sửa được tên miền
Địa chỉ được lưuMã định danh đăng nhập của nhà cung cấp, không phải hộp thư. Ngoại lệ là nhà cung cấp chỉ gửi tên đăng nhập trơn

Phục hồi khi đăng nhập lỗi

Callback đăng nhập là trang mà trình duyệt đang đứng, nên nó trả lời bằng một lần chuyển hướng chứ không bao giờ bằng nội dung lỗi. Trình duyệt được đưa đi đâu tùy vào những gì nó đang mang.

  1. Trạng thái đăng nhập mà portal không xác định được. Có ba trường hợp không phân biệt được: lượt thử đã hết hạn, lượt thử đã dùng rồi, và trình duyệt thiếu cookie ràng buộc.
    • Nếu đã có cookie phiên, nghĩa là đăng nhập đã thành công và callback này chỉ là bản sao thứ hai, nên trình duyệt được đưa vào ứng dụng.
    • Nếu không, portal bắt đầu đăng nhập thêm một lần và đánh dấu trình duyệt trong lúc đó. Đăng nhập thành công sẽ xóa dấu.
  2. Mọi kết quả khác đều về màn hình đăng nhập tại /sign-in-failed, kèm một trong năm lý do.

Năm lý do:

  • lượt thử đã hết hạn mà lần thử lại duy nhất cũng không khắc phục được;
  • nhà cung cấp dừng lại trước khi đến được portal (nhà cung cấp từ chối thì không thử lại, vì lần thử thứ hai cũng nhận cùng câu trả lời);
  • tài khoản không có dòng trong danh bạ;
  • tài khoản đã bị thu hồi quyền truy cập;
  • mọi trường hợp khác.

Luồng đăng nhập và cookie ràng buộc nó đều kéo dài mười phút, nên hết hạn cùng lúc.

Các màn hình đăng nhập

Đăng nhập, đăng ký, khôi phục mật khẩu và xác minh địa chỉ diễn ra trên các trang do Keycloak hiển thị. Các trang này được viết bằng React từ chính component của ứng dụng và biên dịch thành một theme. Có bảy màn hình được làm lại: năm màn hình người dùng đi qua và hai màn hình mà một luồng bị gián đoạn dừng lại. Các màn hình còn lại giữ giao diện gốc của Keycloak.

Thành phầnLấy từ
Các trường đăng kýKhai báo người dùng của Keycloak
Tùy chọn ghi nhớ, khôi phục mật khẩu và đăng kýThiết lập của Keycloak
Nội dung lỗiCủa chính Keycloak

Đăng xuất kết thúc cả hai phiên. Portal tự kết thúc phiên của Keycloak và trả về trình duyệt một phản hồi rỗng. Trang xác nhận đăng xuất của Keycloak cũng được làm theme, dành cho lượt đăng xuất bắt đầu từ nơi khác.

Vì sao lại như vậy

Vì sao thông tin đăng nhập không bao giờ đi qua portal

Phương án để portal tự phục vụ biểu mẫu rồi gửi mật khẩu đến token endpoint của Keycloak đã được cân nhắc và bị loại. Cách đó sẽ:

  • đặt mật khẩu vào bên trong sản phẩm;
  • không hỗ trợ được xác thực đa yếu tố;
  • biến mọi hành động bắt buộc thành mã lỗi;
  • để nhà cung cấp được kết nối qua Keycloak đi theo một đường thứ hai.
Vì sao trình duyệt được đánh dấu khi thử lại

Nếu không có dấu này, một callback liên tục thất bại sẽ đẩy tab qua lại giữa portal và nhà cung cấp chừng nào tab còn mở. Dấu này ngăn lần thất bại thứ hai kích hoạt lần thử thứ ba.

Vì sao địa chỉ được lưu là mã định danh đăng nhập

Entra ID gửi userPrincipalName làm userName trong SCIM và mail làm email công việc, nhưng token của nó chỉ mang giá trị đầu. Lưu hộp thư đã khiến người đã xác thực bị từ chối với lỗi 401.

Bên trong hệ thống

Cách đăng xuất đến được Keycloak

Portal kết thúc phiên Keycloak qua giao diện quản trị của Keycloak. Portal không đưa trình duyệt đến địa chỉ đăng xuất của Keycloak, vì địa chỉ đó đòi identity token làm tham số truy vấn và trả về một trang xác nhận.

Hỏi địa chỉ trước trên bản cài nhiều tổ chức

Một bản cài phục vụ nhiều tổ chức — môi trường phát triển và chụp ảnh tài liệu, không bao giờ là bản triển khai của khách hàng ECV — đăng ký mỗi nhà cung cấp kèm tên miền email của tổ chức thay vì dưới dạng nút. Khi đó Keycloak hỏi địa chỉ trước rồi chuyển địa chỉ công ty sang nhà cung cấp tương ứng. Bản triển khai của khách hàng chỉ có một tổ chức (SINGLE_TENANT), nên không bao giờ có bước này.

Liên quan

AI Portal Docs
EN VI