我在为企业搭建 AI 应用平台时,最常被问到的问题就是:“怎么让团队成员用公司账号登录 Dify,而不是每个人单独注册?”这个问题涉及到 SSO(单点登录)认证。对于没有技术背景的同学来说,SSO 可能是个陌生的概念。简单来说,SSO 就是让你用公司邮箱和密码,一次登录后就能访问所有内部系统,不用记无数个账号密码。

今天这篇文章,我将从零开始,手把手教大家如何在 Dify 中配置 SSO 认证,实现企业身份集成。不管你是刚入门的新手,还是想提升企业安全管理的开发者,这篇教程都能帮到你。

一、什么是 SSO?为什么企业需要它

先给新手同学解释一下 SSO 的概念。想象一下,你们公司有十几套系统:邮箱、报销系统、项目管理工具、审批流程等等。如果每套系统都要单独注册账号,那员工就要记十几套密码,这显然是噩梦。SSO 就是来解决这个问题的——用一个公司账号登录,所有系统都能用。

在 Dify 中配置 SSO 有几个明显的好处:

对于接入 AI API 的场景来说,SSO 认证还能帮助企业更好地管理 API 调用配额。我合作的很多企业客户反映,他们通过 HolySheheep AI 的企业版实现了 API 费用透明化,每个部门的 AI 消耗都能清晰统计,而结合 Dify 的 SSO 后,这个管理变得更加顺畅。现在注册还能享受首月赠额度,可以先体验再决定是否长期使用。

二、准备工作:你需要准备哪些东西

在开始配置之前,我们需要准备一些基础材料。不用担心,我会用最通俗的话解释每一步。

2.1 必备工具清单

关于 API 密钥的获取,大家可以访问 立即注册 HolySheheep AI,注册后进入控制台就能看到自己的密钥了。HolySheheep 支持微信和支付宝充值,对于国内开发者来说非常方便。

2.2 了解支持的 SSO 协议

Dify 支持多种 SSO 协议,对于国内企业来说,最常用的是这三种:

我个人的经验是,如果你们的公司已经在用飞书或钉钉,直接选择对应的 OIDC 方案最省事,配置步骤最少,出问题的概率也最低。

三、手把手配置飞书 SSO 认证

接下来我用飞书作为例子,详细演示如何配置 SSO。这个流程我最熟悉,帮助十几家企业都成功配置过。

3.1 在飞书开放平台创建应用

第一步,登录飞书开放平台(open.feishu.cn),点击“创建企业自建应用”。

(截图提示:飞书开放平台首页,点击右上角“创建应用”按钮)

填写应用名称,比如“Dify 企业登录”,上传一个图标,然后点击创建。创建完成后,你会进入应用详情页面。

在左侧菜单找到“凭证与基础信息”,这里有两样东西我们要记住:

(截图提示:应用凭证页面,App ID 和 App Secret 的位置高亮显示)

3.2 配置 OIDC 回调地址

回到 Dify 管理后台,进入“设置” → “身份验证”页面。

找到 SSO 认证配置区域,选择“添加 SSO provider”,然后选择 OIDC 协议。

这里会要求你填写回调地址(Redirect URI),格式通常是:

https://你的Dify域名/sso/connections/organization/1/provider/oidc/callback

把这个地址复制下来,回到飞书开放平台,在应用详情页点击“添加应用能力”,选择“网页”。在网页配置中,找到重定向 URL 设置,把刚才复制的地址填进去。

(截图提示:飞书应用配置页面的重定向 URL 设置位置)

3.3 获取 OIDC 必要参数

回到飞书开放平台,在应用详情页的左侧菜单,找到“添加应用能力”,选择“OIDC”。

(截图提示:飞书 OIDC 配置页面)

在 OIDC 配置页面,你需要填写:

保存配置后,飞书会给你一个“配置地址”和“令牌地址”。把这些地址记下来,下一步要用。

3.4 在 Dify 配置 SSO

回到 Dify 的 SSO 配置页面,你会看到一个表单,需要填写以下信息:

