OAuth协议简明摘要

来源:互联网 发布:广州知用中学礼仪服 编辑:程序博客网 时间:2024/05/18 09:20

OAuth2.0 授权协议使第三方应用针对一个http服务可以获得有限的访问权限,或者是通过协调资源主人和http服务之间的交互来代表资源的主人,或者是通过允许第三方应用程序代表它自己获得访问权限。


OAuth协议 不使用资源主人的密码来访问受保护的资源,客户端获得一个access token,一个字符串表示具体的scope, lifetime 以及其他访问属性。举个例子,一个最终用户(资源的主人)可以允许一个打印服务(客户端)去访问放在照片共享服务(resource server)上的他的受保护的照片,而不需要和打印服务共享他的用户名和密码。他可以通过照片共享服务信任的服务器直接登录验证,这个服务器将会给打印服务一个代理的证明(access token)


角色分为四种:

resource owner: 有能力授权对于被保护资源的访问权限。

resource server: 服务器上存有受保护的资源,可以接受和返回对被保护资源使用access token的请求。

client: 应用程序,代表资源主人提出访问资源的请求。

authorization server: 在成功验证和获得授权之后,服务器发出access token给客户端。


授权:

协议定义了四种授权类型:

authorization code: authorization code是客户端和资源主人之间的中介,客户端把资源主人指向一个authorization server,然后资源主人以及authorization code又被指回客户端。

implicit: 这个类型是被简化的authorization流程,为浏览器中使用脚本语言的客户端而优化。在这个流程中,客户端将直接获得一个access token而不是authorization code。这个流程在某些情况下,客户端的身份可以通过用来传递access token的重定向URI来验证。 这提高了反应速度和效率,因为它减少了获得access token的交互次数。

resource owner password credentials:  资源主人的用户名密码直接用来获得access token。这种方式只能在资源主人和客户端之间高度信任的情况下才可以使用,并且没有其他方式可用的情况下。 这种方式可以消除客户端保存资源主人的用户名密码的需求,因为可以通过使用access token和refresh token。

client credentials: 这种方式可以用来在受保护资源是由客户端控制的情况,或是受保护资源是由authorization server配置过的。这个流程一般是用在客户端代表它自己(客户端也是资源的主人)。


0 0