1.什么是OAuth?
1.1 OAuth产生背景
很多网站、APP 弱化甚至没有搭建自己的账号体系,而是直接使用社会化登录的方式,这样不仅免去了用户注册账号的麻烦、还可以获取用户的好友关系来增强自身的社交功能。
1.2 定义
OAuth2.0(开放授权)是一个关于授权的开放的网络协议。它允许用户让第三方应用访问该用户在某一网站上存储的的资源(如:照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
1.3 基本原理
OAuth在第三方应用与服务提供商之间设置了一个授权层。第三方应用不能直接登录服务提供商,只能登录授权层,以此将用户与客户端区分开来。第三方应用登录授权层所用的令牌,与用户的密码不同。用户可以在登录授权的时候,指定授权层令牌的权限范围和有效期。
第三方应用登录授权层以后,服务提供商根据令牌的权限范围和有效期,向第三方应用开放用户资源。
1.4 作用
让客户端安全可控地获取用户的授权,与服务提供商之间进行交互。可以免去用户同步的麻烦,同时也增加了用户信息的安全。
1.5 常用应用场景
用OAuth来实现第三方应用对我们API的访问控制;
登录第三方应用(APP或网页)时,经常会采用其他用户登录方式,比如QQ,微博,微信的授权登录(QQ用户登录)。
1.6 原理概要
新浪微博作为服务提供商,拥有用户的头像、昵称、邮箱、好友以及所有的微博内容,简书希望获取用户存储在微博的头像和昵称,假设它们是三个人:
简书问新浪微博:我想要获取用户 A 的头像和昵称,请你提供
微博说:我需要经过用户A 本人的许可,然后去问用户 A 是否要授权简书访问自己的头像和昵称
用户 A 对微博说:我给简书一个临时的钥匙,如果他给你出示了这把钥匙,你就把我的资料给他
简书使用户给它的钥匙获取用户头像和昵称信息。
2.SpringSecurity
2.1 介绍
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,并且能够对OAuth提供支持。
2.2 核心功能
2.2.1 用户认证 (你是谁)
用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。
用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。
2.2.2 用户授权 (你能干什么)
用户授权指的是验证某个用户是否有权限执行某个操作。
在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。
2.2.3 攻击防护 (防止伪造身份)
总而言之,Spring Security是Spring 一个非常流行和成功的 Java 应用开发框架,从现在的行情来看Spring Security不仅可以减少企业系统安全控制编写大量重复代码的工作,还是用来保护web应用的首选。