spring cloud微服务架构之UAA
2019独角兽企业重金招聘Python工程师标准>>>
微服务中,对用户及其权限的管理,具体实现的方式有很多种,从架构上来看分为:
- 网关层进行权限管理 <本文的实现方式>;
- 各服务独立实现校验;
- 校验逻辑实现在各服务上,通过共享数据或者授权中心等方式实现;
本文源码: 码云传送门
授权流程图示1:
校验流程图示2:
实例演示
git clone https://git.oschina.net/zhangfeng0103/springcloud-microservices-examples
cd springcloud-microservices-examples
mvn clean package
####启动本次重要的三个服务
java -Dfile.encoding=UTF-8 -jar eureka-server\target\eureka-server-1.0.0.jar
java -Dfile.encoding=UTF-8 -jar gateway\target\gateway-1.0.0.jar
java -Dfile.encoding=UTF-8 -jar uaa-service\target\uaa-service-1.0.0.jar
####测试一把(windows)
# 项目中UAA已经默认有两个用户,且有对应的权限。参考resource目录下import.sql
# 用户10086,获取token
C:\Users\zhangfeng>curl "http://localhost:8765/uaa-token/token/byPhone" -H "Content-Type: application/json" --data-binary "{\"phone\":\"10086\",\"password\":\"123\"}" --compressed
{"accessToken":"eyJhbGciOiJIUzUxMiIsInppcCI6IkRFRiJ9.eNpUjsEOgjAQRP-lR2KlYCmFk1_gDxgP23aRohRiwZgY_90NEo3HmXk7O0_mY2Q1mwHYhnmYWJ3JSshCCS03DGZHYSZERmk3eRLOqMLtSuRNnisuoSq5lqLk0lS6AKMcuoLgOeLtAD3SRQf2Qg4-xrVc6aUce_DXtX5PA7Z26Ikb2yHgx9aKdJzNb0Mwzf_CaIeR6CNLh2hbHyBNEuLSqUVOE-7e4urQh6_TQ4DzEpxebwAAAP__.JXorfMhakvVMcfW8m35d9RWv5TEiGKUjZipDXRl9lm9C-EF2UZIO7iGR9XRu6s5axnKM29b4Kvml8PiL984E9w"}# 调用接口 解析token可以显示的看到相应的用户信息及scope
C:\Users\zhangfeng>curl "http://localhost:8765/uaa-token/token/parse?token=eyJhbGciOiJIUzUxMiIsInppcCI6IkRFRiJ9.eNpUjsEOgjAQRP-lR2KlYCmFk1_gDxgP23aRohRiwZgY_90NEo3HmXk7O0_mY2Q1mwHYhnmYWJ3JSshCCS03DGZHYSZERmk3eRLOqMLtSuRNnisuoSq5lqLk0lS6AKMcuoLgOeLtAD3SRQf2Qg4-xrVc6aUce_DXtX5PA7Z26Ikb2yHgx9aKdJzNb0Mwzf_CaIeR6CNLh2hbHyBNEuLSqUVOE-7e4urQh6_TQ4DzEpxebwAAAP__.JXorfMhakvVMcfW8m35d9RWv5TEiGKUjZipDXRl9lm9C-EF2UZIO7iGR9XRu6s5axnKM29b4Kvml8PiL984E9w" -H "Content-Type: application/json" --compressed
{"iss":"uaa","iat":1490456084,"aud":"1001","jti":"db65d37e-f226-4a97-8407-4b985ab6ded5","userName":"jack","exp":1490468084,"email":"1001@uaa.com","phone":"10086","sub":"1001","nbf":1490456084,"scope":["/oschina/**","/the-service/**","/uaa-service/manage/**"]}
# 尝试调用查看用户信息的接口
C:\Users\zhangfeng>curl "http://localhost:8765/uaa-service/manage/users/1001" -H "Authorization:eyJhbGciOiJIUzUxMiIsInppcCI6IkRFRiJ9.eNpUjsEOgjAQRP-lR2KlYCmFk1_gDxgP23aRohRiwZgY_90NEo3HmXk7O0_mY2Q1mwHYhnmYWJ3JSshCCS03DGZHYSZERmk3eRLOqMLtSuRNnisuoSq5lqLk0lS6AKMcuoLgOeLtAD3SRQf2Qg4-xrVc6aUce_DXtX5PA7Z26Ikb2yHgx9aKdJzNb0Mwzf_CaIeR6CNLh2hbHyBNEuLSqUVOE-7e4urQh6_TQ4DzEpxebwAAAP__.JXorfMhakvVMcfW8m35d9RWv5TEiGKUjZipDXRl9lm9C-EF2UZIO7iGR9XRu6s5axnKM29b4Kvml8PiL984E9w" -H "Content-Type: application/json" --compressed
{"phone" : "10086","userName" : "jack","password" : "123","email" : "1001@uaa.com","_links" : {"self" : {"href" : "http://localhost:8765/uaa-service/manage/users/1001"},"user" : {"href" : "http://localhost:8765/uaa-service/manage/users/1001"}}
}
# OK,调用顺利
# 切换用户10087
# .. .省略获取token的步骤,直接尝试调用接口
# cmd窗口有乱码,特意加了-w \nhttpstatus:%{http_code},可以看到,服务器响应的状态码为403
C:\Users\zhangfeng>curl "http://localhost:8765/uaa-service/manage/users/1001" -H "Authorization:eyJhbGciOiJIUzUxMiIsInppcCI6IkRFRiJ9.eNpUjk0KwjAQhe8yy9LYtE3TpCtP4AXExaSJGLE_mAYE8RZeQnDlpcRbOGhBXL73vnnzzuBDgAYiIqTgcYImF5qLSpaKp4DRUphzXlC6nzwJjbUpt9oxmaNiwhbIlCoLxp3AykpZayUIjsEdV9g5unjd7s_rgzx3Gud6qT71rkN_mB8sacKiHTrixt3Qu6-tatIhmt-K3mz_N4Z2GIleQ2bQ25glCWwubwAAAP__.gDIC1foN5yUpFbJ7zC-v0Q3Y4jTu8I5L4_ewvu7dPggXmZIwzucAgsj1RzcObPLF8I0dWwMPYUiALJlfiut_uQ" -H "Content-Type: application/json" --compressed -w \nhttpstatus:%{http_code}{"content":"鏃犺闂潈闄?,"result":false}httpstatus:403
划重点:
# gateway config网关相关的配置
gateway:token:jwt:key: xxxxxsthis # 与uaa中的key保持一致filter:noAuthenticationUrls: #此处代码,下面这些路由 ID 不需要验权- gateway- uaa-tokenerrorMessage: #这是异常处理,code与异常描述的对应关系维护999: 系统异常403: 无访问权限500: 服务器错误
QA:
1、token已经发出去,该账户的权限发生了更新,怎么办?
a方法. 首先说一下托底的方案,token超过有效期就不能使用,这也就意味着,最后一批发放的token有效期过了以后,权限更新会应用到所有账户上。这种方式满足一部分平台的需要。
b方法. UAA通知网关,指定时间之前的token都无效,网关只需在token校验中加上对应的逻辑即可,具体实现上可轮询,可推送。(有点像我们的身份证,中央告知各级单位,某日开始一代身份证无法办理业务…)
2、 即将过期的token怎么刷新?
- 在网关验权过程中,发现即将过期的token,可在response header打入相应的标签,客户端发现有这个标签,调用刷新token的服务,重新获取一次即可。
本文参考了jhipster、CloudFoundry对UAA的实现。
大家有其他思路的话,希望能留言分享.
转载于:https://my.oschina.net/crazyFeng1/blog/867428
spring cloud微服务架构之UAA相关推荐
- 《Spring Cloud微服务架构实战派》PDF样章
内容摘要: 本书针对Spring Cloud Greenwich.SR2版本+Spring Boot的2.1.x.RELEASE版本.在编写过程中,不仅考虑到在企业任职所需的技能,还考虑到求职面试时可 ...
- 疯狂Spring Cloud微服务架构实战
网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...
- 《Spring Cloud 微服务架构进阶》读书笔记
前页 随着 DevOps 和以 Docker 为主的容器技术的发展,云原生应用架构和微服 务变得流行起来. 云原生包含的内容很多,如 DevOps.持续交付.微服务.敏捷等 第一章,微服务架构介绍 架 ...
- Dubbo和Spring Cloud微服务架构对比
一.为什么要使用微服务? 微服务提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合. 今天我们来了解下业内主要的微服务框架:Dubbo 和 Spring Cloud 微服务主要的优势 降 ...
- 一张图带你了解 Spring Cloud 微服务架构!
点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取4T学习资料 Feign Eureka R ...
- 一张图了解 Spring Cloud 微服务架构
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://rrd.me/epgWJ Feign Eure ...
- Dubbo和Spring Cloud微服务架构的对比
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业 ...
- Dubbo和Spring Cloud微服务架构
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业 ...
- 终极对决!Dubbo 和 Spring Cloud 微服务架构到底孰优孰劣?
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业 ...
最新文章
- KVM创建虚拟机(六)
- [BUUCTF-pwn]——[BJDCTF 2nd]ydsneedgirlfriend2
- dsp 数据类型强制转换_JavaSE第二章总结—数据类型
- Android 实现圆角布局,变相实现圆角图片效果(不同位置不同弧度)
- java模式:深入单例模式
- 小程序 ---- (setData关于赋值对象属性的问题)
- sql 语句美化工具
- Javascript基础ppt
- 交换基础之生成树协议
- C++ 面向对象高级开发(侯捷)
- php global 要点
- Android之Scroller详解讲解-真正了解滚动处理
- MybatisPlus代码生成器报错AutoGenerator()‘ has private access in ‘com.baomidou.
- 银河麒麟V10桌面系统卡于光标处无法进入系统解决方法
- PCIe系列第三讲、事务层通用 TLP 头结构分析
- 实模式、保护模式和虚拟8086模式
- CSS颜色混合模式特效
- Wireshark怎么抓包、wireshark抓包详细图文教程 [最新绿色版本version 2.6.1 ]
- CPU+GPU异构计算编程简介
- 分治算法--棋盘覆盖
热门文章
- 使用短信管理你自己的短信网关
- Python中文日期转换为标准数字日期
- cublas 矩阵乘法
- python pymssql — pymssql模块使用指南
- [欠驱动机器人]4,动态规划(Dynamic Programming)
- Makefile造成“ make: *** No rule to make target ' xxx ', needed by 'xxx'。 停止。”错误的一种原因
- ios pan手势滑动消失动画_iOS左滑手势失效的解决方法
- 信号分解(如 EMD,ITD)应用于时间序列预测时是否存在问题
- 【庖丁解牛】图像处理库: 解决WeCenter至少需要有GD图像处理库才能正常运行
- 图论(4)邻接矩阵,关联矩阵