从0开端构建一个Oauth2Server服务 16

授权规模 Scope

规模是一种约束运用程序拜访用户数据的办法。与其颁发对用户帐户的彻底拜访权限,不如让运用程序能够代表用户恳求更有限规模内答应它们履行的操作,这一般很有用。

有些运用仅运用 OAuth 来辨认用户,因而它们只需求拜访用户 ID 和基本配置文件信息。其他运用程序或许需求了解更灵敏的信息,例如用户的生日,或许它们或许需求能够代表用户发布内容或修改个人资料数据。假如用户确切知道运用程序能够用他们的帐户做什么和不能做什么,他们将更乐意授权运用程序。规模是一种控制拜访并协助用户辨认他们颁发运用程序的权限的办法。

请务必记住,效果域与 API 的内部权限系统不同。规模是一种约束运用程序在用户能够做的工作的上下文中能够做的工作的办法。例如,假如您在“customer”组中有一个用户,而且运用程序正在恳求“admin”规模,则 OAuth 服务器不会创立具有“admin”规模的拜访令牌,由于不答应该用户自己运用该规模。

规模应被视为运用程序向运用该运用程序的用户恳求答应。

界说规模

效果域是一种让运用程序恳求对用户数据进行有限拜访的机制。

为您的服务界说规模时的挑战是不要因界说太多规模而忘乎所以。用户需求能够理解他们颁发运用程序的拜访级别,这将以某种列表的形式出现给用户。当出现给用户时,他们需求真正了解正在发生的工作,而不是被信息吞没。假如您为用户过于复杂化,他们只会单击“确认”直到运用程序运转,并忽略任何警告。

读与写

在界说服务规模时,读取与写入拜访是一个很好的起点。一般,对用户的私家配置文件信息的读取拜访权限是经过与想要更新配置文件信息的运用程序分开的拜访控制来处理的。

需求能够代表用户创立内容的运用程序(例如,将推文发布到用户时间轴的第三方 Twitter 运用程序)需求与仅需求读取用户公共数据的运用程序不同级别的拜访权限。

约束对灵敏信息的拜访

一般,一项服务将具有用户帐户的各个方面,这些方面具有不同的安全级别。例如,GitHub有一个单独的规模,答应运用程序拜访私有存储库。默许情况下,运用程序无权拜访私家存储库,除非他们要求该规模,因而用户能够放心地知道只有他们挑选的运用程序才能拜访归于他们组织的私家存储库。

GitHub 供给了一个单独的规模,答应运用程序删除 repos,因而用户能够放心,随机的运用程序无法绕过删除他们的 repos。

Dropbox为运用程序供给了一种约束本身只能编辑单个文件夹中文件的办法。这供给了一种方法,用户能够试用运用 Dropbox 作为存储或同步机制的运用程序,而不必担心该运用程序或许有才能读取他们的一切文件。

按功用有挑选地启用拜访

规模的一个重要用处是依据所需的功用有挑选地启用对用户帐户的拜访。例如,Google 为其各种服务(如 Google Drive、Gmail、YouTube 等)供给了一组规模。这意味着需求拜访 YouTube API 的运用程序不一定也能够拜访用户的 Gmail 帐户。

Google 的 API 是有效运用规模的一个很好的比如。有关 Google OAuth API 支撑规模的完好列表,请拜访他们的 OAuth 2.0 游乐场,网址为developers.google.com/oauthplaygr…

约束对计费资源的拜访

假如您的服务供给的 API 或许会导致用户发生费用,则规模是防止运用程序滥用此功用的好办法。

让我们运用一个服务示例,该服务供给运用答应内容的高级功用,在本例中,该服务供给一个 API 来聚合给定区域的人口统计数据。用户在运用服务时收取费用,费用依据查询区域的巨细而定。登录到运用 API 的彻底不同部分的运用程序的用户期望确保此运用程序无法运用人口统计 API,由于这会导致该用户发生费用。在这种情况下,服务应该界说一个特别的规模,比如“人口统计”。人口统计 API 应仅呼应来自包括此规模的令牌的 API 恳求。

