本帖最后由 长沙-小知姐姐 于 2019-1-3 09:33 编辑
OAuth2.0认证和授权原理
一、什么是OAuth协议 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。
OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源。
二、OAuth的原理和授权流程 1. OAuth的认证和授权的过程中涉及的三方包括:
1. 服务商:用户使用服务的提供方,一般用来存消息、储照片、视频、联系人、文件等(比如微信,QQ空间,Twitter、Sina微博等)。
2. 用 户:服务商的用户
3. 第三方:通常是网站,该网站想要访问用户存储在服务商那里的信息。比如某个提供照片打印服务的网站,用户想在那里打印自己存在服务商那里的网络相册。在认证过程之前,第三方需要先向服务商申请第三方服务的唯一标识。
2. OAuth认证和授权的过程如下:
1. 用户访问第三方网站网站,想对用户存放在服务商的某些资源进行操作。
2. 第三方网站向服务商请求一个临时令牌。
3. 服务商验证第三方网站的身份后,授予一个临时令牌。
4. 第三方网站获得临时令牌后,将用户导向至服务商的授权页面请求用户授权,然后这个过程中将临时令牌和第三方网站的返回地址发送给服务商。
5. 用户在服务商的授权页面上输入自己的用户名和密码,授权第三方网站访问所相应的资源。
6. 授权成功后,服务商将用户导向第三方网站的返回地址。
7. 第三方网站根据临时令牌从服务商那里获取访问令牌。
8. 服务商根据令牌和用户的授权情况授予第三方网站访问令牌。
9. 第三方网站使用获取到的访问令牌访问存放在服务商的对应的用户资源
3. 认证和授权过程图解(包括三方)
1. 服务提供方,用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。
2. 用户,存放在服务提供方的受保护的资源的拥有者。
3. 客户端,要访问服务提供方资源的第三方应用,通常是网站。在认证过程之前,客户端要向服务提供者申请客户端标识。
4. 经典案例(网站的第三方登录)
在很多网站上经常允许第三方登录,第三方登录其实就是让第三方网站能够获取服务商的临时令牌,从而从服务商那里获取用户信息,例如微信、QQ等第三方登录,都是去获取微信QQ等服务商令牌,从而获取微信或者QQ的用户信息,实现第三方登录
三、总结
OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。"客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。"客户端"登录授权层以后,"服务提供商"据令牌的权限范围和有效期,向"客户端"开放用户储存的资料。
|