Đăng nhập một lần (SSO) với OIDC
Cấu hình SSO OIDC cho phép mọi người đăng nhập vào ReputeCast bằng nhà cung cấp danh tính (IdP) của tổ chức bạn, tự tạo tài khoản ở lần đăng nhập đầu tiên, và nhận vai trò trong không gian làm việc từ các nhóm trên IdP. ReputeCast dùng OpenID Connect; ReputeCast không hỗ trợ SAML hay SCIM.
Trước khi bắt đầu
Phần tiêu đề “Trước khi bắt đầu”- Bạn là quản trị viên hệ thống. SSO được thiết lập một lần cho toàn hệ thống.
- URL công khai đã cố định và dùng
https://(Quản trị hệ thống, rồi Hệ thống và cập nhật, rồi URL công khai). URI chuyển hướng bạn đăng ký ở IdP được tạo từ URL này; nếu sau này URL thay đổi, hãy cập nhật cả đăng ký ở IdP. - Bạn có thể tạo một ứng dụng (client) trong IdP, và biết mọi người trong tổ chức dùng những tên miền email nào.
- Đăng nhập một lần (OpenID Connect) đang bật trong Quản trị hệ thống, rồi Xác thực (mặc định là bật).
Thiết lập một nhà cung cấp
Phần tiêu đề “Thiết lập một nhà cung cấp”
-
Mở Quản trị hệ thống, rồi Nhà cung cấp SSO và chọn Thêm nhà cung cấp SSO. Trong 1 · Cấu hình sẵn, chọn IdP của bạn: Google Workspace, Microsoft Entra ID, Okta, Keycloak, Authentik hoặc OIDC chung. ReputeCast lưu bản nháp ngay; chưa có gì hoạt động cho đến khi bạn bật nhà cung cấp.
-
Trong 2 · Kết nối, sao chép URI chuyển hướng. URI có dạng
<public URL>/auth/oidc/<slug>/callback, trong đó slug lấy từ cấu hình sẵn:google,entra,okta,keycloak,authentikhoặcoidc(nhà cung cấp thứ hai dùng cùng cấu hình sẵn có thêm-2). -
Đăng ký ReputeCast ở IdP như một ứng dụng web dùng authorization code flow, với URI chuyển hướng từ bước 2. Ghi lại URL nhà phát hành (issuer), client ID và client secret.
- Tạo một OAuth client ID loại Web application trong Google Cloud console (APIs & Services › Credentials) và thêm URI chuyển hướng làm authorized redirect URI (tài liệu OpenID Connect của Google, kiểm tra tháng 10/2026).
- URL nhà phát hành (issuer): luôn là
https://accounts.google.com(cấu hình sẵn tự điền). - Nhóm: Google không gửi claim groups qua OIDC, nên không dùng được ánh xạ nhóm. Hãy cấp vai trò mặc định cho tài khoản mới qua tính năng tự tạo tài khoản (bước 7), hoặc gán vai trò trong cài đặt nhóm của từng không gian làm việc.
- Xác thực hai lớp: ReputeCast coi lượt đăng nhập Google là đã qua xác thực hai lớp (khi Workspace bắt buộc Xác minh 2 bước).
- Tạo một app registration (nền tảng Web) trong Microsoft Entra admin center, thêm URI chuyển hướng và tạo client secret (Microsoft identity platform và OpenID Connect, kiểm tra tháng 10/2026). Client secret của Entra có hạn dùng: hãy nhập ngày hết hạn vào ReputeCast để ứng dụng cho bạn biết khi nào cần thay secret.
- URL nhà phát hành (issuer):
https://login.microsoftonline.com/<tenant-id>/v2.0, với tenant ID của bạn (một GUID) hoặc tên miền đã xác minh. Tenant ID nằm ở Entra ID › Overview. - Nhóm: mở Token configuration của app registration, chọn Add groups claim và đưa các security group vào ID token. Entra gửi object ID của nhóm chứ không gửi tên: hãy dán ID vào một ánh xạ và đặt nhãn cho nó. Người thuộc hơn 200 nhóm sẽ nhận một liên kết overage thay cho claim; khi đó hãy dùng app role.
- Xác thực hai lớp được tính khi claim
amrcủa ID token cho biết đã dùng MFA (ví dụ do Conditional Access bắt buộc).
- Tạo một OIDC web application integration với URI chuyển hướng làm sign-in redirect URI (Okta: customize tokens with a groups claim, kiểm tra tháng 10/2026).
- URL nhà phát hành (issuer): tên miền Okta của bạn hoặc một authorization server, ví dụ
https://acme.okta.com/oauth2/default. Bạn tìm thấy nó trong Security › API › Authorization Servers. - Nhóm: thêm một groups claim vào authorization server (bộ lọc: matches regex
.*). Cấu hình sẵn Okta đã yêu cầu sẵn scopegroups. - Xác thực hai lớp được tính khi claim
amrcủa ID token cho biết đã dùng MFA (do sign-on policy bắt buộc).
- Trong realm của bạn, tạo một client OpenID Connect với client authentication bật và URI chuyển hướng làm valid redirect URI (Keycloak server administration guide, kiểm tra tháng 10/2026).
- URL nhà phát hành (issuer): kết thúc bằng realm, ví dụ
https://sso.acme.io/realms/acme. - Nhóm: trong Clients › client của bạn › Client scopes › dedicated scope, thêm một mapper Group Membership với
token claim name là
groupsvà tắt full group path. - Xác thực hai lớp được tính khi claim
amrcủa ID token cho biết đã dùng MFA (browser flow của realm yêu cầu OTP).
- Tạo một OAuth2/OpenID provider (confidential client) với URI chuyển hướng, và một application dùng provider đó (Authentik OAuth2 provider, kiểm tra tháng 10/2026).
- URL nhà phát hành (issuer): kết thúc bằng slug của application và một dấu gạch chéo, ví dụ
https://auth.acme.io/application/o/reputecast/. - Nhóm: Authentik gửi nhóm trong claim
groupscủa scopeprofile. Hãy giữ profile mapping mặc định trong scope mappings của provider. - Xác thực hai lớp được tính khi claim
amrcủa ID token cho biết đã dùng MFA (một MFA stage trong authentication flow).
-
Quay lại 2 · Kết nối, nhập URL nhà phát hành (issuer) và chọn Kiểm tra discovery. ReputeCast lấy
<issuer>/.well-known/openid-configurationvà các khóa ký của nó; nhà phát hành phải dùnghttps://và khớp chính xác với tài liệu đó. Sau đó nhập client ID và client secret. Secret được mã hóa và không bao giờ hiển thị lại; bạn chỉ có thể thay nó. -
Scope:
openid,profilevàemailluôn được yêu cầu. Chỉ thêm scope khác nếu IdP của bạn cần chúng để gửi nhóm. -
Trong 3 · Ánh xạ claim, kiểm tra những claim nào điền thông tin tài khoản:
email,email_verified,namevà, với cấu hình sẵn có nhóm,groups. Giá trị mặc định phù hợp với từng cấu hình sẵn; chỉ đổi tên claim nếu IdP của bạn dùng tên khác. Email mà IdP đánh dấu là chưa xác minh sẽ bị từ chối. Thiếuemail_verifiedchỉ được coi là đã xác minh với các tên miền được phép ở bước 7. -
Trong 4 · Quyền truy cập, quyết định ai được vào và với vai trò nào:
- Với Tên miền email được phép (tối đa 50), lượt đăng nhập từ các tên miền khác bị từ chối và được ghi log. Trang đăng nhập chỉ hiển thị “Tiếp tục với …” của nhà cung cấp này cho những người có email thuộc một trong các tên miền đó. Nếu không có tên miền nào, mọi tên miền đều đăng nhập được, nhưng nút này không xuất hiện trên trang đăng nhập.
- Công tắc Tự động tạo tài khoản (JIT) tạo tài khoản ở lần đăng nhập đầu tiên, trong một không gian làm việc mặc định với vai trò mặc định (Người xem, trừ khi bạn chọn vai trò khác; không bao giờ là Chủ sở hữu). Tắt công tắc nghĩa là chỉ những người đã có tài khoản mới đăng nhập được. Thiết lập Danh sách tên miền email được phép tạo tài khoản tự động cấp hệ thống trong tab Xác thực giới hạn những tên miền nào được tự động tạo tài khoản.
- Trong Nhóm → không gian làm việc → vai trò, chọn Thêm ánh xạ cho mỗi nhóm trên IdP (tối đa 200 ánh xạ). Ánh xạ được áp dụng lại ở mỗi lần đăng nhập và ghi đè vai trò đặt thủ công. Khi một người rời khỏi nhóm đã ánh xạ, lần đăng nhập tiếp theo sẽ gỡ họ khỏi không gian làm việc đó và thu hồi các khóa API và tác tử họ đã tạo ở đó; riêng trong không gian làm việc mặc định của tính năng tự tạo tài khoản, họ quay về vai trò mặc định. Ánh xạ không bao giờ biến ai thành Chủ sở hữu và không bao giờ thay đổi một Chủ sở hữu. Bạn chỉ có thể ánh xạ một vai trò mà chính bạn có đủ quyền của nó trong không gian làm việc đó.
- Công tắc bắt buộc tắt các phương thức đăng nhập khác với các tên miền được phép: xem bắt buộc SSO cho tên miền của bạn.
-
Trong 5 · Đăng nhập thử, chọn Chạy đăng nhập thử. Một cửa sổ bật lên mở IdP của bạn; sau khi bạn đăng nhập, ReputeCast hiển thị các claim nhận được và những gì một lượt đăng nhập thật sẽ làm (tài khoản mới hay đã có, không gian làm việc, vai trò, xác thực hai lớp). Bước này không đăng nhập cho ai và không thay đổi gì.
-
Chọn Bật … (hoặc Lưu bản nháp để hoàn tất sau). Để bật được, cần một lần kiểm tra discovery thành công, client ID và client secret đã lưu.
Bắt buộc SSO cho tên miền của bạn
Phần tiêu đề “Bắt buộc SSO cho tên miền của bạn”Chế độ bắt buộc tắt đăng nhập bằng mật khẩu, khóa truy cập và tài khoản mạng xã hội cho mọi tài khoản thuộc các tên miền được phép của nhà cung cấp, nên người ở các tên miền đó chỉ đăng nhập được qua IdP. Bật chế độ này trong 4 · Quyền truy cập; hộp thoại liệt kê ai đang đăng nhập bằng cách nào hiện nay và sau khi bật, rồi bạn xác nhận bằng Bật chế độ bắt buộc.
- Chủ sở hữu có tài khoản khẩn cấp (break-glass) vẫn giữ đăng nhập bằng mật khẩu và xác thực hai lớp, để bạn vào được khi IdP
bị gián đoạn. Khi bạn bật chế độ bắt buộc, mọi Chủ sở hữu ở các tên miền đó được đánh dấu là tài khoản khẩn cấp;
Chủ sở hữu đầu tiên do
reputecast installtạo cũng vậy. Các lượt đăng nhập bằng mật khẩu của họ được ghi log là break-glass. - Nếu không còn Chủ sở hữu nào ở tên miền đó giữ mật khẩu, hộp thoại sẽ cảnh báo bạn: nếu IdP gặp sự cố, không ai ở tên miền đó đăng nhập được. Hãy giữ một quản trị viên hệ thống ở tên miền khác, hoặc xem khôi phục quyền truy cập từ dòng lệnh.
- Mỗi tên miền chỉ có thể được bắt buộc bởi một nhà cung cấp đang bật. Tắt nhà cung cấp sẽ chấm dứt chế độ bắt buộc của nó.
Kiểm tra kết quả
Phần tiêu đề “Kiểm tra kết quả”- Trong một cửa sổ trình duyệt ẩn danh, mở trang đăng nhập và nhập một email thuộc tên miền được phép: “Tiếp tục với …” đưa bạn đến IdP rồi quay lại, ở trạng thái đã đăng nhập.
- Quản trị hệ thống, rồi Người dùng hiển thị người đó với phương thức đăng nhập SSO, và “Qua IdP” ở cột 2FA khi IdP đã xác nhận xác thực hai lớp.
- Quản trị hệ thống, rồi Nhật ký kiểm tra ghi lại lượt đăng nhập, cùng mọi tài khoản hoặc vai trò mà lượt đăng nhập đó tạo ra.
Khắc phục sự cố
Phần tiêu đề “Khắc phục sự cố”- Discovery thất bại: URL nhà phát hành sai hoặc máy chủ không kết nối được tới nó. Hãy sao chép chính xác như IdP hiển thị, kể cả dấu gạch chéo cuối với Authentik, và dùng nhà phát hành theo tenant với Entra ID. Một nhà cung cấp đã bật vẫn dùng nhà phát hành đã lưu cho đến khi một lần kiểm tra mới thành công.
- IdP báo URI chuyển hướng không khớp: URL công khai đã thay đổi, hoặc URI bị dán sai. Hãy sao chép lại URI chuyển hướng và cập nhật IdP.
- “Không có tài khoản cho …”: tính năng tự tạo tài khoản đang tắt và người đó chưa có tài khoản, hoặc tên miền của họ không được phép ở đây hay trong danh sách cho phép của hệ thống. Hãy mời họ, hoặc bật Tự động tạo tài khoản (JIT).
- Bước kiểm tra báo “Thiếu claim groups”: IdP không gửi nhóm nào, nên ánh xạ không được áp dụng; vai trò hiện có giữ nguyên và tài khoản mới nhận vai trò mặc định. Hãy làm theo bước về nhóm cho IdP của bạn ở trên, rồi chạy lại bước kiểm tra.
- “Không giải mã được client secret bằng khóa của máy chủ này”: khóa bí mật của máy chủ đã thay đổi kể từ khi secret được lưu. Hãy thay client secret. Xem bảo mật và gia cố hệ thống.
- Lượt đăng nhập mất quá nhiều thời gian: một lượt đăng nhập phải quay về từ IdP trong vòng 10 phút. Hãy bắt đầu lại.
Liên quan
Phần tiêu đề “Liên quan”- Đăng nhập bằng Google, Microsoft và GitHub: đăng nhập cho người được mời mà không cần IdP.
- Quản trị hệ thống: chính sách đăng nhập và việc bắt buộc xác thực hai lớp.
- Vai trò và quyền: mỗi vai trò mà một ánh xạ cấp được làm những gì.