Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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.

  1. 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/.
  1. 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ó.
  1. 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/callback hoặc URI phù hợp cho ứng dụng của bạn.

image

image

image

  1. 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.

image

  1. 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.

image

  1. 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_ROLE cho người dùng.

image

  1. 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_PATH trong 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à accessid.
  1. Cập nhật cấu hình dự án của bạn:
  • Mở tệp .env trong 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?