auth_service 是统一认证域仓库,面向业务工程提供独立部署的认证服务,并沉淀认证服务自身使用的会话、Provider 与接入 SDK。
template_server/- 当前认证服务主体,基于
go-zero的 REST 服务实现。
- 当前认证服务主体,基于
client/- 业务 server 调用
auth_service的 Go client。
- 业务 server 调用
guest/、phone/、provider/、session/- 服务内部复用的认证域能力包,不应成为业务仓继续自建本地登录内核的理由。
template_server 是当前统一认证域实现,按以下层次拆分:
auth kernelprovider adapterstenant/project configidentity/session storebusiness bridge
核心数据表:
auth_tenantsauth_provider_configsauth_usersauth_identitiesauth_sessions
核心接口:
GET /api/v1/auth/providers/:provider/login-urlPOST /api/v1/auth/providers/password/registerPOST /api/v1/auth/providers/:provider/callbackPOST /api/v1/auth/providers/phone/send-captchaPOST /api/v1/auth/providers/guest/device-idPOST /api/v1/auth/refreshPOST /api/v1/auth/logoutGET /api/v1/auth/mePUT /api/v1/auth/mePUT /api/v1/auth/internal/users
微信小程序接入要点:
- 前端通过
wx.login获取code - 业务后端把
tenant_key + client_type=miniprogram + code转发到POST /api/v1/auth/providers/wechat_miniprogram/callback auth_service使用租户级app_id / app_secret执行code2session- 业务 bridge 需要接收
provider=wechat,并按open_id / union_id / session_key同步本地用户
微信 provider 拆分约定:
wechat_app对应 App 登录wechat_web对应 Web 扫码登录wechat_miniprogram对应微信小程序登录
- 业务工程统一接入远程
auth_service协议,不再各自维护本地登录内核。 - 新租户通过 YAML 配置和业务 bridge 接口接入,不重复开发微信、Apple、手机号快捷登录、验证码和游客登录流程。
- 业务侧只保留与自身用户模型有关的本地同步逻辑,认证状态机、Provider 回调和 token 规则统一由
auth_service承担。 - 当业务侧需要把新的登录方式绑定到当前账号时,应通过
current_user_id / current_user_role把当前业务用户上下文透传给 bridge,而不是在业务仓各自实现另一套验证码认证内核。 - 业务侧允许用户修改认证域共享资料字段(如昵称、头像)时,必须同步回写
auth_service,不能只改本地业务库,否则后续登录和 token 刷新会把旧资料重新带回业务侧。 - 业务侧管理后台如果要修改其他用户的共享资料字段(如昵称、头像、角色、状态),也必须走
auth_service的受信接口,不再允许只在业务库本地改这些字段。