跳到主要内容

API Key 与认证

注意

不要在没有反向代理、TLS、显式管理员凭据和 secret key 配置的情况下,直接把 SkillFlaw 端口暴露到公网。 生产环境至少应显式设置 SKILLFLAW_SUPERUSERSKILLFLAW_SUPERUSER_PASSWORD,并优先使用 SKILLFLAW_SECRET_KEY_FILE 管理密钥文件。 更多说明请参阅配置受保护的 SkillFlaw 服务

认证凭据用于防止未授权访问你的 SkillFlaw 服务、流程,以及流程中通过组件连接的外部服务。

在 SkillFlaw 中,常见凭据分为三类:

  • SkillFlaw API Key:用于调用 SkillFlaw API,以及授权服务端执行流程、上传文件等动作。
  • 组件 API Key:用于 SkillFlaw 与外部服务之间的鉴权,例如模型服务商、数据库或第三方 API。
  • 认证环境变量:用于控制 SkillFlaw 的用户认证、API Key 校验、Webhook 鉴权与 Cookie 行为。

SkillFlaw API Key

你可以使用 SkillFlaw API Key 以编程方式调用 SkillFlaw。

默认情况下,大多数 SkillFlaw API 端点(例如 /api/v1/run/$FLOW_ID)都需要 API Key 认证。

SkillFlaw 支持两种 API Key 校验来源:

  • db:校验数据库中保存的 SkillFlaw API Key(默认)
  • env:使用环境变量 SKILLFLAW_API_KEY 参与校验,适合通过部署配置统一注入 API Key 的场景

如果你希望 Webhook 端点也强制启用 API Key 校验,请使用 SKILLFLAW_WEBHOOK_AUTH_ENABLE。 如果你要为 SkillFlaw MCP 服务配置认证,请参阅将 SkillFlaw 用作 MCP 服务器

SkillFlaw API Key 的权限边界

SkillFlaw API Key 继承创建该 Key 的用户权限。 也就是说,你创建的 API Key 拥有与你当前账号一致的访问范围,包括你有权访问的流程、组件和 SkillFlaw 数据。

在单用户环境中,你通常就是超级用户,因此你创建的 API Key 也具有超级用户权限。

在多用户环境中:

  • 非超级用户不能通过自己的 API Key 访问他人资源
  • 超级用户也不能直接绕过资源归属去运行其他用户拥有的流程
  • 如果要安全地管理用户与多账户访问,必须先完成受保护部署配置

创建 SkillFlaw API Key

你可以在 SkillFlaw 的 Settings 中创建 API Key。

保留的 skillflaw api-key CLI 子命令已经不再负责创建 API Key,它只会提示“未认证的 CLI API Key 创建流程已不再支持”。

  1. 在 SkillFlaw 页头点击个人头像,然后选择 Settings
  2. 点击 SkillFlaw API Keys
  3. 点击 Add New
  4. 输入名称,然后点击 Create API Key
  5. 复制并妥善保存该 Key。

使用 SkillFlaw API Key

调用 SkillFlaw API 时,可以通过 x-api-key 请求头或查询参数传入 API Key。


_10
curl -X POST \
_10
"http://$SKILLFLAW_SERVER_ADDRESS/api/v1/run/$FLOW_ID?stream=false" \
_10
-H "Content-Type: application/json" \
_10
-H "x-api-key: $SKILLFLAW_API_KEY" \
_10
-d '{"inputs": {"text": ""}, "tweaks": {}}'

更多请求示例请参阅开始使用 SkillFlaw API使用 SkillFlaw API 触发流程

跟踪 API Key 使用情况

默认情况下,SkillFlaw 会在数据库中记录 API Key 的 total_useslast_used_at 等使用痕迹。

如果你希望在高并发场景下降低这类写入带来的数据库竞争,可以在环境变量中设置:


_10
SKILLFLAW_DISABLE_TRACK_APIKEY_USAGE=True

撤销 API Key

如果要撤销并删除 API Key:

  1. 在 SkillFlaw 页头点击个人头像,然后选择 Settings
  2. 点击 SkillFlaw API Keys
  3. 勾选你要删除的 Key。
  4. 点击 Delete

删除后,该 Key 会立即失效。

组件 API Key

组件 API Key 用于授权 SkillFlaw 访问外部服务,例如模型服务商、数据库、搜索 API 或其他第三方系统。 这类 Key 不是 SkillFlaw 平台自身的 API Key。

