Spring Cloud进阶之路 | 九:资源服务(Spring Cloud Oauth2)
转载请注明作者及出处:
作者:银河架构师
原文链接:https://www.cnblogs.com/luas/p/12201421.html
如上一篇文章Spring Cloud进阶之路 | 八:授权服务(Spring Cloud Oauth2)中所述,授权服务和资源服务总是同时存在的,本文即针对资源服务器相关配置进行讲解。
搭建资源服务器
复用之前文章中的xmall-product商品工程,进行相关改造。
添加依赖
添加spring-cloud-starter-oauth2依赖,修改后的pom文件如下:
Oauth2资源服务器配置
在application.yml中进行oauth2资源器信息配置,user信息获取地址为文章Spring Cloud进阶之路 | 八:授权服务(Spring Cloud Oauth2)中定义的用户信息查询端点-http://localhost:7777/oauth/user。
开启资源服务器
添加@EnableResourceServer注解即可开启资源服务器,有两种方法添加该注解。
第一种,直接在启动类添加。
第二种,如果针对资源服务器有相关配置,则需要添加ResourceServerConfiguration,此时可在此类添加。
如资源服务器没有特殊配置,可直接在启动类添加@EnableResourceServer注解。
身份认证
先启动xmall-auth授权服务器,端口为7777。然后再启动xmall-product工程,端口为8080。
先通过Postman访问http://localhost8080/sku/1122,发现不能像之前一样正常访问了。
通过返回结果中的信息,可以发现一些蛛丝马迹,大概率是因为没有授权,身份认证未通过。
结合前篇文章Spring Cloud进阶之路 | 八:授权服务(Spring Cloud Oauth2)中授权流程的介绍,基本已可以确认是身份认证环节出了问题,当前用户没有经过授权,即访问受保护的资源。
此时,解决方法有两种,如果当前请求是公共资源,无需身份认证,那么,需要在资源服务配置中,允许该资源可以未经授权访问。
重启xmall-product工程,再次访问http://localhost:8080/application,可以正常访问。
如果当前请求资源不是公共资源,那么就需要先从授权服务器请求授权,然后携带授权再次访问该资源即可。
先从授权服务器请求授权。
携带该授权(header方式)访问资源。
资源服务器改造完成!
源码
github
https://github.com/liuminglei/SpringCloudLearning/tree/master/09/
gitee
https://gitee.com/xbd521/SpringCloudLearning/tree/master/09/
微信搜索【银河架构师】,发现更多精彩内容。
技术资料领取方法:关注公众号,回复微服务,领取微服务相关电子书;回复MK精讲,领取MK精讲系列电子书;回复JAVA 进阶,领取JAVA进阶知识相关电子书;回复JAVA面试,领取JAVA面试相关电子书,回复JAVA WEB领取JAVA WEB相关电子书。