You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

291 lines
8.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: LobeChat 身份验证服务设置
description: 了解如何配置 LobeChat 的身份验证服务环境变量。
tags:
- LobeChat
- 身份验证服务
- 单点登录
- Next Auth
- Clerk
---
# 身份验证服务
LobeChat 在部署时提供了完善的身份验证服务能力,以下是相关的环境变量,你可以使用这些环境变量轻松定义需要在 LobeChat 中开启的身份验证服务。
## Next Auth
### 通用设置
#### `NEXT_PUBLIC_ENABLE_NEXT_AUTH`
- v1.52.0 之后有变更
- 针对使用 Vercel 部署中使用 next-auth 的用户,需要额外添加 NEXT\_PUBLIC\_ENABLE\_NEXT\_AUTH=1 环境变量来确保开启 Next Auth
- 针对使用自构建镜像中使用 clerk 的用户,需要额外配置 NEXT\_PUBLIC\_ENABLE\_NEXT\_AUTH=0 环境变量来关闭 Next Auth
- 其他标准部署场景Vercel 中使用 Clerk 与 Docker 中使用 next-auth )不受影响
#### `NEXT_AUTH_SECRET`
- 类型:必选
- 描述:用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32`.
- 默认值: `-`
- 示例: `Tfhi2t2pelSMEA8eaV61KaqPNEndFFdMIxDaJnS1CUI=`
#### `NEXT_AUTH_SSO_PROVIDERS`
- 类型:可选
- 描述:选择 LoboChat 的单点登录提供商。如果有多个单点登录提供商,请用逗号分隔,例如 `auth0,microsoft-entra-id,authentik`
- 默认值: `auth0`
- 示例: `auth0,microsoft-entra-id,authentik`
#### `NEXTAUTH_URL`
- 类型:可选
- 描述:该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,在 Vercel 上部署时无需设置。
- 默认值:`-`
- 示例:`https://example.com/api/auth`
### Auth0
#### `AUTH_AUTH0_ID`
- 类型:必选
- 描述: Auth0 应用程序的 Client ID您可以访问[这里](https://manage.auth0.com/dashboard)并导航至应用程序设置来查看
- 默认值: `-`
- 示例: `evCnOJP1UX8FMnXR9Xkj5t0NyFn5p70P`
#### `AUTH_AUTH0_SECRET`
- 类型:必选
- 描述: Auth0 应用程序的 Client Secret
- 默认值: `-`
- 示例: `wnX7UbZg85ZUzF6ioxPLnJVEQa1Elbs7aqBUSF16xleBS5AdkVfASS49-fQIC8Rm`
#### `AUTH_AUTH0_ISSUER`
- 类型:必选
- 描述: Auth0 应用程序的签发人 / 域
- 默认值: `-`
- 示例: `https://example.auth0.com`
### Authelia
#### `AUTH_AUTHELIA_ID`
- 类型:必选
- 描述: Authelia 提供程序的 Client ID
- 默认值: `-`
- 示例: `lobe-chat`
#### `AUTH_AUTHELIA_SECRET`
- 类型:必选
- 描述: Authelia 提供程序的 Client Secret 的明文
- 默认值: `-`
- 示例: `insecure_secret`
#### `AUTH_AUTHELIA_ISSUER`
- 类型:必选
- 描述: Authentik 提供程序的 OpenID Connect 颁发者
- 默认值: `-`
- 示例: `https://sso.example.com`
### Authentik
#### `AUTH_AUTHENTIK_ID`
- 类型:必选
- 描述: Authentik 提供程序的 Client ID
- 默认值: `-`
- 示例: `YNtbIRlYF8Kj66mTLue59nsGLlb7HNyx1qjPH6VS`
#### `AUTH_AUTHENTIK_SECRET`
- 类型:必选
- 描述: Authentik 提供程序的 Client Secret
- 默认值: `-`
- 示例: `h3lMI1vPUzqyqqeIDUbH5UNNOxyQLXk35h89yETeaAwHk7qVXBG3sJQWeqHBU5pyggwhP9u0eaZ1eq6DHUddVPLoS4gncqD37yuCr8jI8dY66WAt45MStDsDcQm0Ygze`
#### `AUTH_AUTHENTIK_ISSUER`
- 类型:必选
- 描述: Authentik 提供程序的 OpenID Connect 颁发者
- 默认值: `-`
- 示例: `https://your-authentik-domain.com/application/o/slug/`
### Casdoor
#### `AUTH_CASDOOR_ID`
- 类型:必选
- 描述: Casdoor 提供程序的 Client ID
- 默认值: `-`
- 示例: `570bfa85a21800a25198`
#### `AUTH_CASDOOR_SECRET`
- 类型:必选
- 描述: Casdoor 提供程序的 Client Secret 的明文
- 默认值: `-`
- 示例: `233a623a15eac2db2e43bb8a323eda729552c405`
#### `AUTH_CASDOOR_ISSUER`
- 类型:必选
- 描述: Casdoor 提供程序的 OpenID Connect 颁发者
- 默认值: `-`
- 示例: `https://lobe-auth-api.example.com/`
### Cloudflare Zero Trust
#### `AUTH_CLOUDFLARE_ZERO_TRUST_ID`
- 类型:必选
- 描述: Cloudflare Zero Trust 提供程序的 Client ID
- 默认值: `-`
- 示例: `711963a58df8c943cfd6c487cac99ce9f6ee0c88c0b7bf94584b8ff052fcb09c`
#### `AUTH_CLOUDFLARE_ZERO_TRUST_SECRET`
- 类型:必选
- 描述: Cloudflare Zero Trust 提供程序的 Client Secret 的明文
- 默认值: `-`
- 示例: `8f26d4ef834a828045b401e032ae128dbb00471bca53f0d25332323f525dfa30`
#### `AUTH_CLOUDFLARE_ZERO_TRUST_ISSUER`
- 类型:必选
- 描述: Cloudflare Zero Trust 提供程序的 OpenID Connect 颁发者
- 默认值: `-`
- 示例: `https://example.cloudflareaccess.com/cdn-cgi/access/sso/oidc/711963a58df8c943cfd6c487cac99ce9f6ee0c88c0b7bf94584b8ff052fcb09c`
### Github
#### `AUTH_GITHUB_ID`
- 类型:必选
- 描述: Github 应用的客户端 ID。您可以在[这里](https://github.com/settings/apps)访问,并导航到应用程序设置以查看。
- 默认值: `-`
- 示例: `abd94200333283550508`
#### `AUTH_GITHUB_SECRET`
- 类型:必选
- 描述: Github 应用的客户端密钥。
- 默认值: `-`
- 示例: `dd262976ac0931d947e104891586a053f3d3750b`
### Logto
#### `AUTH_LOGTO_ID`
- 类型:必选
- 描述Logto 应用程序的 Client ID。您可以在根据部署模式在私有部署的 Logto 控制台或 [Logto Cloud](http://cloud.logto.io/) 中找到。
- 默认值:`-`
- 示例:`123456789012345678@your-project`
#### `AUTH_LOGTO_SECRET`
- 类型:必选
- 描述Logto 应用程序的 Client Secret。
- 默认值:`-`
- 示例:`9QF1n5ATzU7Z3mHp2Iw4gKX8kY6oR7uW1DnKcV3LqX2jF6iG3fBmJ1kV7nS5zE6A`
#### `AUTH_LOGTO_ISSUER`
- 类型:必选
- 描述Logto 应用程序的 OpenID Connect 颁发者issuer。根据部署模式您可以在私有部署的 Logto 控制台或 [Logto Cloud](http://cloud.logto.io/) 中找到。
- 默认值:`-`
- 示例:`https://lobe-auth-api.example.com/oidc`
### Microsoft Entra ID
#### `AUTH_AZURE_AD_ID`
- 类型:必选
- 描述Microsoft Entra ID 应用程序的客户端 ID。
- 默认值:`-`
- 示例:`be8f6da1-58c3-4f16-ff1b-78f5148e10df`
#### `AUTH_AZURE_AD_SECRET`
- 类型:必选
- 描述Microsoft Entra ID 应用程序的客户端密钥。
- 默认值:`-`
- 示例:`~gI8Q.pTiN1vwB6Gl.E1yFT1ojcXABkdACfJXaNj`
#### `AUTH_AZURE_AD_TENANT_ID`
- 类型:必选
- 描述Microsoft Entra ID 应用程序的租户 ID。
- 默认值:`-`
- 示例:`c8ae2f36-edf6-4cda-96b9-d3e198a47cba`
### ZITADEL
#### `AUTH_ZITADEL_ID`
- 类型:必选
- 描述ZITADEL 应用的 Client ID。您可以在 ZITADEL 控制台应用设置中找到 Client ID。
- 默认值:`-`
- 示例:`123456789012345678@your-project`
#### `AUTH_ZITADEL_SECRET`
- 类型:必选
- 描述ZITADEL 应用的 Client Secret。
- 默认值:`-`
- 示例:`9QF1n5ATzU7Z3mHp2Iw4gKX8kY6oR7uW1DnKcV3LqX2jF6iG3fBmJ1kV7nS5zE6A`
#### `AUTH_ZITADEL_ISSUER`
- 类型:必选
- 描述ZITADEL 应用的 OpenID Connect 颁发者issuer通常为 ZITADEL 实例的 URL。您可以在 ZITADEL 控制台应用设置中的 `URLs` 选项卡中找到 issuer。
- 默认值:`-`
- 示例:`https://your-instance-abc123.zitadel.cloud`
### Generic OIDC
#### `AUTH_GENERIC_OIDC_ID`
- 类型:必选
- 描述: Generic OIDC 提供程序的 Client ID
- 默认值: `-`
- 示例: `_client_id_for_lobe_chat_`
#### `AUTH_GENERIC_OIDC_SECRET`
- 类型:必选
- 描述: Generic OIDC 提供程序的 Client Secret 的明文
- 默认值: `-`
- 示例: `_client_secret_for_lobe_chat_`
#### `AUTH_GENERIC_OIDC_ISSUER`
- 类型:必选
- 描述: Generic OIDC 提供程序的 OpenID Connect 颁发者
- 默认值: `-`
- 示例: `https://sso.example.com`
<Callout>
如果您需要使用其他身份验证服务提供商,可以提交
[功能请求](https://github.com/lobehub/lobe-chat/issues/new/choose) 或 Pull Request。
</Callout>
## Clerk
### `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY`
- 类型:必选
- 描述: Clerk 应用程序的 Publishable key。您可以在[这里](https://dashboard.clerk.com)访问,并导航到 API Keys 以查看。
- 默认值:`-`
- 示例: `pk_test_Zmxvd4luZy1wdW1hLTIyLmNsXXJrTmFjY291bnRzLmRldiQ` (测试环境) / `pk_live_Y2xlcdsubG9iZWh1Yi1cbmMuY24k` (生产环境)
### `CLERK_SECRET_KEY`
- 类型:必选
- 描述: Clerk 应用程序的 Secret key。您可以在[这里](https://dashboard.clerk.com)访问,并导航到 API Keys 以查看。
- 默认值:`-`
- 示例: `sk_test_513Ma0P7IAWM1XMv4waxZjRYRajWTaCfJLjpEO3SD2` (测试环境) / `sk_live_eMMlHjwJvZFUfczFljSKqZdwQtLvmczmsJSNmdrpeZ`(生产环境)