基于SSO的Flutter客户端-服务端身份认证方案咨询
起始背景
我有一个Flutter移动应用,通过REST API与自有服务端进行数据交互。目前所有接口均为公开状态,未实现身份认证功能。
说明:服务端当前基于Conduit实现,也可采用其他替代方案。
需求
我需要为该移动应用添加身份认证功能,例如支持用户通过Google/Facebook等第三方社交账号完成身份验证。
假设与挑战
目前有许多实现方案可支持移动端直接对接第三方服务完成登录,但不清楚如何将服务端整合到该流程中。理论上服务端应通过身份认证服务提供的用户ID及令牌完成用户校验。
我更倾向于使用现有成熟库而非自行实现,以降低开发过程中的潜在错误。
客户端、服务端与身份认证服务的交互流程
我设想的交互流程如下:
- 客户端向身份认证服务发起登录请求
- 身份认证服务返回身份验证结果,例如ID令牌
- 客户端将ID令牌发送至服务端
- 服务端将ID令牌发送至身份认证服务以验证用户身份
- 身份认证服务返回验证结果
- 服务端向客户端返回确认信息
- 客户端开始正常的数据交互
时序图如下:
sequenceDiagram Client->>ID service: Login ID service->>Client: ID token Client->>Server: Login Server->>ID service: Verify ID service->>Server: Verification result Server->>Server: Check/Register Server->>Client: Server token Client->Server: Data exchange
技术问询
- 是否有同时支持客户端(移动端)和服务端的身份认证库或服务?
- 上述交互流程是否合理?有哪些可优化的点?
- 实现此类身份认证机制有哪些最佳实践?
欢迎提供更多相关建议。
内容的提问来源于stack exchange,提问作者mspnr
相关产品推荐
相关产品推荐

