lobehub/docs/self-hosting/advanced/auth/legacy.zh-CN.mdx
2026-01-23 23:57:08 +08:00

109 lines
5.5 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 旧版身份验证NextAuth 和 Clerk
description: 关于 NextAuth 和 Clerk 等旧版身份验证方法的文档。对于新部署,我们建议使用 Better Auth。
tags:
- 身份验证服务
- Next Auth
- Clerk
- 旧版
---
# 旧版身份验证
<Callout type={'warning'}>
**旧版提示**NextAuth 和 Clerk 是旧版身份验证方案。对于新部署,我们强烈建议使用 [Better Auth](/zh/docs/self-hosting/advanced/auth),它更简洁、更灵活。
</Callout>
本页面为仍在使用这些服务的用户提供旧版身份验证方案NextAuth 和 Clerk的文档。
## Clerk
Clerk 是一个全面的身份验证解决方案,它提供了简单而强大的 API 和服务来处理用户认证和会话管理。
LobeChat 与 Clerk 做了深度集成,能够为用户提供安全、便捷的登录和注册体验。
在 LobeChat 的环境变量中设置 `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` 和 `CLERK_SECRET_KEY`,即可开启和使用 Clerk。
<Callout type={'info'}>
详细的 Clerk 配置请参阅 [Clerk 配置指南](/zh/docs/self-hosting/advanced/auth/clerk)。
</Callout>
<Callout type={'tip'}>
如需从 Clerk 迁移到 Better Auth请参阅 [Clerk 迁移指南](/zh/docs/self-hosting/advanced/auth/clerk-to-betterauth)。
</Callout>
## Next Auth
<Callout type={'tip'}>
如需从 NextAuth 迁移到 Better Auth请参阅 [NextAuth 迁移指南](/zh/docs/self-hosting/advanced/auth/nextauth-to-betterauth)。
</Callout>
在使用 NextAuth 之前,请先在 LobeChat 的环境变量中设置以下变量:
| 环境变量 | 类型 | 描述 |
| -------------------------------- | -- | ------------------------------------------------------------------------------------------------------------ |
| `NEXT_PUBLIC_ENABLE_NEXT_AUTH` | 必选 | 用于启用 NextAuth 服务,设置为 `1` 以启用,更改此项需要重新编译应用。使用 `lobehub/lobe-chat-database` 镜像部署的用户已经默认添加了该项配置。 |
| `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令: `openssl rand -base64 32`,或者访问 `https://generate-secret.vercel.app/32` 生成秘钥。 |
| `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
| `NEXT_AUTH_SSO_PROVIDERS` | 可选 | 该环境变量用于同时启用多个身份验证源,以逗号 `,` 分割,例如 `auth0,microsoft-entra-id,authentik`。 |
| `NEXT_AUTH_SSO_SESSION_STRATEGY` | 可选 | Auth.js 的会话策略。选项为 `jwt` 或 `database`。默认值为 `jwt`。 |
目前支持的身份验证服务有:
<Cards>
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/auth0'} title={'Auth0'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id'} title={'Microsoft Entra ID'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/authentik'} title={'Authentik'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/github'} title={'Github'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/zitadel'} title={'ZITADEL'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust'} title={'Cloudflare Zero Trust'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/authelia'} title={'Authelia'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/logto'} title={'Logto'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/keycloak'} title={'Keycloak'} />
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/okta'} title={'Okta'} />
</Cards>
点击即可查看对应平台的配置文档。
## 进阶配置
同时启用多个身份验证源请设置 `NEXT_AUTH_SSO_PROVIDERS` 环境变量,以逗号 `,` 分割,例如 `auth0,microsoft-entra-id,authentik`。
顺序为 SSO 提供商的显示顺序。
| SSO 提供商 | 值 | 额外功能 |
| --------------------- | ----------------------- | --------- |
| Auth0 | `auth0` | |
| Authenlia | `authenlia` | |
| Authentik | `authentik` | |
| Casdoor | `casdoor` | `Webhook` |
| Cloudflare Zero Trust | `cloudflare-zero-trust` | |
| Github | `github` | |
| Logto | `logto` | `Webhook` |
| Microsoft Entra ID | `microsoft-entra-id` | |
| ZITADEL | `zitadel` | |
| Keycloak | `keycloak` | |
| Okta | `okta` | |
## 额外功能
### Webhook 支持
允许 LobeChat 在身份提供商中用户信息更新时接收通知。支持的提供商包括 Casdoor 和 Logto。请参考具体提供商文档进行配置。
### 数据库会话
允许会话存储在数据库中,详情请参阅 [Auth.js 会话文档](https://authjs.dev/concepts/session-strategies#database-session)。
## 其他 SSO 提供商
请参考 [NextAuth.js](https://next-auth.js.org/providers) 文档,欢迎提交 Pull Request。