初识Spring Cloud系列——Security功能

300 阅读3分钟

这是我参与更文挑战的第28天,活动详情查看: 更文挑战

本来以为Spring Cloud相关组件已经了解的接近尾声了,今天差点忽略了一个很重要的部分Spring Cloud Security

前言

任何一个管理系统,都存在一个最重要的页面————登陆页面,就看看戏需要票据进场一样,我们想要获得管理系统的权限,也需要对应的票据

OAuth2.0的认证流程图

image.png

  • (A)用户打开客户端以后,客户端请求用户给予授权;
  • (B)用户同意授权给客户端;
  • (C)客户端使用上一步获得的授权,向认证服务器申请令牌;
  • (D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌;
  • (E)客户端使用令牌,向资源服务器申请获取资源;
  • (F)资源服务器确认令牌无误,同意向客户端开放资源。

授权方式

授权码模式(authorization-code) 最安全的授权方式,适用于开放平台,客户端为不受信的第三方应用,最终客户端获取了token,用户不知情

  1. 客户端向授权服务器请求授权(携带clientId、返回地址等)
  2. 授权服务器跳转页面给用户,询问是否授权
  3. 用授权服务器,通过输入账号密码确认授权
  4. 授权服务器向客户端返回code参数
  5. 客户端 根据code向授权服务器获取token 和 refreshToken
  6. 客户端 根据token向资源服务器获取用户资源

简化模式(Implicit Grant)

适用场景:单页应用、app

  1. 客户端向授权服务器请求授权(携带clientId、返回地址等)
  2. 授权服务器跳转页面给用户,询问是否授权
  3. 用户向授权服务器 输入账号密码确认授权
  4. 授权服务器——〉附带token给客户端

密码模式(Resource Owner Credentials Grant)

适用于己方app、单页应用直接和授权服务器交互,通过账号密码获取授权

  1. 客户端带上用户账号密码授权服务器请求授权
  2. 授权服务器返回token值给客户端

客户端模式(Client Credentials Grant)

适用于 服务器之间通信

  1. 客户端把经过商议好的权限认证发送授权服务器
  2. 授权服务器发放token给客户端

四种模式的选择

image.png

Spring Security

其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。

image.png

核心功能

  • 认证
  • 授权
  • 攻击防护

Spring Cloud Security 功能

Spring Cloud Security提供了一组原语,用于构建安全的应用程序和服务,而且操作简便。

  • 从网关代理中的前端到后端服务中继SSO令牌
  • 资源服务器之间的中继令牌
  • 使Feign客户端表现得像OAuth2RestTemplate(获取令牌等)的拦截器
  • 在Zuul代理中配置下游身份验证

今日小结

今天主要说了security涉及的相关知识点的功能以及一些简单的应用,原理方面还有待深入,加油!