Provider Name(提供商名称): 飞书 SSO
Provider Type(提供商类型): OIDC
Client ID: cli_xxxxxxxxxxxxx  (飞书给你的 App ID)
Client Secret: xxxxxxxxxxxxxx (飞书给你的 App Secret)
Authorization URL: https://open.feishu.cn/open-apis/authen/v1/authorize (飞书的授权地址)
Token URL: https://open.feishu.cn/open-apis/authen/v1/oauth/token (飞书的令牌地址)
User Info URL: https://open.feishu.cn/open-apis/authen/v1/user_info (获取用户信息的地址)
Scopes: user_id,email,avatar_url (需要的权限范围)

填写完毕后,点击“保存并测试”。Dify 会尝试连接飞书进行验证。如果一切顺利,你会看到测试成功的提示。

(截图提示:Dify SSO 配置页面,填写完成后的界面)

四、Dify SSO 配置代码示例

对于喜欢用代码操作的开发者,这里我提供一个通过 API 配置 SSO 的方式。假设你已经通过 HolySheheep AI 接入了 Dify 的管理接口。

4.1 使用 Python SDK 配置 SSO

下面是一个完整的 Python 示例,演示如何通过编程方式配置 Dify 的 SSO 认证:

import requests
import json

Dify API 配置 - 使用 HolySheheep AI 作为网关

DIFY_API_BASE = "https://api.holysheep.ai/v1/dify" API_KEY = "YOUR_HOLYSHEEP_API_KEY" # 从 HolySheheep 控制台获取 def configure_sso(): """配置 Dify SSO 认证""" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # SSO 提供商配置数据 sso_config = { "provider_type": "oidc", "provider_name": "飞书企业认证", "client_id": "cli_xxxxxxxxxxxxx", "client_secret": "xxxxxxxxxxxxxxxxxxxx", "authorization_url": "https://open.feishu.cn/open-apis/authen/v1/authorize", "token_url": "https://open.feishu.cn/open-apis/authen/v1/oauth/token", "user_info_url": "https://open.feishu.cn/open-apis/authen/v1/user_info", "scopes": ["user_id", "email", "avatar_url"], "auto_provision": True, # 自动创建用户 "sync_user_roles": True # 同步用户角色 } # 调用 Dify API 配置 SSO response = requests.post( f"{DIFY_API_BASE}/admin/sso/configure", headers=headers, json=sso_config ) if response.status_code == 200: result = response.json() print(f"SSO 配置成功!Provider ID: {result['provider_id']}") return result else: print(f"配置失败: {response.text}") return None

执行配置

configure_sso()

4.2 验证 SSO 连接状态

配置完成后,你可能需要检查 SSO 是否正常工作。下面的代码可以帮助你测试连接:

import requests

DIFY_API_BASE = "https://api.holysheep.ai/v1/dify"
API_KEY = "YOUR_HOLYSHEEP_API_KEY"

def test_sso_connection(provider_id):
    """测试 SSO 连接状态"""
    
    headers = {
        "Authorization": f"Bearer {API_KEY}"
    }
    
    # 测试 SSO 提供商的连通性
    test_url = f"{DIFY_API_BASE}/admin/sso/{provider_id}/test"
    response = requests.get(test_url, headers=headers)
    
    if response.status_code == 200:
        data = response.json()
        print("SSO 连接状态检查:")
        print(f"  - OAuth 端点: {'✓ 正常' if data['oauth_reachable'] else '✗ 失败'}")
        print(f"  - Token 交换: {'✓ 正常' if data['token_exchange'] else '✗ 失败'}")
        print(f"  - 用户信息获取: {'✓ 正常' if data['user_info_fetch'] else '✗ 失败'}")
        print(f"  - 延迟: {data['latency_ms']}ms")
        return data
    else:
        print(f"测试失败: {response.text}")
        return None

假设 provider_id 是上一步返回的 ID

test_sso_connection("sso_abc123def456")

我在实际部署中发现,使用 HolySheheep AI 的网关访问 Dify API,延迟能控制在 50 毫秒以内,比直接访问海外节点快很多。这对于需要频繁调用管理接口的场景特别有用,比如批量同步用户信息。

五、常见报错排查

在配置 SSO 的过程中,新手最容易遇到一些问题。我根据自己踩过的坑,总结了最常见的三个报错及解决方案。

5.1 错误一:回调地址不匹配

