文章目录
前言
之前说是将springcloud gateway作为oauth2的客户端,经过仔细推敲,之前的方式其实是将springcloud gateway作为了资源服务器使用。
一、个人对oauth2资源服务器以及oauth2客户端的理解
- 资源服务器:不维护access_token,只验证token以及权限,需要第三方去维护登录并维护token一系列操作
- 客户端:通过oauth2给出的几种授权模式进行授权登录维护token、中继token等一系列操作
二、具体配置及使用
1.application.yml的配置
主要是配置client,其中user-name-attribute注意是user-info-uri接口返回回来数据中user信息的key值
2.配置资源路由使用- TokenRelay=来中继token
3.去掉之前自定义的SecurityConfig
4.测试效果
1.访问网关
http://zw-pc3-pc:9003/跳到了授权服务器的登录界面。
2.登陆
登陆后跳到授权页面
3.确认授权
确认授权后因没有http://zw-pc3-pc:9003没有响应的接口所以报了404,但是说明已经可以正常访问网关
尝试访问以下路由下的consumer资源服务器(consumer是作为oauth2资源服务器的),可以正常访问,说明token已经中继到了consumer资源服务器下
我们可以通过postman不传递token,可以看到报了unauthorized,可以说明springcloud gateway的- TokenRelay是起到中继令牌的作用的
总结
springcloud目前默认只支持授权码模式,当我把authorization-grant-type改为password时报错如下: