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

Keycloak

了解如何配置 LibreChat 以使用 Keycloak 进行用户身份验证。

  1. 访问 Keycloak 管理控制台:
  • 在您的网页浏览器中打开 Keycloak 管理控制台。这通常位于类似 http://localhost:8080/auth/admin/ 的 URL。
  1. 创建 Realm(如有必要):
  • 如果您还没有为您的应用程序创建领域(realm),请创建一个。点击“Add Realm”并为其命名。
  1. 创建客户端:
  • 在您的领域(realm)中,点击“Clients”,然后点击“Create”。
  • 输入客户端 ID 并选择 'openid-connect' 作为客户端协议 (Client Protocol)。
  • 将 'Client Authentication' 设置为 'On'。
  • 在 'Valid Redirect URIs' 中,输入 http://localhost:3080/oauth/openid/callback 或适用于您应用程序的相应 URI。

image

image

image

  1. 配置客户端:
  • 创建客户端后,您将被重定向到其设置页面。
  • 请记下“Credentials”选项卡中的“Client ID”和“Secret”——您在应用程序中将会用到它们。

image

  1. 添加角色(可选): 如果您希望限制特定角色的用户访问,可以在 Keycloak 中定义角色并将其分配给用户。
  • 前往您的客户端或域中的“Roles”选项卡(具体取决于您希望在何处定义角色)。
  • 创建与 OPENID_REQUIRED_ROLE 中所设值相匹配的角色。

image

  1. 为用户分配角色(可选):
  • 前往“Users”,选择一个用户,然后转到“Role Mappings”选项卡。
  • 为用户分配 OPENID_REQUIRED_ROLE 中指定的至少一个角色。

image

  1. 获取令牌内角色列表的路径(可选):
  • 解码来自 OpenID 提供商的 jwtToken,并确定访问令牌(access token)中角色列表的路径。例如,如果您使用的是 Keycloak,则路径为 realm_access.roles
  • 将此路径放入 .env 文件中的 OPENID_REQUIRED_ROLE_PARAMETER_PATH 变量内。
  • 通过参数 OPENID_REQUIRED_ROLE_TOKEN_KIND,您可以指定想要使用的令牌类型。 可选值为 accessid
  1. 更新您的项目配置:
  • 打开项目文件夹中的 .env 文件并添加以下变量:
    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 

这篇指南怎么样?