You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.0 KiB

授权、鉴权中心微服务功能设计

  • 什么是 JWT
    • JSON Web Token (WT)是一个开放标准,它定义了一种紧凑的、自包含的方式,用于作为 JSON对象在各方之间安全地传输信息
    • 哪些场景下可以考虑使用 JWT?
      • 用户授权 信息交换

  • JWT 的结构(组成部分)
    • JWT由三个部分组成:Header、Payload、Signature,且用圆点连接 xxxxx.yyyyy.ZZZZZ
    • Header:由两部分(Token 类型、加密算法名称)组成,并使用 Base64 编码 {'alg':"HS256",'type':"JWT"}
    • Payload:KV 形式的数据,即你想传递的数据(授权的话就是 Token 信息 )
    • Signature:为了得到签名部分,你必须有编码过的 Header、编码过的 payload、一个秘钥, 签名算法是 Header 中指定的那个,然对它们签名即可
      • HMACSHA256(base64UrlEncode(header)+"."+base64UrlEncode(payload),secret)

  • 授权、鉴权中心微服务功能逻辑架构
    • 授权鉴权中心微服务功能逻辑架构.png
    • 鉴权功能不走HTTP可以更快来进行完成开发, 因为微服务很多模块都要依赖鉴权服务

搭建授权、鉴权中心微服务

  • [FIX] Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
    • 加入配置:
      • spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
  • [FIX] Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time
    • 在配置文件中 spring.datasource.url 加 serverTimezone=GMT%2B8

数据表及 ORM 过程

生成 RSA256 公钥和私钥对

  • [RSATest.java]
    • 一般是放在服务器上, 用的时候拉取下来使用

基于 JWT + RSA256 的授权

  • 查看代码实现即可

验证服务可用性

  • Test 验证 Service 功能可用性
  • http 脚本验证 对外接口是否可用

授权、鉴权中心微服务总结

  • 生成数据库 文档
    • [DBDocTest.java]