Keycloak
Tìm hiểu cách cấu hình LibreChat để sử dụng Keycloak cho xác thực người dùng.
- Truy cập Bảng điều khiển quản trị Keycloak:
- Mở Keycloak Admin Console trong trình duyệt web của bạn. Địa chỉ này thường nằm tại một URL như
http://localhost:8080/auth/admin/.
- Tạo một Realm (nếu cần):
- Nếu bạn chưa có realm cho ứng dụng của mình, hãy tạo một realm mới. Nhấp vào 'Add Realm' và đặt tên cho nó.
- Tạo một Client:
- Trong phạm vi của bạn, hãy nhấp vào 'Clients' và sau đó là 'Create'.
- Nhập client ID và chọn 'openid-connect' làm Client Protocol.
- Đặt 'Client Authentication' thành 'On'.
- Trong 'Valid Redirect URIs', hãy nhập
http://localhost:3080/oauth/openid/callbackhoặc URI phù hợp cho ứng dụng của bạn.
- Cấu hình Client:
- Sau khi tạo client, bạn sẽ được chuyển hướng đến trang cài đặt của nó.
- Lưu lại 'Client ID' và 'Secret' từ tab 'Credentials' – bạn sẽ cần chúng cho ứng dụng của mình.
- Thêm vai trò (Tùy chọn): Nếu bạn muốn hạn chế quyền truy cập đối với người dùng có các vai trò cụ thể, bạn có thể định nghĩa các vai trò trong Keycloak và gán chúng cho người dùng.
- Đi tới tab 'Roles' trong client hoặc realm của bạn (tùy thuộc vào nơi bạn muốn xác định các vai trò).
- Tạo các vai trò khớp với (các) giá trị mà bạn có trong
OPENID_REQUIRED_ROLE.
- Gán vai trò cho người dùng (Tùy chọn):
- Đi tới 'Users', chọn một người dùng và chuyển đến tab 'Role Mappings'.
- Gán ít nhất một trong các vai trò được chỉ định trong
OPENID_REQUIRED_ROLEcho người dùng.
- Lấy đường dẫn của danh sách vai trò bên trong token (Tùy chọn):
- Giải mã jwtToken của bạn từ nhà cung cấp OpenID và xác định đường dẫn cho danh sách vai trò bên trong access token. Ví dụ: nếu bạn đang sử dụng Keycloak, đường dẫn là
realm_access.roles. - Đặt đường dẫn này vào biến
OPENID_REQUIRED_ROLE_PARAMETER_PATHtrong tệp.env. - Với tham số
OPENID_REQUIRED_ROLE_TOKEN_KIND, bạn có thể chỉ định loại token mà bạn muốn sử dụng. Các giá trị có thể làaccessvàid.
- Cập nhật cấu hình dự án của bạn:
- Mở tệp
.envtrong thư mục dự án của bạn và thêm các biến sau:OPENID_ISSUER=http://localhost:8080/realms/[YourRealmName] OPENID_CLIENT_ID=[YourClientID] OPENID_CLIENT_SECRET=[YourClientSecret] OPENID_SESSION_SECRET=[JustGenerateARandomSessionSecret] OPENID_CALLBACK_URL=/oauth/openid/callback OPENID_SCOPE="openid profile email" OPENID_REQUIRED_ROLE=[YourRequiredRole] # Single role or comma-separated roles (e.g., role1,role2,admin) OPENID_REQUIRED_ROLE_TOKEN_KIND=(access|id) # that means, `access` or `id` OPENID_REQUIRED_ROLE_PARAMETER_PATH="realm_access.roles" # Optional: redirects the user to the end session endpoint after logging out OPENID_USE_END_SESSION_ENDPOINT=true # Maximum logout URL length before using logout_hint instead of id_token_hint (default: 2000) # OPENID_MAX_LOGOUT_URL_LENGTH=2000
Hướng dẫn này thế nào?