在 SkillFlaw 中,你通常会把组件 API Key 保存在 Settings 的全局变量中,或者从运行时环境导入。 更多说明请参阅全局变量

组件 API Key 的真实创建、吊销与轮换,仍然发生在服务提供方自己的平台中。 SkillFlaw 只负责加密存储该值,或存储一个安全引用。

如果你希望减少流程数据落库时携带的敏感信息,可以设置:


_10
SKILLFLAW_REMOVE_API_KEYS=True

这样可以在流程保存到数据库前移除 API Key / Token 类型字段。 另外,在导入与导出流程时,也可以选择不导出 API Key。

认证环境变量

本节说明与认证直接相关的环境变量。

推荐模板请优先参考项目根目录的 .env.example

AUTO_LOGIN 兼容变量

旧版本中与 AUTO_LOGIN 相关的兼容变量已经不再是 SkillFlaw 的主要认证方案。 应使用本页介绍的显式管理员凭据、API Key 校验来源、Webhook 鉴权和 Cookie 配置。

SKILLFLAW_ENABLE_SUPERUSER_CLI

该变量控制 skillflaw superuser 命令是否可用。

  • 默认值:true
  • 生产环境建议:false

_10
SKILLFLAW_ENABLE_SUPERUSER_CLI=False

更多说明请参阅 skillflaw superuser

SKILLFLAW_SUPERUSER 与 SKILLFLAW_SUPERUSER_PASSWORD

这两个变量用于指定 SkillFlaw 的引导超级用户账号与密码。


_10
SKILLFLAW_SUPERUSER=administrator
_10
SKILLFLAW_SUPERUSER_PASSWORD=securepassword

如果未显式设置,系统会回退到默认值 skillflaw / skillflaw。 这些默认值只适合本地临时调试,绝不能直接用于真实环境。

SKILLFLAW_SECRET_KEY_FILE 与 SKILLFLAW_SECRET_KEY

这两个变量共同决定运行时用于加密敏感信息的 secret key 来源。

推荐方式是:

  • 使用 SKILLFLAW_SECRET_KEY_FILE 指向一个仅本机可读的密钥文件
  • 运行时读取文件内容本身作为 secret key

_10
SKILLFLAW_SECRET_KEY_FILE=~/.skillflaw/secret_key

运行时行为如下:

  • 如果设置了 SKILLFLAW_SECRET_KEY_FILE,SkillFlaw 会优先使用该文件内容
  • 如果同时显式提供 SKILLFLAW_SECRET_KEY,SkillFlaw 会把该值写入目标密钥文件
  • 如果两者都未提供,但存在 CONFIG_DIR,SkillFlaw 会在 CONFIG_DIR/secret_key 自动生成并保存一个随机密钥

因此:

  • 推荐:在部署中显式维护 SKILLFLAW_SECRET_KEY_FILE
  • 兼容支持:可以直接提供 SKILLFLAW_SECRET_KEY
  • 不建议:依赖隐式自动生成后再用于多实例生产环境

生成并写入密钥文件

在 macOS 或 Linux 上,你可以先生成高熵随机密钥,再写入本地文件:


_10
python3 - <<'PY'
_10
from pathlib import Path
_10
from secrets import token_urlsafe
_10
_10
path = Path.home() / '.skillflaw' / 'secret_key'
_10
path.parent.mkdir(parents=True, exist_ok=True)
_10
path.write_text(token_urlsafe(32), encoding='utf-8')
_10
print(path)
_10
PY

然后在 .env 中引用该文件:


_10
SKILLFLAW_SECRET_KEY_FILE=~/.skillflaw/secret_key

SKILLFLAW_NEW_USER_IS_ACTIVE

该变量控制超级用户新建账号时,是否自动激活。

  • False(默认):新建用户默认未激活,需要管理员显式激活
  • True:新建用户自动激活

_10
SKILLFLAW_NEW_USER_IS_ACTIVE=False

只有超级用户才能管理用户账号。

SKILLFLAW_API_KEY_SOURCE

该变量控制 SkillFlaw 如何校验 x-api-key

说明
db(默认)校验数据库中保存的 SkillFlaw API Key
env使用环境变量 SKILLFLAW_API_KEY 参与校验;适合通过部署配置统一注入 API Key 的场景

_10
SKILLFLAW_API_KEY_SOURCE=db

