Spring cloud微服务安全实战-6-2JWT认证之认证服务改造
首先来解决认证的问题。
1.效率低,每次认证都要去认证服务器调一次服务。
2.传递用户身份,在请求头里面,
3.服务之间传递请求头比较麻烦。
jwt令牌。
spring提供了工具,帮你在微服务之间传递令牌。让你不用去写额外的代码
服务器端的改造
看一下认证服务器配置的这个类。这里有个tokenStore,就是令牌的存储器。现在用的是jdbc的TokenStore,令牌是存在数据库里的

我们new 一个jwtTokenStore它 需要一个参数jwtTokenEnhancer


需要set一个key就是签名的键。jwt本身不是加密的,谁都可以看到令牌里的信息,它用来保证安全的方式就这个签名。你需要用一个key对这个token进行签名。然后使用token的人用相同的key去验证签名,如果那个签名证明是这个key签出去的。那么就说明token里面的内容没被改过。没被改过,我就认为它是安全的。


接收token的人需要这个key来验证签名,所以我们要把这个key当做一个服务暴露出去。 这样使用这个token的人才能通过这个服务拿到 这个key来验证签名。

这样spring Security就会往外暴露一个服务,然后只有经过认证的请求才能访问服务拿到这个TokenKey.就是这个字符串,然后拿到这个字符串去验签名
运行认证服务器测试
看一下jwt到底是个什么样子,然后再往下走。

直接访问认证服务器


把token复制出来。

order对应数据库内可以访问的resoure_ids



jti可以认为是令牌的id
client_id这个令牌是发给哪个应用的。这里可以看到是发给admin这个应用的

只是防串改,并不信息保密。所以不建议往jwt里面放一些和自己业务 相关的信息。可能会导致你的信息泄露。
这里我们用了简单的串做为key,生产的时候不要这么去做。因为一旦泄露,发出去的token就危险了。

key做安全措施
之前我们生成的key用来做https的证书,

现在拿这个证书来做签名的key。复制到认证中心项目里。


KeyStoreKeyFactory需要一个resource,resource就是我们的证书,

还需要证书的密码

这里配置了证书密码

这里我们就直接写死了。

证书在根目录下面。

给公私钥起的名字就叫做jojo。拿出来作为加密用的私钥就 可以了。

启动测试

重新发请求。


公私钥都粘上才能验内容到底是不是被篡改过。这样token的安全程度就会高一些。
jwt只是防串改,并不能加密里面的信息,心思谁都能看见。

结束
Spring cloud微服务安全实战-6-2JWT认证之认证服务改造的更多相关文章
- 《Spring Cloud微服务 入门 实战与进阶》
很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...
- Spring Cloud微服务安全实战_00_前言
一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介: 二.最终形成的架 ...
- Spring cloud微服务安全实战_汇总
Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...
- Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器
上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...
- Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务
实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- Spring cloud微服务安全实战 最新完整教程
课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...
- Spring cloud微服务安全实战-6-8sentinel限流实战
阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...
- Spring cloud微服务安全实战-6-4权限控制改造
授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...
- Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)
授权模式改造成了Authorization code完成了改造的同时也实现了SSO.微服务环境下的前后端分离的单点登陆. 把admin的服务重启.刷新页面 并没有让我去登陆,直接就进入了首页. ord ...
随机推荐
- ted演讲小总结(持续更新_12月15日)
目录 2019年12月1日 星期日 2019年12月2日 星期一 2019年12月3日 星期二 2019年12月8日 星期日 2019年12月15日 星期日(这个演讲相对来说不好理解,因为这类逻辑暂时 ...
- spring DefaultListableBeanFactory 概述
有人说,DefaultListableBeanFactory是spring的发动机,其实重要性不为过.TA的整体类图如下: 这里先概述接口部分: BeanFact ...
- 【测试用例工具】TestLink教程:一份完整指南(转)
转自:https://blog.csdn.net/cjtxzg/article/details/80498226 TestLink教程:一份完整指南1 TestLink的优点 登录到TestLink ...
- Java静态代理与动态代理 理解与应用场景
角色 抽象角色:接口类 实现角色: 实现类 代理角色:代理实现的类,最终使用的对象 静态代理 1. 接口 /** * description * * @author 70KG * @date 2018 ...
- Springboot打包及远程调试
如果您使用Spring Boot Maven或Gradle插件来创建可执行jar,则可以使用来运行您的应用程序java -jar,如以下示例所示: $ java -jar target / myapp ...
- car配置篇
这没有什么好说的 1.5t的涡轮增压 CVT(Continuously Variable Transmission)技术即无级变速技术,它采用传动带和工作直径可变的主.从动轮相配合来传递动力,可以实现 ...
- 五.划分LVM逻辑卷
作用: 1.整合分散的空间 2.空间可以进行扩大 零散空闲存储 ---- 整合的虚拟磁盘 ---- 虚拟的分区 由众多的物理卷(PV)组合成卷组(VG),从卷组中划分多个逻辑卷(L ...
- AtCoder Grand Contest 015题解
传送门 \(A\) 找到能达到的最大的和最小的,那么中间任意一个都可以被表示出来 typedef long long ll; int n,a,b;ll res; int main(){ scanf(& ...
- (20)打鸡儿教你Vue.js
vue-cli 快速创建工程,工程化项目目录 npm uninstall -g vue-cli npm install -g @vue/cli https://www.bootcdn.cn/ http ...
- pycharm通过pytest运行报错:No test were found 解决
今天写代码犯了一个不应该犯的小错误,通过记录下来便于查看 1.报错代码如下: platform win32 -- Python 3.7.3, pytest-4.0.2, py-1.8.0, plugg ...