Keycloak
了解如何配置 LibreChat 以使用 Keycloak 进行用户身份验证。
- 访问 Keycloak 管理控制台:
- 在您的网页浏览器中打开 Keycloak 管理控制台。这通常位于类似
http://localhost:8080/auth/admin/的 URL。
- 创建 Realm(如有必要):
- 如果您还没有为您的应用程序创建领域(realm),请创建一个。点击“Add Realm”并为其命名。
- 创建客户端:
- 在您的领域(realm)中,点击“Clients”,然后点击“Create”。
- 输入客户端 ID 并选择 'openid-connect' 作为客户端协议 (Client Protocol)。
- 将 'Client Authentication' 设置为 'On'。
- 在 'Valid Redirect URIs' 中,输入
http://localhost:3080/oauth/openid/callback或适用于您应用程序的相应 URI。
- 配置客户端:
- 创建客户端后,您将被重定向到其设置页面。
- 请记下“Credentials”选项卡中的“Client ID”和“Secret”——您在应用程序中将会用到它们。
- 添加角色(可选): 如果您希望限制特定角色的用户访问,可以在 Keycloak 中定义角色并将其分配给用户。
- 前往您的客户端或域中的“Roles”选项卡(具体取决于您希望在何处定义角色)。
- 创建与
OPENID_REQUIRED_ROLE中所设值相匹配的角色。
- 为用户分配角色(可选):
- 前往“Users”,选择一个用户,然后转到“Role Mappings”选项卡。
- 为用户分配
OPENID_REQUIRED_ROLE中指定的至少一个角色。
- 获取令牌内角色列表的路径(可选):
- 解码来自 OpenID 提供商的 jwtToken,并确定访问令牌(access token)中角色列表的路径。例如,如果您使用的是 Keycloak,则路径为
realm_access.roles。 - 将此路径放入
.env文件中的OPENID_REQUIRED_ROLE_PARAMETER_PATH变量内。 - 通过参数
OPENID_REQUIRED_ROLE_TOKEN_KIND,您可以指定想要使用的令牌类型。 可选值为access和id。
- 更新您的项目配置:
- 打开项目文件夹中的
.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 # Maximum logout URL length before using logout_hint instead of id_token_hint (default: 2000) # OPENID_MAX_LOGOUT_URL_LENGTH=2000
这篇指南怎么样?