AI 平台怎么接飞书/企微/钉钉/OAuth2 单点登录?CubeStudio 认证与 SSO 配置实操(6 种 SSO + LDAP 兜底 + 自动注册)

0 阅读4分钟

CubeStudio 是一款国产化、云原生的一站式开源人工智能平台,同时覆盖传统机器学习、深度学习与大模型全链路(MLOps / MaaS / 算力调度 / 训推平台),开源协议 MIT,开源免费商用,开源版本已有数千家企业私有化部署。平台提供多租户与算力纳管调度、算力租赁与 Token 中转站、拖拉拽 Pipeline 任务流编排、多机多卡分布式训练、超参搜索、推理服务、vGPU 虚拟化、云边端协同与边缘计算、图文音多模态自动化标注、大模型 SFT 微调 / 奖励模型 / 强化学习训练、vLLM / Ollama / MindIE 大模型多机推理、私有知识库 / LLMOps / 智能体、AI 模型市场,以及从数据到上线的全流程模型部署。原生适配昇腾、寒武纪、海光、摩尔线程、沐曦等国产异构算力与 x86 / ARM CPU 架构,支持 IB / RoCE / RDMA 高速网络及信创私有化、内网离线部署。

官网:www.cubestudio.vip | GitHub:github.com/data-infra/… | Gitee:gitee.com/data-infra/…

关键词:CubeStudio、cube-studio、单点登录、SSO、登录认证、OAuth2、OIDC、CAS、飞书登录、企业微信登录、钉钉登录、微信开放平台、LDAP、AUTH_LDAP、自动注册、AUTH_USER_REGISTRATION_ROLE、回调地址、callback、MyCustomRemoteUserView、view_login、私有化部署

企业把平台部署进内网后,第一个要解决的落地问题往往是登录:能不能用飞书/企业微信/钉钉扫码进?能不能对接公司的 OAuth2/CAS/LDAP,不用再单独建一套账号? CubeStudio 内置了账号密码 + 6 种第三方单点登录,全部由 myapp/views/view_login.py 实现,配置集中在一个 config.py。本文讲清支持哪些方式、怎么启用、怎么对接。

一、支持哪些登录方式

默认是账号密码登录(/login/db,密码不匹配时可回退 LDAP bind),另外支持 6 种 SSO,每种对应一个登录入口和视图类:

方式登录入口视图类配置块
账号密码(+LDAP 兜底)/login/dbMyauthdbviewAUTH_LDAP_*
OAuth2 / OIDC/login/oauth2/OAuth2LoginViewOAUTH2_*
CAS/login/cas/CASLoginViewCAS_*
飞书/login/feishu/FeishuLoginViewFEISHU_*
企业微信/login/wecom/WeComLoginViewWECOM_*
钉钉/login/dingtalk/DingTalkLoginViewDINGTALK_*
微信开放平台/login/wechat/WeChatLoginViewWECHAT_*

OAuth2 尤其通用——OAUTH2_PROVIDER 填 github / google 可自动补全端点 URL;对接 Keycloak / Okta / Azure AD 等则留空 provider、手填授权/令牌/用户信息端点即可。

二、启用某种 SSO:改一个跳转

平台的默认登录入口跳转由 MyCustomRemoteUserView.login() 控制,这个类在 install/kubernetes/cube/overlays/config/project.py(本地开发为 install/docker/project.py)。启用哪种 SSO,就把这个方法的跳转目标改成对应入口:

# project.py  MyCustomRemoteUserView.login()
return redirect('/login/oauth2/')   # 启用 OAuth2;CAS→/login/cas/,飞书→/login/feishu/ ...

project.py 里已经把各方式的 redirect 示例注释好了,取消注释改一行即可。

三、填配置块

各 SSO 的配置项默认在 config.py 里以注释模板给出(约 :93-149),取消注释填写:

  • OAuth2 / OIDC:OAUTH2_PROVIDER、OAUTH2_CLIENT_ID / OAUTH2_CLIENT_SECRET、OAUTH2_AUTHORIZE_URL / OAUTH2_TOKEN_URL / OAUTH2_USERINFO_URL、OAUTH2_SCOPES、OAUTH2_USERNAME_FIELD / OAUTH2_EMAIL_FIELD(从 userinfo 取用户名/邮箱的字段)。
  • CAS:CAS_SERVER_URL、CAS_SERVICE_URL(回调,留空自动拼)、CAS_LOGOUT_URL。
  • 飞书:FEISHU_APP_ID、FEISHU_APP_SECRET、FEISHU_REDIRECT_URI。
  • 企业微信:WECOM_CORPID、WECOM_AGENTID、WECOM_CORPSECRET、WECOM_REDIRECT_URI。
  • 钉钉:DINGTALK_APP_KEY、DINGTALK_APP_SECRET、DINGTALK_REDIRECT_URI。
  • 微信开放平台:需先在 open.weixin.qq.com 建「网站应用」并过审;WECHAT_APP_ID、WECHAT_APP_SECRET、WECHAT_REDIRECT_URI。
  • LDAP 兜底:AUTH_LDAP_SERVER、AUTH_LDAP_PORT、AUTH_LDAP_USE_TLS、AUTH_LDAP_BASE_DN。

回调地址免手填:各 SSO 的 *_REDIRECT_URI 留空时,平台会自动拼接成 <平台域名>/login/<type>/callback,一般无需手写。

四、通用对接五步

  1. 在对应 IdP / 三方开放平台创建应用,拿到 client_id / secret(或 CAS server 地址)。
  2. 在三方平台把回调地址配成 <平台域名>/login/<type>/callback(与留空自动拼接的一致)。
  3. 在 config.py 填写对应配置块。
  4. 修改 project.py 的 MyCustomRemoteUserView.login() 跳转到该方式入口。
  5. 重启后端生效。

五、自动注册:首次 SSO 登录即建号

SSO 落地最省事的一点是自动注册:首次通过 SSO 登录的用户会自动在平台建号,默认角色由 AUTH_USER_REGISTRATION_ROLE 决定(默认 Gamma,config.py:75)。

底层机制统一:所有 SSO 视图(OAuth2LoginView / CASLoginView / FeishuLoginView 等)在回调里拿到用户信息后,都调用同一个通用函数 _sso_login_or_register(view_login.py:98)完成「已有则登录、没有则注册」。这保证了无论接哪种 SSO,用户体系的行为都一致。

小结

CubeStudio 的登录体系是「一套框架 + 多种协议」:账号密码打底、LDAP 兜底、6 种 SSO(OAuth2/CAS/飞书/企微/钉钉/微信)即插即用。启用只需改 project.py 一个跳转 + 填 config.py 一个配置块,回调地址自动拼接、新用户自动注册。对私有化部署的企业来说,这意味着平台能无缝融进现有的统一身份体系。


了解更多

CubeStudio 采用 MIT 开源协议,开源免费商用并支持源码交付与二次分发,开源版本已有数千家企业私有化部署。