在此示例中,人口统计 API 能够运用令牌自省端点来查找对此令牌有效的规模列表。假如呼应在规模列表中不包括“人口统计”,端点将回绝运用 HTTP 403 呼应的恳求。

用户界面

用户在授权运用程序时看到的界面需求清楚地显现运用程序正在恳求的规模列表。用户或许不知道服务供给的一切规模的或许性,因而最好使此文本尽或许明晰明晰,防止运用行话和缩写。

假如恳求颁发运用程序对用户帐户的彻底拜访权限,或拜访其帐户的大部分内容(例如能够履行除更改暗码之外的一切操作),则服务应十分清楚地阐明这一点。

例如,Dropbox 授权 UI 上的第一句话是“Example OAuth App would like access to the files and folders in your Dropbox”和“Learn More”链接,链接到一个协助页面,精确描述了运用程序将具有的拜访权限。

从0开始构建一个Oauth2Server服务  授权范围 Scope

Flickr 授权界面显现了用户在我登录时颁发运用程序的三件事,并清楚地显现了运用程序不会具有的权限。显现这一点的好处是用户能够放心,他们授权的运用程序将无法履行潜在的破坏性操作。

从0开始构建一个Oauth2Server服务  授权范围 Scope

GitHub 在供给有关用户颁发的规模的详细信息方面做得很好。每个恳求的规模在页面上都有一个部分,其间包括称号、图标、突出显现这是只读仍是读写的简略描述,以及用于查看更详细阐明的下拉列表。

从0开始构建一个Oauth2Server服务  授权范围 Scope

Google 为其一切服务(包括 Gmail API、Google Drive、Youtube 等)供给单一授权端点。他们的授权界面在列表中显现每个规模,并包括一个“信息”图标,您能够单击该图标以获取有关特定规模的更多信息规模。

从0开始构建一个Oauth2Server服务  授权范围 Scope

单击信息图标会显现一个叠加层,详细描述此规模答应的内容。

从0开始构建一个Oauth2Server服务  授权范围 Scope

您能够看到,您能够经过多种方法向用户供给有关 OAuth 授权规模的信息,而且各种服务采用了截然不同的办法。在决定规模的详细程度时,一定要考虑运用程序的隐私和安全要求。

Checkboxes

虽然看似未被充分利用的功用,但 OAuth 2.0 标准明确答应授权服务器颁发规模小于运用程序恳求的拜访令牌。这为一些有趣的或许性留下了空间。

在 OAuth 2.0 标准开端拟定之前,OAuth 1 已部署在 Twitter,Twitter 运用生态系统正在快速发展。在创立 Twitter 运用程序时,您能够挑选您的运用程序是需求读+写拜访权限仍是只需求读取用户帐户的拜访权限。这是一种导致 OAuth 2.0 规模概念发展的机制。但是,这种完成适当有限,由于运用程序要么恳求写入拜访权限,要么不恳求写入拜访权限,假如用户不想颁发运用程序写入拜访权限,则用户或许会简略地回绝该恳求。

很快就开发了一种常见的 Twitter 运用程序反形式,该形式仅运用写入权限来发布推文来宣扬该运用程序。其间一个更臭名昭著的事件发生在 2010 年,当时声称“依据你的推特活动计算你的推特功率”的运用程序“Twifficiency”逐渐失控。您能够运用您的 Twitter 帐户登录该运用程序,它会抓取您过去的推文并进行分析。但是,它也自动发推文说“我的 Twifficiency 分数是 __%。你的是啥呢?” 带有网站链接。许多人甚至不知道该运用程序正在履行此操作,或许他们已颁发该运用程序发布到他们帐户的权限。这导致该运用程序走红,由于运用该运用程序的任何人的关注者都会在他们的时间轴中看到它。