如何使用OAuth认证与DigitalOcean作为用户或开发者

其中约DigitalOcean的API第2版中最令人兴奋的功能是OAuth认证的包容性。这允许用户授权访问应用程序来使用他们的帐户。作为一个开发者,你可以通过一个简单的Web用户界面,这将简化获得帐户授权的过程中向您的用户访问。在本指南中,我们将讨论如何使用这个功能同时作为用户和开发者进行互动。

介绍

DigitalOcean API的第2版包括许多改变,提高每个人的体验。 最重要的新功能之一是用户和应用程序的OAuth身份验证。

OAuth系统允许您使用API​​对您的帐户进行身份验证。 这种访问可以以个人访问令牌的形式授予直接使用的情况,但也允许灵活地允许应用程序访问您的帐户。

在本指南中,我们将讨论如何授予或撤销应用程序访问您的帐户的能力。 我们还将讨论如何注册使用DigitalOcean API的应用程序的交互的另一方。 这将允许您使用OAuth请求访问您的用户的帐户。

授权应用程序以用户身份使用您的帐户

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

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

页面将如下所示:

DigitalOcean应用程式验证要求

请求将定义应用程序是请求只读访问还是读写访问。 如果您决定授予所请求的访问权限,您将会返回到应用程序,该应用程序现在将通过您的帐户进行身份验证。

如果你想撤销访问,只需转到您的帐户DigitalOcean并点击了“ 应用程序和API在控制面板的左侧导航菜单中的”部分:

DigitalOcean左手导航

在“授权应用程序”部分下,您应该会看到每个已授予访问权限的应用程序的条目。

数字海洋授权应用程序

点击“撤消”按钮,删除相关应用对您帐户的访问权限:

DigitalOcean oauth撤销

应用程式将无法再存取您的帐户。

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

要使用OAuth作为开发人员,您需要经历两个单独的进程。 首先,您必须注册您的应用程序以获取请求访问所需的凭据。 之后,您必须开发您的应用程序,以正确地提出请求并处理来自用户的浏览器和DigitalOcean服务器的响应。

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

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

在“ 应用程序和API控制面板的”部分,在页面的中间,你会看到标题为“开发应用程序”一节:

数字海洋开发者应用部分

要注册新应用程序,请单击右侧的“注册新应用程序按钮”:

数字海洋注册应用程序

您将被带到注册页面。

DigitalOcean应用注册信息

在这里,您需要提供一些基本信息,如应用程序的名称和主页,并提供简要说明。 请注意,此信息会显示在用户的授权请求页面上。

您还需要为应用程序提供回调URL。 这是您将应用程序配置为处理授权响应的位置。 请参阅下一节,或OAuth认证指南,详细了解什么是必要的来处理的OAuth请求。

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

DigitalOcean应用详细信息

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

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

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

此重定向应该包含您的客户ID,则回调URL作为价值redirect_uri ,并设置response_type=code 您可以选择设置正在请求(例如令牌的范围scope=read%20write完全访问)。 重定向示例如下所示:

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

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

接下来,发送POST请求到:

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

包括你的客户端ID,客户端密钥,回调URL作为redirect_uri值,从用户重定向收到的代码,并设置grant_type=authorization_code 示例请求可能如下所示:

https://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

整个响应看起来像这样:

{"provider"=>:digitalocean, "info"=>{"name"=>"some_name", "email"=>"user@example.com"}, "credentials"=>{"token"=>"$AUTH_TOKEN", "expires_at"=>1405443515, "expires"=>true}, "extra"=>{}}

然后,您可以使用AUTH_TOKEN在后续请求采取对用户账户的行为。

大多数开发人员将利用OAuth库来选择他们的语言,使这个过程更简单,但是对于幕后发生的事情有一个总体的了解总是好的。

接受的作用域

范围允许您指定所需的访问类型。 作用域限制OAuth令牌的访问。 以下是DigitalOcean OAuth端点接受的范围列表:

名称 描述
(无范围) 默认读取范围。
授予对用户帐户的只读访问权限。 这允许可以使用GET和HEAD方法请求的操作。
读写 授予对用户帐户的读/写访问权限,即完全访问权限。 这允许,可以使用DELETE,PUT请求的动作,和POST方法,除由读出范围所允许的动作。

开发人员资源

omn​​iauth-digitaloceanGem

由于DigitalOcean在内部使用Ruby,我们正在提供一个开源的OAuth策略供社区使用。 omn​​iauth-digitaloceanGem在Github并发布到RubyGems的。 它是基于OmniAuth ,对多供应商的身份验证广泛使用的基于机架库,并整合“与DigitalOcean登录”到Rails和机架框架的简单方法。

结论

OAuth是一种非常成熟的方式,可让应用访问您的帐户或请求用户访问帐户。 DigitalOcean的“Apps&API”页面努力使这一过程尽可能简单,双方。

对于DigitalOcean的OAuth API的技术概述,请点击这里: DigitalOcean的OAuth概述

要了解更多有关OAuth的是如何工作的,请查看我们的社区文章: 介绍到OAuth 2