OAuth2协议,标准(接口):
是一种授权协议,他的主要作用是为了提供认证和授权的标准。
与以往的授权模式不同的是OAuth2授权不会使第三方触及到用户的账号信息,即,第三方无需使用用户名和密码就可以申请获得该用户资源的授权,因此OAuth2是安全的。
Spring Security框架实现OAuth2协议
spring security 是一个安全框架,能够为spring企业应用系统提供声明式的安全访问控制。spring security基于Servlet过滤器,Ioc和Aop,为web请求和方法调用提供身份确认和授权处理,避免了代码耦合,减少大量重复代码操作。
概念:
第三方应用程序:拿我们的制作软件来说,我们需要访问别的软件的资源,对于我们来说,别的软件就是第三方。而对于别的软件来说,我们又是第三方。
HTTP服务提供商:我们的产品以及别的软件,都可以称之为HTTP服务提供商
资源所有者:又称之为用户
用户代理:比如浏览器,代替用户去访问这些资源
认证服务器:服务器提供商专门用来提供认证的服务器,简单来说就是登录功能(验证用户的账号密码是否正确,以及分配权限)
资源服务器:服务提供商存放用户生成的资源的服务器。他与认证服务器可以是同一台服务器,也可以是不同的服务器。
AppId | 应用程序软件编号 |
---|---|
AppSecret | 密钥,相当于密码 |
access_token | 访问令牌,这个令牌每次都会产生一个新的,只在本次请求中生效 |
refresh_token | 刷新令牌,去认证服务器,换取一个新的访问令牌 |
client_id | 自己的服务向第三方服务注册时给第三方服务的,用来表示自己服务的身份的id |
client_secret | 自己服务对应的在第三方服务上的密钥 |
举例:使用酷狗软件时,登录qq,显示qq的头像,昵称和性别。实现步骤:
1,酷狗重定向到qq的授权码页面。
2,输入qq的账号或者密码。
3,如果正确,返回给酷狗code验证码。
4,酷狗拿着code去qq的认证服务器,如果code正确,返回给酷狗令牌。
5,酷狗拿着令牌到qq的资源服务器,获取规定的固定资源。
如上步骤中酷狗是不知道qq的账号和密码的,这也就是安全性的体现。