资源授权

本篇主要说明在“授权系统”设计中如何才能对资源的访问权限进行精确的控制与授权。其实就是针对OAuth 2.0一文,两种授权模式(授权码模式【authorization code】和 简化模式【implicit】),步骤A中scope参数的使用进行举例说明。

scope 的含意

通过OAuth 2.0一文可知,scope表示权限范围,也就是授权的内容。第三方应用(Third-party application)根据用户(Resource Owner)所要使用的业务来生成scope,认证服务器(Authorization server)会根据第三方应用提供的scope向用户说明第三方应用都请求了哪些权限。用户详细阅读并真实理解了认证服务器(Authorization server)所描述的授权内容之后,根据自己的实际意愿可以同意或拒绝第三方应用的授权请求。

默认授权

授权系统需要有一个默认的授权,用意如下:

  1. 当第三方应用没有说明权限范围scope时,给予其默认授权;
  2. 保证授权系统正常工作的最小权限范围。

一般情况下授权系统设置的默认授权范围为“用户的基本信息”。如:名称,性别,头像等。

精确授权

精确授权是为了让第三方应用能够访问用户在资源服务器上的资源。

拿“云打印”服务来举例,用户在A公司提供的云盘服务中存储了大量文档、图片和视频,现在用户想要使用B公司的“云打印”服务打印其中的一个文档。这时用户只需要把被打印文档的读取权限授权给B公司的“云打印”服务就行了。这时scope应该能说明授权的内容有且仅有这个要被打印文档的读取权限。

把scope设计成一个对象,可以很好的表示精确授权。对象属性如下:

  1. resource_type:被授权资源的类型,如文档(document)、图片(image)、视频(video);
  2. auth_mode:授权模式,如分类授权(type)、标签授权(tag)、分组授权(group)、资源授权(resource)等;
  3. mode_id :被授权模式的唯一标识,可省略,不传此参数,则表示授权resource_type和auth_mode共同指定的所有资源;

范围授权

在实际的应用中,很多时候会有几个“资源”(如:用户名,头像等)需要频繁的授权给第三方使用;如果使用精确授权的方式进行,会显得非常的麻烦,并且生成的scope也会非常的复杂,让人难以理解。这时就可以使用范围授权,用一个字符串表示某几个资源的访问权限。如:scope=user_base_info,表示把用户的昵称和头像的读取权限授权给第三方。

你可能感兴趣的:(资源授权)