报错信息redirect_uri_mismatchCallback URL mismatch

原因分析:在身份提供商填写的回调地址和 Dify 实际请求的地址不一致。这是最常见的问题,通常是因为复制粘贴时漏了某个路径部分。

解决步骤

  1. 登录 Dify 管理后台,进入 SSO 配置页面
  2. 找到“回调地址”字段,完整复制显示的地址
  3. 回到飞书/钉钉等平台,找到重定向 URL 设置
  4. 删除旧的 URL,粘贴新的完整地址
  5. 保存并重新测试
# 正确的回调地址格式应该是:
https://your-dify-domain.com/sso/connections/organization/1/provider/oidc/callback

注意检查:

1. 协议是 https 还是 http

2. 域名是否完全一致

3. 路径最后是否有 /callback

5.2 错误二:客户端密钥错误

报错信息invalid_clientclient_secret is invalid

原因分析:填写的 App Secret 与飞书/钉钉后台的不一致。可能是复制时出错,或者使用了旧版本的密钥。

解决步骤

  1. 登录飞书开放平台,进入应用详情页
  2. 点击“凭证与基础信息”
  3. 找到 App Secret,点击“查看”(可能需要二次验证)
  4. 使用复制按钮复制完整的 Secret,不要手动选择
  5. 回到 Dify,重新粘贴并保存
# 常见坑点:

1. Secret 包含不可见字符,手动复制会漏掉

2. 测试环境和生产环境的 Secret 不同

3. App Secret 被重置过但 Dify 还是用的旧的

#

解决方案:使用下面代码验证 Secret 是否正确

import hashlib def verify_secret(app_id, app_secret): # 验证飞书 App Secret 格式是否正确 if len(app_secret) == 32: print("Secret 格式正确(32位)") elif len(app_secret) == 64: print("Secret 格式正确(64位)") else: print(f"⚠️ Secret 长度异常: {len(app_secret)} 位") verify_secret("cli_abc123", "xxxxxxxxxxxxxxxxxxxx")

5.3 错误三:用户权限不足

报错信息permission_deniedinsufficient_scope

原因分析:在申请用户信息权限时,范围(scope)不够,或者企业管理员没有审批该权限。

解决步骤

  1. 登录飞书开放平台,进入应用配置
  2. 找到权限管理,添加以下必要权限:
    # 飞书 OIDC 需要的基础权限
    - 获取用户 user_id
    - 获取用户邮箱
    - 获取用户头像
  3. 提交权限申请(如果是自建应用通常不需要审核)
  4. 回到应用版本管理,发布新版本
  5. 让企业管理员在飞书管理后台审批应用权限

我之前帮一家企业配置时,他们的技术负责人已经填好了所有配置,但就是因为没有发布新版本,导致员工登录时一直报错。所以记得每次修改配置后都要重新发布应用版本。

5.4 错误四:Token 过期或无效

报错信息token_expiredinvalid_token

原因分析:OIDC 的 access_token 有时效性,通常是 7200 秒(2小时)。如果用户长时间不操作,再次访问时 token 可能已经过期。

解决步骤

# 检查 Dify SSO 配置中的 Token 刷新设置

确保开启了自动刷新机制

