• 统一授权服务


    最近一直在学go感觉有点好玩,废话真多。。,整理下授权服务的功能,好久没有总结了,
    ## 项目背景
      现在公交这边有好几个服务,如公交app,定制公交,出租车,租车,好多个服务,他们都有自己的用户体系(登录、注册、授权、实名认证)。
      公交老大想让这些服务都放到一个app里面(A应用),实现在一个app里面可以使用多个服务的功能,可以使用钱包里面的钱,去享受各个服务的功能,如用钱包乘公交车,钱包租车等。
      问题是现在每个服务都有自己的注册登录机制,没办法做用户统一,所以就有了现在这个项目,auth服务

    ## auth服务
      就是想整合所有的注册、登录、实名认证。然后由auth服务统一分配token、用户信息。
    目前的方案是:所有的应用都去auth服务里面注册,注册后,可以设置共享token,比如A应用注册了,他可以设置B应用C应用也可以用A应用注册的用户token去做自己的业务,
    登录获取token的两种实现方式
      一种是如果B应用C应用是嵌入到A应用里面的,可以直接使用A应用的token去做自己的业务,这里也要排除下嵌入的应用是否有权限(验证用户是否有登录某系统权限接口),有权限才能使用token去做自己的业务。
      一种是如果B应用C应用是自己独立的应用,可以使用账号加密码的方式调auth服务的登录接口获取token,(这里需要注意,每个单独的应用需要传入自己的应用ID)。

    1. ## 接口
    2. 1.注册前验证是否注册过用户接口
    3. 2.注册用户接口:单纯往user表添加一条数据,没有密码默认一个密码
    4. 3.注册应用接口:添加可登录的应用,根据注册userid + 应用ids(可以绑定多个),绑定用户可以登录那些应用
    5. 4.登录接口:需要传入loginName + password + 应用id,
    6. 然后根据用户名找到用户能登录的所有应用id,使用jwt存到token中(userid + loginName + 时间戳 + 应用ids),这样我们每次再用其他应用单独登录时就可以直接去在网关哪里用token判断他有没有权限登录了
    7. 5.验证用户是否有登录某系统权限接口:排除下嵌入的应用是否有权限,有权限才能使用token去做自己的业务
    8. 6.获取验证码接口
    9. 7.验证码登录接口
    10. 8.三方授权登录接口:authCode + flag(支付宝、支付宝小程序等)
    11. 9.获取用户授权信息接口:三方授权登录使用
    12. 10.各自应用的业务接口请求方式,需要再Headers中携带token和自己的应用ID(网关验证token是否有登录权限)

    就是他拿着A应用的token调用自己的业务的时候,token的验证是走自己的网关过滤器还是走auth的网关过滤器(走auth的网关过滤器),大致就是这样的,他们要求可以自己在注册的时候设定那些应用需要统一授权

  • 相关阅读:
    数据库产生“死锁”
    SpringBoot自动装配原理(简单易懂)
    DataX数据同步
    论文解读(DWL)《Dynamic Weighted Learning for Unsupervised Domain Adaptation》
    体感互动游戏研发虚拟场景3D漫游
    消息队列全面解析
    el-form动态检验无法生效问题(已解决)
    FIX协议的基本概念
    【面试题】马上金九银十了,简历该准备起来了,面试题你准备好了吗 ?浅谈 JS 浅拷贝和深拷贝
    七天.NET 8操作SQLite入门到实战 - 第七天BootstrapBlazor UI组件库引入(1)
  • 原文地址:https://blog.csdn.net/gaohechao/article/details/128120374