SpringSecurity+oauth2复习篇
SpringSecurity是什么?
SpringSecurity是Spring项目中用于提供安全认证服务的框架。
Oauth2又是什么?
Oauth2是授权协议,为用户资源的授权定义了一个安全、开放、简单的标准。
Oauth2有几种授权模式及流程?
Oauth2包含四种授权方式:密码模式、授权码模式、简化模式、客户端模式。
密码模式:用户向客户端提供自己的用户名和密码,客户端根据用户名和密码、client_id和client_secret以及模式类型通过请求指定路径到认证服务器认证获取令牌,在到资源服务器上使用令牌请求资源。
授权码模式:客户端请求指定路径并携带模式类型、回调URL、client_id和client_secret,然后跳转到登录页面对用户进行验证,成功后跳转到回调URL并携带授权码,在通过授权码向认证服务器获取令牌,授权码仅能使用一次。
简化模式:该模式同比授权码模式少了授权码颁发环节,回调URL直接携带令牌。
客户端模式:客户端直接通过client_id和client_secret到认证服务器认证,直接返回令牌。
Jwt组成分为几部分有什么优缺点?
JWT一种非常轻巧的规范(安全认证标准),运行使用jwt在用户和服务器之间传递安全可靠信息。
JWT实质是字符串,由头部、负载、签名组成。
第一部分 头部(header):
Json对象中包含令牌类型(即jwt),以及使用签名算法类型
将该json串经过Base64编码后,就是header部分。
第二部分 负载(payload):
内容也是一个Json对象,可以存放有效信息例如用户信息,该部分可以解码还原
将该json对象进行Base64编码后为payload部分
第三部分 签名(Signature)
这个部分使用Base64url对前两部分内容再次编码,编码后两部分用.连接组成字符串,最后在通过header中声明的签名算法对编码后字符串以及签名所使用的密钥进行签名作为第三部分,可以防止令牌被篡改。
优点:
- Jwt基于json,解析方便
- 内容可以自定义
- 可防止篡改,安全性高
- 不用向传统校验令牌一样,每次访问资源服务器都要去认证服务器校验令牌合法性。通过jwt令牌可直接访问资源服务器。
缺点:
Jwt令牌较长,占用存储空间大。