认证与单点登录配置

部署/运维时需要配置平台登录方式——启用 LDAP 兜底或某种第三方单点登录(OAuth2/CAS/飞书/企微/钉钉/微信),需要知道各自的配置项、回调地址、启用方式与对接步骤时读这篇

运维管理 / 认证与登录
登录认证SSO单点登录OAuth2OIDCOpenIDCAS飞书feishu企业微信wecom钉钉dingtalk微信wechat

认证与单点登录(SSO)配置

平台支持多种登录方式,全部由 myapp/views/view_login.py 实现,配置集中在 myapp/config.py。 默认是账号密码登录(/login/db,密码不匹配时可回退 LDAP bind);另支持 6 种第三方单点登录。 各端点细节、回调流程与自动注册逻辑以 myapp/views/view_login.pymyapp/config.py 为准。

支持的登录方式

方式 登录入口 对应视图类 配置块
账号密码(+LDAP 兜底) /login/db Myauthdbview AUTH_LDAP_*
OAuth2 / OIDC /login/oauth2/ OAuth2LoginView OAUTH2_*
CAS /login/cas/ CASLoginView CAS_*
飞书 /login/feishu/ FeishuLoginView FEISHU_*
企业微信 /login/wecom/ WeComLoginView WECOM_*
钉钉 /login/dingtalk/ DingTalkLoginView DINGTALK_*
微信开放平台 /login/wechat/ WeChatLoginView WECHAT_*

启用某种登录方式

平台默认入口跳转由 project.pyMyCustomRemoteUserView.login() 控制。启用某种 SSO 时, 把该方法的跳转目标改为对应入口即可(见 myapp/config.py:107-110 的说明):

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

各方式配置项(config.py)

以下配置项默认在 myapp/config.py 中以注释给出模板(约 :112-152),按需取消注释并填写。 各 SSO 的 *_REDIRECT_URI 留空时会自动拼接 /(login)/<type>/callback,一般无需手填。

  • OAuth2 / OIDCOAUTH2_PROVIDER(填 github / google 可自动补全各端点 URL;其他 IdP 如 Keycloak/Okta/Azure AD 留空并手填)、OAUTH2_CLIENT_ID / OAUTH2_CLIENT_SECRETOAUTH2_AUTHORIZE_URL / OAUTH2_TOKEN_URL / OAUTH2_USERINFO_URLOAUTH2_SCOPESOAUTH2_USERNAME_FIELD / OAUTH2_EMAIL_FIELD(从 userinfo 取用户名/邮箱的字段)、OAUTH2_LOGOUT_URL
  • CASCAS_SERVER_URLCAS_SERVICE_URL(回调,留空自动拼)、CAS_LOGOUT_URL
  • 飞书FEISHU_APP_IDFEISHU_APP_SECRETFEISHU_REDIRECT_URI
  • 企业微信WECOM_CORPIDWECOM_AGENTIDWECOM_CORPSECRETWECOM_REDIRECT_URI
  • 钉钉DINGTALK_APP_KEYDINGTALK_APP_SECRETDINGTALK_REDIRECT_URI
  • 微信开放平台:需先在 open.weixin.qq.com 创建「网站应用」并过审;WECHAT_APP_IDWECHAT_APP_SECRETWECHAT_REDIRECT_URI
  • LDAP 兜底(账号密码登录时密码不匹配则尝试 LDAP bind):AUTH_LDAP_SERVERAUTH_LDAP_PORTAUTH_LDAP_USE_TLSAUTH_LDAP_BASE_DN

通用对接步骤

  1. 在对应 IdP / 三方开放平台创建应用,拿到 client_id / secret(或 CAS server 地址)。
  2. 在三方平台配置回调地址<平台域名>/login/<type>/callback(与留空自动拼接的地址一致)。
  3. config.py 填写对应配置块(上一节)。
  4. 修改 project.pyMyCustomRemoteUserView.login() 跳转到该方式入口。
  5. 重启后端生效。首次通过 SSO 登录的用户会自动注册,默认角色由 AUTH_USER_REGISTRATION_ROLE 决定(默认 Gamma,见 myapp/config.py:94)。

三方登录的回调与「自动注册或登录」由 view_login.py 中通用函数 _sso_login_or_register 完成; 角色到平台权限的映射、用户名取值规则等以代码为准。

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki