权限概述
钉钉开放平台开放的权限分为两类:委托权限(Delegated Permission)和应用权限(Application Permission)。
访问场景
作为一个应用开发者,你必须明确你的应用将如何访问资源。应用可以采用委托访问的方式,代表已登录的用户,访问他们的资源;或者采用仅应用访问的方式,用应用的身份访问资源。
委托访问 | 应用访问 |
---|---|
委托访问(代表用户访问)
- 在这种场景下,用户需要登录应用,并同意应用代表自己访问自己的资源,或者说同意把访问自己的资源这件事委托给应用去做。这一过程简称委托授权。
- 什么是用户的资源?
- 例如手机号、昵称、头像、邮箱、日程、待办等都是属于用户个人的资源。
- 用户对自己的资源有所有权、处置权和知情权。例如只有小明阅读权限条款后把手机号授予给某小程序,该小程序才可以访问小明的手机号。不经小明同意获取其手机号的行为不合规。小明也不能代表小红把小红的手机号委托给小程序访问。
- 什么是访问?应用增删改查用户资源的行为,统称为访问。
- 什么是访问范围?应用只能访问委托人能访问的资源。例如小明想用某小程序打印文件,该小程序只能打开并打印小明能访问的文件,不能打开小明不能访问的文件(比如小红的文件)。
- 应用实现委托访问需要委托权限。更多委托访问的介绍,详见委托访问。
应用访问(无指定用户的访问)
- 在这种场景下,应用直接用应用的身份访问资源,没有登录用户参与。
- 应用访问常常用于自动化和备份等场景,包括那些在后台运行的服务或进程应用(Daemon)。当应用的功能不希望有特定的用户登录,或者当所访问的数据不能局限于单个用户时,应用访问是合适的。
- 应用实现应用访问需要应用权限。更多应用访问的介绍,详见应用访问。
权限类型
- 委托权限用于委托访问场景,是可以让应用代表用户访问的权限。应用绝对不可能访问到登录用户自身不能访问的资源。比如,有一个应用被授予了委托权限点
Files.Read
,代表用户去访问文件,该应用只能读取小明可以读取的文件。 - 应用权限用于应用访问场景,可以让应用访问任何权限关联的数据。比如,一个应用被授予了应用权限点
File.Read.All
,那么应用可以访问所在组织下的所有文件。 正因应用权限的影响范围很大,应用权限的使用门槛更高:只有组织管理员才可以同意授予应用权限,而且开放平台对于应用申请应用权限的管控会更加严格。
委托权限 vs 应用权限
权限点类型 | 委托权限 | 应用权限 |
---|---|---|
谁可以同意授权 | - 用户本人可以同意授权本人的资源 -组织管理员可以代替组织内成员完成同意授权的操作 | 只有管理员可以授权 |
访问上下文 | 必须由登录用户授权给应用,即用户委托应用访问本人自己的数据。 | 不需要登录用户授权,而是必须通过管理员授权,把权限授予应用本身。 |
适用的应用 | 小程序、H5、Web 、Native 、Single-page application | 后台应用:一般用于自动化场景,如定时任务、备份等场景。 |
使用的访问凭证 | 用户委托的访问凭证 | 应用的访问凭证 |
同意授权
应用获取权限的一种方式是让资源所有人同意授权。同意授权,是用户或者管理员允许应用访问被保护资源的过程。比如,当一个用户第一次登录某应用时,应用可以请求用户授予“获取用户基础信息”和“读取用户邮箱内容”的权限。用户会在一个授权页面上看到授权项列表。以下是用户可能会看到授权页面的场景:
- 应用编码为在用户登录期间提示授权。
- 应用编码为在运行期间,动态地向用户获取授权。
- 当用户撤回了之前授予给应用的权限。
授权页面中的关键信息是待授权的权限项列表和应用的发行商信息。更多关于授权页面的用户体验(包括管理员和用户),详见同意授权体验。
用户同意授权
用户授权常常发生在用户登录应用的时刻。在登录时,用户提供登录的凭证(如输入账号密码、扫码登录等)。钉钉开放平台会用用户凭证去校验该用户是否已经授过权。如果之前没有任何授权记录,那么授权页面会被弹出展示给用户,用户被要求授予权限给当前应用。
管理员同意授权
一些应用可能需要管理员来同意授予权限,这取决于应用所需的具体权限点类型。比如,应用权限和一些高敏感的委托权限,只有管理员可以授权。管理员可以作为普通用户代表他们自己授予权限,也可以代表整个组织授权。