首先来解决认证的问题。

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只是防串改,并不能加密里面的信息,心思谁都能看见。

结束

最新文章

  1. 深入学习jQuery选择器系列第三篇——过滤选择器之索引选择器
  2. ax Mail
  3. 兼容ie7、8、9、10、FF、Chrome的遮罩显示
  4. iOS开发-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"
  5. 【转】Java 项目UML反向工程转化工具
  6. css之字体设置
  7. Linux shell misc
  8. c# 任意多个数,求最大值
  9. Export Farm Solution wsp Files SharePoint 2007 and 2010
  10. Solr In Action 笔记(3) 之 SolrCloud基础
  11. SPOJ220 Relevant Phrases of Annihilation
  12. [译]Stairway to Integration Services Level 10 - 高级事件活动
  13. MVC学习笔记(分享)
  14. MySQL提示“too many connections”的解决办法
  15. c++入门篇八
  16. php-memcache基本用法
  17. What Would you Find out about MS908CV ?
  18. php优秀框架codeigniter学习系列——common.php
  19. HBase原理和架构
  20. chrome 下修改 agent 的方法

热门文章

  1. machine learning (6)---how to choose features, polynomial regression
  2. margin值为负值
  3. TVS瞬态抑制二极管选型指南
  4. OAuth 2.0攻击
  5. LightOJ - 1297 - Largest Box(数学)
  6. Javaweb学习笔记(一)
  7. Servlet实现注册
  8. Linux中三种SCSI target的介绍之各个target的优劣
  9. C宏定义和使用
  10. Matlab中矩阵的数据结构