文章目录

  • 一、用户认证分析
    • 1、认证 与 授权
    • 2、单点登录
    • 3、第三方账号登录
    • 4、第三方认证
    • 5、认证技术方案
    • 6、Security Oauth 2.0 入门
    • 7、 资源服务授权
      • (1)资源服务授权流程
      • (2)公钥私钥授权流程
      • (3)生成私钥公钥
  • 二、JWT 令牌
  • 三、认证开发
    • 1、认证服务
    • 2、工具封装
    • 3、代码实现
  • 四、总结

代码: https://github.com/betterGa/ChangGou

一、用户认证分析

上面流程图 描述了用户要操作的各个微服务,用户查看个人信息 需要访问 用户微服务,下单 需要访问 订单微服务,秒杀抢购商品 需要访问 秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色,然后授权访问对应的功能,比如管理员 和 普通用户的权限对应的功能 是不一样的。

1、认证 与 授权

  • 身份认证
         用户身份认证 即 用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录。说通俗点,就相当于 校验用户账号密码是否正确。

  • 用户授权
         用户认证通过后去访问系统的资源,系统会判断用户是否拥有访问资源的权限,只允许访问有权限的系统资源,没有权限的资源将无法访问,这个过程叫 用户授权。就是上文说的 “管理员 和 普通用户的权限对应的功能 是不一样的“。

2、单点登录


     用户访问的项目中,至少有 3 个微服务需要识别用户身份,如果用户访问每个微服务都登录一次就太麻烦了,为了提高用户的体验,我们需要实现 让用户在一个系统中登录,其他任意受信任的系统都可以访问,这个功能就叫 单点登录 。

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。 单点登录 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统

3、第三方账号登录

随着国内及国外巨头们的平台开放战略以及移动互联网的发展,第三方登录已经不是一个陌生的产品设计概念了。 所谓的第三方登录,是说基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。 而这里的第三方平台,一般是已经拥有大量用户的平台,国外的比如Facebook,Twitter等,国内的比如微博、微信、QQ等。