码迷,mamicode.com
首页 > 编程语言 > 详细

Spring cloud微服务安全实战-6-2JWT认证之认证服务改造

时间:2019-12-02 13:33:07      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:应用   min   导致   res   篡改   自己   保密   字符   uri   

首先来解决认证的问题。

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认证之认证服务改造

标签:应用   min   导致   res   篡改   自己   保密   字符   uri   

原文地址:https://www.cnblogs.com/wangjunwei/p/11969908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!