飞书 SSO 中心服务

这是一个公共的 SSO 服务节点。业务站点只需要传入完整的 redirect_url,系统会自动解析出站点根地址,并固定回调到该站点的 /sso_callback

站点接入说明

  • 业务站点发起登录时,请跳转到:/auth/login_ssl?redirect_url=your_redirect_url&timestamp=unix_ts&signature=hex_hmac_sha256;如需切换账号,可追加 force_login=1 跳过 SSO 本地缓存。
  • 业务站点建议先调用:/auth/check_is_login?redirect_url=your_redirect_url&timestamp=unix_ts&signature=hex_hmac_sha256
  • check_is_login 会校验时间戳和签名;如果 SSO 当前已登录,会直接返回对应用户信息,业务站点可直接更新本地登录态。
  • 如果 check_is_login 返回 data.user = null,说明 SSO 当前未登录,此时再跳转到 /auth/login_ssl 进行飞书登录。
  • 签名规则:hex(hmac_sha256(SSO_SIGNATURE_SECRET, timestamp + "\n" + redirect_url))
  • SSO 中心会从 redirect_url 解析出 domain_url,例如 https://respondstat.365d4u.com
  • 固定回调地址为:domain_url + /sso_callback
  • 业务站点需提供固定的 /sso_callback,用于接收 SSO 回传结果。
  • 回传成功时,SSO 中心会向 /sso_callback 发送表单 POST,data 里包含 user 和原始 redirect_url
  • 业务站点收到成功结果后,应先保存本站登录态,再跳转到 data.redirect_url
  • 业务站点退出时,请让浏览器直接访问 /auth/logout?redirect_url=... 或提交 POST /auth/logout;接口会先清除 SSO 中心保存的用户身份,再跳转回业务站点。
  • 跨站 POST/fetch 退出需要浏览器携带 SSO cookie;HTTPS 下可配置 SESSION_COOKIE_SAMESITE=NoneSESSION_COOKIE_SECURE=true
  • force_login=1/auth/logout 只清除本项目的 SSO 身份;如果浏览器仍登录原飞书账号,重新授权时飞书仍可能返回原用户,需要先在飞书侧切换或退出账号。
  • 白名单只需配置 domain_url,不需要配置后面的 path。

本地测试示例

当前测试 redirect_url:

https://sso.365d4u.com/test-result

对应固定回调地址:

https://sso.365d4u.com/sso_callback

当前白名单 domain_url:

http://127.0.0.1:5000
http://127.0.0.1:8079
http://host365d.local
https://devlocal.365d4u.com
https://msg.365d4u.com
https://newsystem.365d4u.com
https://newsystemtest.365d4u.com
https://price.365d4u.cn
https://respondstat.365d4u.com
https://sso.365d4u.com
https://test.365d4u.com
https://www.365d4u.com

当前 session_life_limit:

7200 秒