在微服务系统中,存在以下两个核心组件:
认证中心:负责认证和存储应用信息。
用户中心:专注于存储用户信息。
登录流程
用户登录:用户提交用户名、密码、appId 和 appSecret 到认证中心。
应用登录:应用提交 appId 和 appSecret 到认证中心。
认证中心与用户中心的通信
在获取 Token 的过程中,认证中心会根据登录类型进行相应处理:
若为用户登录,认证中心需访问用户中心以查询用户信息。
问题
认证中心在查询用户信息时,由于缺乏 Token,如何确保用户中心接口的安全性?
当前解决方案
客户端提交的 appId 和 appSecret 通过认证中心透传至用户中心。
用户中心的查询接口对 appId 和 appSecret 进行签名验证,将appId 和 appSecret反查认证中心判断其合法性。
是否有更好更规范的做法及设计
推荐使用 双向 TLS(mTLS) 或者使用 API Gateway with Authentication and Authorization 作为确保首次调用接口安全性