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 ...
随机推荐
- 《The One!团队》第八次作业:ALPHA冲刺(一)
项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件测试基础技术.(2)学习迭代式增量软件开发过程(Scrum) 第一天 ...
- Analysis of algorithms: introduction
一系列的人物角色 Programmer,client,theoretician和blocking 学生可能会承担里面的一个或者多个角色 Running time 提出running time这个概念的 ...
- myeclipse修改内存大小不足tomcat内存不足
myeclipse修改内存大小不足 打开Windows-> Preferences -> Java->Installed JREs 点击右侧的jdk,然后点击“Edit”按钮 Def ...
- Nginx页面图片错误 ERR_CONTENT_LENGTH_MISMATCH
现场:nginx代理的网站有的虚拟目录的图片无法正常显示,提示 ERR_CONTENT_LENGTH_MISMATCH,不断刷新页面图片一条一条的显示出来. 解决方法:找到nginx的缓存文件目录,c ...
- 从零实现jQuery的extend
前言 jQuery 的 extend 是 jQuery 中应用非常多的一个函数,今天我们一边看 jQuery 的 extend 的特性,一边实现一个 extend! extend 基本用法 先来看看 ...
- BeautifulSoup模板简单应用-提取html指定数据(api_name/api_method/api_path,请求body/请求header/pagam参数)
from bs4 import BeautifulSoup import re import os.path import itertools name='newcrm' source_file_pa ...
- windows nginx 目录配置
http { server { listen 80; server_name www.test.com; location / { root E:/data/www; index index.html ...
- nginx配置静态资源:配置绝对路径
nginx配置静态资源:配置绝对路径 项目都是html格式的文件,我的项目路径:E:\javaservice\nginx-1.15.7\html assets:静态资源 html:站点文件 uploa ...
- Bzoj 2818: Gcd(莫比乌斯反演)
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对 ...
- AtCoder Grand Contest 017题解
传送门 \(A\) 直接转移就是了 typedef long long ll; const int N=55; ll f[N][2];int a[N],n,p; int main(){ scanf(& ...