docs/self-hosting/auth/next-auth/keycloak.zh-CN.mdx
Keycloak 是一个开源的身份和访问管理解决方案,提供单点登录、身份代理和社交登录等功能,适用于现代应用和服务。
<Callout type={'tip'}> 若你想要私有部署 Keycloak,我们建议你将之与 LobeHub 一同使用 Docker Compose 部署,这样可以更方便地管理服务。 </Callout>
若你使用局域网 IP 部署,下文假设:
http://LobeHub_IP:3210。http://KEYCLOAK_IP:8080。若你使用公网部署,下文假设:
https://lobe.example.com。https://lobe-auth-api.example.com。访问你私有部署的 Keycloak 管理控制台(默认为 http://localhost:8080/admin),使用管理员账号登录。
创建新领域(Realm)
创建客户端(Client)
LobeHubOpenID Connecthttp://localhost:3210/api/auth/callback/keycloakhttp://LobeHub_IP:3210/api/auth/callback/keycloakhttps://lobe.example.com/api/auth/callback/keycloak获取客户端密钥
创建用户
创建角色和权限
为了保证你的应用安全,建议控制 Keycloak 的注册功能。
<Callout type={'warning'}> 如果不关闭注册功能,任何人都可能注册并登录你的应用,请根据你的安全需求进行配置。 </Callout>
将获取到的客户端 ID 和客户端密钥,设为 LobeHub 环境变量中的 AUTH_KEYCLOAK_ID 和 AUTH_KEYCLOAK_SECRET。
配置 LobeHub 环境变量中 AUTH_KEYCLOAK_ISSUER 为:
http://localhost:8080/realms/LobeHub,若你是本地开发环境http://KEYCLOAK_IP:8080/realms/LobeHub,若你是局域网私有部署的 Keycloakhttps://lobe-auth-api.example.com/realms/LobeHub,若你是公网环境部署的 Keycloak在部署 LobeHub 时,你需要配置以下环境变量:
| 环境变量 | 类型 | 描述 |
|---|---|---|
AUTH_SECRET | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: openssl rand -base64 32 |
NEXT_AUTH_SSO_PROVIDERS | 必选 | 选择 LoboChat 的单点登录提供商。使用 Keycloak 请填写 keycloak。 |
AUTH_KEYCLOAK_ID | 必选 | Keycloak 客户端 ID |
AUTH_KEYCLOAK_SECRET | 必选 | Keycloak 客户端密钥 |
AUTH_KEYCLOAK_ISSUER | 必选 | Keycloak 提供程序的 OpenID Connect 颁发者 URL,格式为 {keycloak_url}/realms/{realm_name} |
AUTH_URL | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。https://lobe.example.com/api/auth |
<Callout type={'tip'}> 前往 📘 环境变量 可查阅相关变量详情。 </Callout> </Steps>
<Callout type={'info'}>部署成功后,用户将可以通过 Keycloak 身份认证并使用 LobeHub。</Callout>