如何以用户或开发人员身份在 DigitalOcean 使用 OAuth 身份验证

介绍

DigitalOcean API 版本 2 包含许多改动,为所有人提供更好的体验. 最重要的新功能之一是用户和应用程序的 OAuth 身份验证。

OAuth系统允许您使用API与您的帐户进行身份验证,这种访问可以以个人访问代币的形式提供,以便直接使用情况,但它还允许应用程序灵活地访问您的帐户。

在本指南中,我们将讨论如何授予或撤销应用程序访问您的帐户的能力,我们还将讨论互动的另一面,通过如何注册使用DigitalOcean利用API的应用程序。

授权应用程序使用您的帐户作为用户

如果您只是想让应用程序访问您的帐户,您将能够通过应用程序授权并通过DigitalOcean控制面板撤销访问权限。

当您使用使用使用 DigitalOcean 的 OAuth 身份验证的应用程序时,您将被重定向到一个页面,以选择是否允许该应用程序访问您的 DigitalOcean 帐户。

页面将看起来像这样:

DigitalOcean app auth request

请求将定义应用程序是否要求只读访问,或阅读和写入访问. 如果您决定授予所请求的访问,您将被返回应用程序,该应用程序现在将验证以在您的帐户上运作。

如果您想撤销访问权限,只需进入您的 DigitalOcean 帐户并单击控制面板左侧导航菜单中的[应用程序和 API](https://cloud.digitalocean.com/settings/applications)部分:

DigitalOcean left-hand nav

授权应用程序部分中,您应该看到您授权访问的每个应用程序的条目。

DigitalOcean authorized app

点击撤销按钮以删除相关应用程序对您的帐户的访问权限:

DigitalOcean oauth revoke

应用程序将不再可以访问您的帐户。

使用 OAuth 身份验证用户作为开发人员

要使用 OAuth 作为开发者,您需要通过两个单独的流程。 首先,您必须注册您的应用程序,以获得要求访问所需的凭证。 之后,您必须开发您的应用程序,以正确地提出请求并处理用户浏览器和 DigitalOcean 服务器的响应。

使用 DigitalOcean 注册开发人员应用程序

如果您是一个需要通过 OAuth 验证用户的开发人员,您需要先通过 DigitalOcean 控制面板注册您的应用程序。

在控制面板的[应用程序和API](https://cloud.digitalocean.com/settings/applications)部分中,在页面的中间,你会看到一个名为开发人员应用程序的部分:

DigitalOcean developer applications section

若要注册新申请,请点击右侧的注册新申请按钮:

DigitalOcean register app

您将被带到注册页面。

DigitalOcean app registration info

在这里,您需要提供一些基本信息,如应用程序的名称和主页,并提供简短的描述,请记住,这些信息将出现在用户的授权请求页面上。

您还需要为应用程序提供回复 URL。 这是您将应用程序配置为处理授权响应的位置。 请参阅下一节或 OAuth Authentication 指南,以了解有关处理 OAuth 请求所需的更多信息。

当您提交您的详细信息时,您将被带到一个页面上,其中包含构建授权应用程序或脚本所需的信息,这些信息将生活在您提供的回调 URL 上,其中包括您的客户端 ID、客户端秘密和预先格式化的授权请求链接,以重定向用户到:

DigitalOcean app details

在您的应用程序中实施 DigitalOcean OAuth

要实施 OAuth 身份验证,您的应用程序必须先将用户重定向到以下端点:

1https://cloud.digitalocean.com/v1/oauth/authorize

此重定向应该包含您的客户端 ID、回调 URL 作为redirect_uri的值,并设置response_type=code。您可以选择设置您正在请求的代码范围(例如scope=read%20write以获得完整访问)。

1https://cloud.digitalocean.com/v1/oauth/authorize?client_id=client_id&redirect_uri=callback_URL&response_type=code&scope=read%20write

当用户在授予访问后被重定向到提供的回调 URL,您需要捕获的代码将作为查询参数。

接下来,发送邮件请求到:

1https://cloud.digitalocean.com/v1/oauth/token

包括您的客户端 ID、客户端秘密、回调 URL 作为redirect_uri值、您从用户重定向中获得的代码,并设置grant_type=authorization_code

1https://cloud.digitalocean.com/v1/oauth/token?client_id=client_id&client_secret=client_secret&code=code_from_user_redirect&grant_type=authorization_code&redirect_uri=callback_URL

整个答案将看起来像这样的东西:

1{"provider"=>:digitalocean, "info"=>{"name"=>"some_name", "email"=>"[email protected]"}, "credentials"=>{"token"=>"$AUTH_TOKEN", "expires_at"=>1405443515, "expires"=>true}, "extra"=>{}}

然后,您可以在随后的请求中使用AUTH_TOKEN来对用户帐户采取行动。

大多数开发人员将利用OAuth库为他们所选择的语言来简化这个过程,但总是有一个关于幕后发生的事情的一般想法是好的。

接受的目标

Scopes 允许您指定您需要的访问类型。 Scopes 限制 OAuth 代币的访问范围. 以下是 DigitalOcean OAuth 终端接受的范围列表:

开发者资源

无人机 - Digital Gem

由于DigitalOcean内部使用Ruby,我们正在为社区提供一个开放源代码的OAuth策略。 omniauth-digitalocean宝石是在Github上发布给RubyGems。

结论

OAuth 是授予应用程序访问您的帐户或向用户请求帐户访问的一种已知方式,DigitalOcean应用程序和API页面致力于为双方提供尽可能简单的流程。

有关 DigitalOcean OAuth API 的技术概述,请点击此处: DigitalOcean OAuth Overview

要了解有关 OAuth 的更多信息,请参阅我们的社区文章: An Introduction to OAuth 2

Published At
Categories with 技术
comments powered by Disqus