纯手写SpringBoot教案系列-SpringBoot进阶课程-安全

文章目录

  • 八.SpringBoot 安全(待完成)
    • 1. 简介

八.SpringBoot 安全(待完成)

1. 简介

现在企业级运用的最多的安全框架

  • Shiro
  • Spring Security

以上两种框架都对身份认证&授权提供了良好的支持.

当然,安全不止于开发层级,没有绝对安全的系统,系统的安全也是从硬件到软件的一个极其复杂的生态系统.

作为开发者的立场来讲,我们最关注的的应该是我们开发系统的健壮性.

Spring全家桶也为我们的安全提供了保驾护航,且能和SpringBoot无缝整合.

什么是OAuth2.0?

相信做过微信开发的朋友对于这个并不陌生

这不是一个编程语言,而是一套认证的规范

OAuth要求用户不能直接从资源服务器上面取数据(传统的单体应用)

而是有一个认证服务器

用户想要取得资源(信息化时代最终用户获取的都是信息或者资源)

用户要先去认证服务器申请令牌(token)

然后通过令牌获取资源服务器上的数据

这样的方式解决了以下问题:

  • 多点登录问题
  • 时效性问题
  • 授权范围问题

OAuth应用场景?

微服务分布式开发的情况下,用户使用各个服务都单独登录?传统单点登录已经不适用了.

还有别人想要使用我们的服务或者接口,怎么接入?难道每个人都给他们账户密码?

密码撞库怎么防止?

以上就是OAuth解决的问题;

最佳实践?

对外HTTP,对内RPC

什么是开放平台?

腾讯开发平台,微信开放平台等都是基于OAuth2.0协议开发的

什么是令牌刷新refresh_token?

出于安全考量,假如token被盗,黑客就可以无限获取服务器上面的资源,所以应该给令牌加一个有效期(通常是分钟级),这样黑客拿到token的意义也不大了

refresh_token不存储在客户端而是服务端,这样最大程度保证了安全(服务端被黑了就没办法了)

getRefreshToken时需要校验client_id和client_secret,然后分配refresh_token

什么是客户端授权模式?

  • 简化模式
  • 授权码模式(最安全)
  • 密码模式
  • 客户端模式
  1. 简化模式

    没有自己的后台情况下,去对接别人的天气或者是评论服务

  2. 授权码模式(最安全)

    访问认证服务器前会有个回调过程,参照微信授权方式

JWT?

不推荐,只是OAuth里一个小分支,但是网上很多教程,官方都不推荐的东西

你可能感兴趣的:(纯手写SpringBoot教案)