找回密码
 加入怎通
查看: 70|回复: 0

Cloud Gateway + Security OAuth2 + JWT实现微服务统一认证授权鉴权(Cloud Gateway tomcat)

[复制链接]
我来看看 发表于 2023-03-06 19:54:30 | 显示全部楼层 |阅读模式
9 i/ x ^6 z9 _# ]# C" t

一. 前言二. OAuth2和JWT的关系1. 什么是OAuth2?OAUth2就是一套广泛流行的认证授权协议,大白话说呢OAuth2这套协议中有两个核心的角色,认证服务器和资源服务器两个角色和 youlai-mall 模块对应关系如下:。

* ?( A5 [- r) o) t8 A/ ^

模块名称youlai-mall模块OAuth2角色服务地址认证中心youlai-auth认证服务器localhost:8000网关youlai-gateway资源服务器localhost:9999用户不能直接去访问资源服务器(网关),必须先到认证服务器认证,通过后颁发一个token令牌给你,你只有拿着token访问资源服务器才能通过,令牌token是有时间限制的,到时间了就无效。

6 D# g; Q; d' \2 A, p, m

这个模式相信经常到甲方爸爸的地方做驻场的小伙伴深有体会,一般人家可不会给你一个正式员工工牌,要么拿身份证抵押换个临时访问牌,隔天就失效,这样人家才有安全感嘛~其中网关为什么能作为“资源服务器”呢? 网关是作为各个微服务(会员服务、商品服务、订单服务等)统一入口,也就是这些资源服务的统一门面,在这里可以对JWT验签、JWT有效期判断、JWT携带角色权限判断。

! ^. W" q8 y i

2. 什么是JWT?JWT(JSON Web Token)它没啥悬乎的,就是一个特殊的token,最大的特性就是无状态,因为它本身可以携带用户的信息(用户ID、用户名、用户的角色集合等),我们先看下一个解析过后的JWT是什么样子的。

, C* U- M5 G2 D0 L

JWT字符串由Header(头部)、Payload(负载)、Signature(签名)三部分组成复制代码12345LANGUAGE-MAKEFILEHeader: JSON对象,用来描述JWT的元数据,alg属性表示签名的算法,typ标识token的类型4 n, M; k% z" R8 Z. N; a0 _# q % e6 j) K& D) F: D 。

& W5 Z- I# U* ^- o8 x8 q

Payload: JSON对象,重要部分,除了默认的字段,还可以扩展自定义字段,比如用户ID、姓名、角色等等 + C! \# r( f8 n1 Z+ z0 k2 j# y' A6 [0 u! e0 G4 n9 D Signature: 对Header、Payload这两部分进行签名,认证服务器使用私钥签名,然后在资源服务器使用公钥验签,防止数据被人动了手脚6 I7 l9 ?; [ W4 g$ ]) X5 _3 t/ S

/ ^7 |+ W4 e# Q

JWT和传统的Cookie/Session会话管理相比较有着多方面的优势,因为Cookie/Session需要在服务器Session存用户信息,然后拿客户端Cookie存储的SessionId获取用户信息,这个过程需要消耗服务器的内存和对客户端的要求比较严格(需支持Cookie),而JWT最大的特性在于就是无状态、去中心化,所以JWT更适用分布式的场景,不需要在多台服务器做会话同步这种消耗服务器性能的操作。

% |) d/ u( Q0 a8 g; e% `0 `" q# P% P* m

另外JWT和Redis+Token这两种会话管理小伙伴们看项目情况选择,别有用了JWT还使用Redis存储的,因为你这种做法对JWT来说就是“伤害不大,但侮辱性极强”的做法,就当着它的面说我就看不上你的最自以为是的“无状态”特性。

1 n' W3 E% X. e

3. OAuth2和JWT关系?OAuth2是一种认证授权的协议规范JWT是基于token的安全认证协议的实现OAuth2的认证服务器签发的token可以使用JWT实现,JWT轻量且安全三. 认证服务器。

1 E6 a4 G$ |2 J% W j- e

认证服务器落地 youlai-mall 的youlai-auth认证中心模块,完整代码地址: Gitee| Github1. pom依赖复制代码123456789LANGUAGE-XML

9 R2 \' _8 G4 o5 \+ }

>org.springframework.cloudspring-cloud-starter-oauth2

6 x+ I& k) y- X1 M

>org.springframework.securityspring-security-oauth2-jose! B5 C' c6 ?, Q* A + G- j4 Y" E2 J7 |) M/ u# x

5 p5 r) ^7 p+ y O' H& B; C9 p - ^9 r+ a% S* ^1 E: i' A) z* c& [ Z0 D" }! d9 n. E! f4 d4 K r7 ~

暂时无法加载帖子列表

回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-10-1 20:21 , Processed in 0.039327 second(s), 25 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表