一 SpringSecurity 简单介绍
Spring Security 是强大的且容易定制的,基于 Spring 开发的实现认证登录与资源授权的应用安全框架
核心功能:
-
Authentication:身份认证,用户登陆的验证
-
Authorization:访问授权,授权系统资源的访问权限。安全防护,防止跨站请求,session 攻击等,如用户菜单权限等
主要配置类
a configure(HttpSecurity httpSecurity)
用于配置需要拦截的 url 路径、jwt 过滤器及出异常后的处理器
b configure(AuthenticationManagerBuilder auth)
用于配置 UserDetailsService 及 PasswordEncoder
c RestfulAccessDeniedHandler
当用户没有访问权限时的处理器,用于返回 JSON 格式的处理结果
d RestAuthenticationEntryPoint
当未登录或 token 失效时,返回 JSON 格式的结果
e UserDetailsService
SpringSecurity 定义的核心接口,用于根据用户名获取用户信息,需要自行实现
f UserDetails
SpringSecurity 定义用于封装用户信息的类(主要是用户信息和权限),需要自行实现
g PasswordEncoder
SpringSecurity 定义的用于对密码进行编码及比对的接口,目前使用的是 BCryptPasswordEncoder
h JwtAuthenticationTokenFilter
在用户名和密码校验前添加的过滤器,如果有 jwt 的 token,会自行根据 token 信息进行登录
二 oauth2介绍
OAuth是一个开放标准,也就是一个授权框架,使应用程序能够访问其它公司提供的资源,允许用户在第三方应用访问存储在其他服务器上的私密资源,而在整个过程不需要提供用户名和密码给到第三方应用,可以通过提供一个令牌(token)实现该功能,采用令牌的方式可以让用户灵活的对第三方应用授权或收回权限。OAuth2.0是OAuth协议的延续版本,但不兼容OAuth 1.0,即完全废止了OAuth1.0。
oauth2的角色:
1.资源所有者(Resource Owner):即代表用户本身
2.资源服务器(Resource Server):存储受保护的账号信息
3.授权服务器(Authorization Server):在成功验证用户身份,并获得授权后,给客户端派发访问资源令牌
4.客户端(Client):即代表你访问的第三方应用
认证流程:
oauth2的四种授权模式:
1 授权码模式
授权码模式(authorization code)是功能最完整、流程最严密的授权模式。同时也是安全性最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。可以避免令牌泄漏。
流程步骤如下:
1:用户访问页面
2:访问的页面将请求重定向到认证服务器
3:认证服务器向用户展示授权页面,等待用户授权
4:用户授权,认证服务器生成一个code和带上client_id发送给应用服务器,然后,应用服务器拿到code,并用client_id去后台查询对应的client_secret
5:将code、client_id、client_secret传给认证服务器换取access_token和refresh_token
6:将access_token和refresh_token传给应用服务器
7:验证token,访问真正的资源页面
2 密码模式
密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。这通常用在用户对客户端高度信任的情况下。一般不支持refresh token。
步骤如下:
-
用户向客户端提供用户名和密码。

3966

被折叠的 条评论
为什么被折叠?



