这是我参与更文挑战的第28天,活动详情查看: 更文挑战
本来以为Spring Cloud相关组件已经了解的接近尾声了,今天差点忽略了一个很重要的部分Spring Cloud Security
前言
任何一个管理系统,都存在一个最重要的页面————登陆页面,就看看戏需要票据进场一样,我们想要获得管理系统的权限,也需要对应的票据
OAuth2.0的认证流程图
- (A)用户打开客户端以后,客户端请求用户给予授权;
- (B)用户同意授权给客户端;
- (C)客户端使用上一步获得的授权,向认证服务器申请令牌;
- (D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌;
- (E)客户端使用令牌,向资源服务器申请获取资源;
- (F)资源服务器确认令牌无误,同意向客户端开放资源。
授权方式
授权码模式(authorization-code) 最安全的授权方式,适用于开放平台,客户端为不受信的第三方应用,最终客户端获取了token,用户不知情
- 客户端向授权服务器请求授权(携带clientId、返回地址等)
- 授权服务器跳转页面给用户,询问是否授权
- 用授权服务器,通过输入账号密码确认授权
- 授权服务器向客户端返回code参数
- 客户端 根据code向授权服务器获取token 和 refreshToken
- 客户端 根据token向资源服务器获取用户资源
简化模式(Implicit Grant)
适用场景:单页应用、app
- 客户端向授权服务器请求授权(携带clientId、返回地址等)
- 授权服务器跳转页面给用户,询问是否授权
- 用户向授权服务器 输入账号密码确认授权
- 授权服务器——〉附带token给客户端
密码模式(Resource Owner Credentials Grant)
适用于己方app、单页应用直接和授权服务器交互,通过账号密码获取授权
- 客户端带上用户账号和密码授权服务器请求授权
- 授权服务器返回token值给客户端
客户端模式(Client Credentials Grant)
适用于 服务器之间通信
- 客户端把经过商议好的权限认证发送授权服务器
- 授权服务器发放token给客户端
四种模式的选择
Spring Security
其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。
核心功能
- 认证
- 授权
- 攻击防护
Spring Cloud Security 功能
Spring Cloud Security提供了一组原语,用于构建安全的应用程序和服务,而且操作简便。
- 从网关代理中的前端到后端服务中继SSO令牌
- 资源服务器之间的中继令牌
- 使Feign客户端表现得像OAuth2RestTemplate(获取令牌等)的拦截器
- 在Zuul代理中配置下游身份验证
今日小结
今天主要说了security涉及的相关知识点的功能以及一些简单的应用,原理方面还有待深入,加油!