sso_config = { "provider_type": "oidc", # ... 其他配置 ... "token_refresh": True, # 确保开启自动刷新 "token_cache_ttl": 3600 # Token 缓存时间(秒) }

如果问题仍然存在,检查 Dify 日志

位置通常在 /opt/dify/log 下

查看最新的 api.log 文件

import subprocess def check_dify_logs(): """检查 Dify 日志中的 SSO 相关错误""" result = subprocess.run( ["tail", "-100", "/opt/dify/log/api.log"], capture_output=True, text=True ) # 筛选 SSO 相关的日志 sso_logs = [line for line in result.stdout.split('\n') if 'sso' in line.lower() or 'oauth' in line.lower()] print("最近的 SSO 日志:") for log in sso_logs[-20:]: print(log)

六、实战经验:我是如何为企业配置 SSO 的

去年帮一家教育科技公司部署 Dify 时,他们有 200 多名员工需要使用 AI 应用。最开始没有配置 SSO,每个员工都用自己的个人账号,结果出现了很多问题:

后来我帮他们接入了企业微信 SSO,整个配置过程不到两个小时。配置完成后,所有员工都能用企业微信扫码登录 Dify,而且我通过 HolySheheep AI 的费用统计功能,为每个部门设置了 API 调用配额。

这里要提一下 HolySheheep AI 的一个优势:它的汇率是 ¥1=$1,而官方汇率是 ¥7.3=$1,这意味着企业的 AI 成本直接节省了 85% 以上。按这家公司每月 5 万美元的 API 调用量来算,每月能节省超过 30 万元人民币。

配置完成后,我还写了一个自动化脚本,用于同步企业微信的部门结构和用户状态:

import requests
import time

HolySheheep AI 作为统一网关

HOLYSHEEP_BASE = "https://api.holysheep.ai/v1" API_KEY = "YOUR_HOLYSHEEP_API_KEY" def sync_enterprise_users(): """同步企业微信用户到 Dify""" # 获取所有企业微信部门 departments = requests.get( "https://qyapi.weixin.qq.com/cgi-bin/department/list", params={"access_token": "YOUR_WX_ACCESS_TOKEN"} ).json() # 获取所有用户 users = requests.get( "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist", params={ "access_token": "YOUR_WX_ACCESS_TOKEN", "department_id": 1, "fetch_child": 1 } ).json() headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } synced_count = 0 for user in users.get("userlist", []): # 为每个企业微信用户创建 Dify 账号 payload = { "email": user["mobile"] + "@company.com", "name": user["name"], "department": user["department"][0] if user["department"] else 1, "status": "active", "external_id": user["userid"] # 绑定企业微信 ID } response = requests.post( f"{HOLYSHEEP_BASE}/dify/users/sync", headers=headers, json=payload ) if response.status_code == 200: synced_count += 1 # 避免请求过快 time.sleep(0.1) print(f"成功同步 {synced_count}/{len(users.get('userlist', []))} 名用户") return synced_count sync_enterprise_users()

这个脚本每天会自动运行一次,确保 Dify 中的用户状态和企业微信保持同步。员工入职、调岗、离职,都能自动处理。

七、配置完成后的验证与优化

SSO 配置完成后,建议做一次完整的验证测试,确保各个方面都正常工作。

7.1 必测场景清单

  1. 新用户首次登录:从未注册过的企业用户尝试登录
  2. 老用户切换认证方式:原本用邮箱注册的用户切换到 SSO
  3. 权限验证:不同角色的用户能看到不同的功能
  4. 会话保持:关闭浏览器后重新打开,是否需要重新登录
  5. 退出登录:点击退出后,是否正确跳转到登录页

7.2 性能监控建议

建议开启 Dify 的 SSO 相关日志监控,及时发现异常:

# 在 Dify 环境中设置日志监控

修改 docker-compose.yml 中的 logging 配置

services: api: logging: driver: "json-file" options: max-size: "10m" max-file: "3" environment: - LOG_LEVEL=INFO - SSO_DEBUG=true # 开启 SSO 调试日志

查看 SSO 日志的命令

docker logs dify-api --since 10m | grep -i sso

八、总结与后续学习

通过这篇文章,我们从零开始学习了 Dify SSO 认证的配置方法。主要内容包括:

对于想要进一步提升的读者,我建议:

  1. 尝试配置钉钉或企业微信的 SSO,感受不同平台的差异
  2. 学习 SAML 协议,为接入更多企业系统做准备
  3. 研究 Dify 的权限管理机制,结合 SSO 实现更精细的访问控制

在 AI API 接入方面,如果你在寻找稳定、低成本、大厂模型覆盖全面的供应商,HolySheheep AI 是一个值得考虑的选择。它的优势不仅在于价格——GPT-4.1 每百万 token 输出仅 $8,Claude Sonnet 4.5 是 $15,Gemini 2.5 Flash 只要 $2.50,DeepSeek V3.2 更是低至 $0.42——还在于国内直连的稳定性和便捷的充值方式。

👉 免费注册 HolySheheep AI,获取首月赠额度

如果你在配置过程中遇到任何问题,欢迎在评论区留言,我会尽力解答。觉得这篇文章有帮助的话,也请分享给身边需要的朋友!