- JWT结合Oauth2
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
通过JWT来实现生成令牌秘钥,秘钥使用非对称加密方式,由授权中心生成私钥,将公钥给各个资源中心,这样用户只要向资源中心申请了秘钥令牌后就可以直接去访问各个资源,资源服务器使用公钥来验证用户的令牌有效性,这样不用再次向授权中心验证。
- 授权配置
2.资源服务器配置
资源服务器需要先配置好公钥,资源服务器在启动的时候会先想授权中心验证公钥的有效性,只有有效才接受授权,否则启动失败。
这个配置在nacos里的security.yaml中,admin service需要引入security.yaml来向授权中心验证签名有效性。
3.授权控制
授权工作由Spring security,而认证是Oauth2来完成。
Spring Security定义了4个支持注解
@PreAuthrize
@PostAuthorize
@PreFilter
@PostFilter
需要开启全局的方法控制@EnableGlobaMethodSecurity
4.用户登录
1)客户端通过发送用户名,密码验证用户登录信息正确。
2)服务器端包装请求将信息发送给授权中心得到token令牌信息。
3)
登录实现
- 配置文件
admin-service-dev.yaml
网关跨域配置
gateway:
globalcors:
cors-configurations:
'[/**]':
allow-credentials: true
allowed-origins: "*"
allowed-headers: "*"
allowed-methods: "*"
max-age: 3600
配置为资源服务器
首先需要JWT 的配置,配置Oauth2配置依赖。