SKILLFLAW_API_KEY_SOURCE=env 时,部署中设置的 SKILLFLAW_API_KEY 可作为统一注入的运行时 API Key。 这类模式适合单租户部署、自动化环境或使用 Secret 注入 API Key 的场景。

启用示例:


_10
SKILLFLAW_API_KEY_SOURCE=env
_10
SKILLFLAW_API_KEY=your-secure-api-key

请求示例:


_10
curl -X POST \
_10
"http://SKILLFLAW_SERVER_ADDRESS/api/v1/run/FLOW_ID?stream=false" \
_10
-H "Content-Type: application/json" \
_10
-H "x-api-key: your-secure-api-key" \
_10
-d '{"inputs": {"text": ""}, "tweaks": {}}'

Kubernetes Secret 示例

_10
apiVersion: v1
_10
kind: Secret
_10
metadata:
_10
name: skillflaw-api-key
_10
type: Opaque
_10
stringData:
_10
api-key: "YOUR_API_KEY"


_10
env:
_10
- name: SKILLFLAW_API_KEY_SOURCE
_10
value: "env"
_10
- name: SKILLFLAW_API_KEY
_10
valueFrom:
_10
secretKeyRef:
_10
name: skillflaw-api-key
_10
key: api-key

SKILLFLAW_CORS_*

在前后端分离部署下,跨域请求中的 Cookie 与认证头行为由 SKILLFLAW_CORS_* 变量控制。

变量类型默认值说明
SKILLFLAW_CORS_ALLOW_CREDENTIALSBooleanTrue是否允许跨域请求携带 Cookie 与认证头
SKILLFLAW_CORS_ALLOW_HEADERSList[String] / String*允许的请求头
SKILLFLAW_CORS_ALLOW_METHODSList[String] / String*允许的 HTTP 方法
SKILLFLAW_CORS_ORIGINSString*允许的来源
危险

默认的宽松跨域配置只适合本地或受控环境。 在生产环境中,应显式收敛 SKILLFLAW_CORS_ORIGINS,必要时同时收敛允许的方法与请求头。

SSRF 保护

以下变量用于控制 API Request 组件 的 SSRF 防护:

变量类型默认值说明
SKILLFLAW_SSRF_PROTECTION_ENABLEDBooleanFalse是否开启 SSRF 防护
SKILLFLAW_SSRF_ALLOWED_HOSTSList[String]未设置允许跳过 SSRF 检查的主机、IP 或 CIDR

SKILLFLAW_WEBHOOK_AUTH_ENABLE

该变量控制 Webhook 端点是否强制要求 API Key 认证。

变量类型默认值说明
SKILLFLAW_WEBHOOK_AUTH_ENABLEBooleanFalseTrue 时,Webhook 必须带 API Key;为 False 时,Webhook 默认按流程拥有者身份执行

_10
SKILLFLAW_WEBHOOK_AUTH_ENABLE=True

当开启后,请求必须通过请求头或查询参数提供 API Key。 如果缺少 API Key,请求会直接返回 403。

配置受保护的 SkillFlaw 服务

对于共享网络、多用户或公网可访问的 SkillFlaw 部署,建议至少完成以下配置。

1. 准备 .env


_10
SKILLFLAW_SUPERUSER=administrator
_10
SKILLFLAW_SUPERUSER_PASSWORD=securepassword
_10
SKILLFLAW_SECRET_KEY_FILE=~/.skillflaw/secret_key
_10
SKILLFLAW_NEW_USER_IS_ACTIVE=False
_10
SKILLFLAW_ENABLE_SUPERUSER_CLI=False

你也可以额外加入数据库、缓存、日志与前端路径等配置。

2. 启动 SkillFlaw


_10
uv run skillflaw run --env-file .env

默认地址通常为 http://localhost:7860

3. 以管理员身份登录

  1. 打开 http://localhost:7860/login
  2. 使用 SKILLFLAW_SUPERUSERSKILLFLAW_SUPERUSER_PASSWORD 登录
  3. 进入管理员入口,管理用户、重置密码与分配权限

4. 为其他用户创建账号

  1. 打开用户管理页
  2. 点击 New User
  3. 输入用户名与密码
  4. 视需要决定是否立即激活账号
  5. 视需要决定是否授予超级用户权限
  6. 保存后把初始凭据安全地发送给用户

另请参阅