OAuth 2.0
OAuth2.0是什么?
- OAuth是一个关于授权的开放网络标准,在全世界等到广泛应用。
OAuth思路
OAuth在”客户端”与”f服务提供商”之间,设置了一层授权层。客户端无法直接登录”服务提供商”,只能登录授权曾,以此区分客户端核用户。”客户端”登录授权层所用的令牌,与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围核有效期。客户端登录授权层以后,服务层根据令牌的权限范围向用户开放用户存储的资料。
运行流程
- 用户打开客户端,客户端要求用户给予授权。
- 用户统一给予客户端授权。
- 客户端使用上一步获得的授权,向服务器申请令牌。
- 认证服务器对客户端进行认证以后,确认无误,同意发放令牌
- 客户端使用令牌,向资源服务器申请获取资源
- 资源服务器确认令牌无误,同意向客户端开放资源。
客户端的授权模式
客户端必须得到用户授权,才能获得令牌。OAuth2.0定义了四种授权方式。
- 授权码模式
授权码模式是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与服务提供商的认证服务器进行互动
- 用户访问客户端,客户端将用户导向认证服务器
- 用户选择是否给予客户端授权。
- 用户给予授权,认证服务器将用户导向客户端事先指定的”重定向URL “,同时附上一个授权码
- 客户端收到授权码,附上早先重定向URL,向认证服务器社申请令牌。
- 认证服务器核对了授权码呵重定向URL,确认无误,向客户端发送访问令牌和更新令牌(refresh token)
- 简化模式
简化模式 不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过授权码的过程。
- 客户端将用户导向认证服务器
- 用户决定是否给予客户端授权
- 假设用户给予授权,认证服务器将用户导向客户端指定的重定向URL,并在URL的hash部分包含了访问令牌。
- 浏览器向资源服务器发出请求,其中不包括上一步收到的Hash值
- 资源服务器返回一个网页,其中包含的代码可以获取Hash值中得令牌。
- 浏览器执行上一步获得得脚本,提取出令牌
- 浏览器将令牌发给客户端。
- 密码模式
密码模式中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向服务商索要授权。
- 用户向客户端提供用户名和密码
- 客户端将用户名和密码发给认证服务器,向后者请求令牌
- 认证服务器确认无误后,向客户端提供访问令牌。
- 客户端模式。
客户端模式指客户端以自己的名义,向服务商进行认证.
- 客户端向认证服务器进行身份认证,并要求一个访问令牌。
- 认证服务器确认无误后,向客户端提供访问令牌。