SpringBootSecurity学习(16)先后端分离版之 OAuth2.0 加密配置

示例代码的改进

前面使用spring cloud security和spring cloud oauth2写了一个第三方受权的例子,例子很是的简单,主要目的是用来熟悉OAuth2.0 申请受权的整个流程,这个简单的示例确定是不能直接用于生产环境的,还有不少须要改进的地方,咱们来总结一下:git

  • 一、只演示了受权码的形式,其它的三种(隐藏式,密码式,客户端凭证)并无熟悉
  • 二、密码和秘钥是未加密的
  • 三、oauth的客户端配置,包括id,秘钥等信息是在内存中配置死的,没法动态增长
  • 四、token也是放在内存中存储的,没法手动废止
  • 五、jwt的生成使用的是简单的秘钥形式,最好使用非对称加密的方式,更加安全可靠
  • 六、令牌的申请权限配置不太合理
  • 七、资源服务中的jwt和令牌验证配置也不太灵活
  • 八、受权流程应该结合eureka开发和使用
  • 九、没有验证令牌中继特性,等等等等

从上面列举的问题能够看出,就算示例代码能运行,流程也清楚,可是要学会使用Spring Cloud Security,尤为要在生产环境使用,还须要对每一个细节都能掌握和了解才行。spring

加密配置

首先咱们来改进第一个地方,实现加密配置。你们知道用户注册以后,存储用户资料的时候,用户密码在数据库中最好是加密后再保存,一样的道理,oauth的客户端信息最终也是要存储在数据库而不是直接在代码中配置死的,它的secret字段也应该加密后再存储,下面在受权服务中来配置加密,首先修改security配置类,配置加密方式:数据库

file

而后将登录用户的密码配置为加密:segmentfault

file

而后修改受权配置类,将客户端配置中的secret配置为加密:安全

file

这样加密配置就完成了。资源服务不用作任何修改。spring-boot

测试

配置上面三个加密的地方后,加密就配置好了,下面来测试一下,其实测试流程与前面的同样,客户端感知不到,获得的access_token以下:测试

file

最终访问结果以下:加密

file

代码地址:https://gitee.com/blueses/spr... 17 18spa