介绍
DigitalOcean API的第2版包括许多改变,提高每个人的体验。 最重要的新功能之一是用户和应用程序的OAuth身份验证。
OAuth系统允许您使用API对您的帐户进行身份验证。 这种访问可以以个人访问令牌的形式授予直接使用的情况,但也允许灵活地允许应用程序访问您的帐户。
在本指南中,我们将讨论如何授予或撤销应用程序访问您的帐户的能力。 我们还将讨论如何注册使用DigitalOcean API的应用程序的交互的另一方。 这将允许您使用OAuth请求访问您的用户的帐户。
授权应用程序以用户身份使用您的帐户
如果您只是想让应用程序访问您的帐户,您将能够通过应用程序授予权限,并通过DigitalOcean控制面板撤销访问权限。
当使用使用DigitalOcean的OAuth身份验证的应用程序时,您将被重定向到一个页面,以选择是否授予应用程序对您的DigitalOcean帐户的访问权限。
页面将如下所示:
请求将定义应用程序是请求只读访问还是读写访问。 如果您决定授予所请求的访问权限,您将会返回到应用程序,该应用程序现在将通过您的帐户进行身份验证。
如果你想撤销访问,只需转到您的帐户DigitalOcean并点击了“ 应用程序和API在控制面板的左侧导航菜单中的”部分:
在“授权应用程序”部分下,您应该会看到每个已授予访问权限的应用程序的条目。
点击“撤消”按钮,删除相关应用对您帐户的访问权限:
应用程式将无法再存取您的帐户。
使用OAuth将用户身份验证为开发人员
要使用OAuth作为开发人员,您需要经历两个单独的进程。 首先,您必须注册您的应用程序以获取请求访问所需的凭据。 之后,您必须开发您的应用程序,以正确地提出请求并处理来自用户的浏览器和DigitalOcean服务器的响应。
使用DigitalOcean注册开发人员应用程序
如果您是开发人员需要通过OAuth验证用户,您首先需要通过DigitalOcean控制面板注册您的应用程序。
在“ 应用程序和API控制面板的”部分,在页面的中间,你会看到标题为“开发应用程序”一节:
要注册新应用程序,请单击右侧的“注册新应用程序按钮”:
您将被带到注册页面。
在这里,您需要提供一些基本信息,如应用程序的名称和主页,并提供简要说明。 请注意,此信息会显示在用户的授权请求页面上。
您还需要为应用程序提供回调URL。 这是您将应用程序配置为处理授权响应的位置。 请参阅下一节,或OAuth认证指南,详细了解什么是必要的来处理的OAuth请求。
当您提交您的详细信息时,您将被带到一个页面,其中包含构建将在您提供的回调URL中生效的授权应用程序或脚本所需的信息。 这包括您的客户端ID,您的客户端密钥和预先格式化的授权请求链接,以将用户重定向到:
在您的应用程序中实现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方法,除由读出范围所允许的动作。 |
开发人员资源
omniauth-digitaloceanGem
由于DigitalOcean在内部使用Ruby,我们正在提供一个开源的OAuth策略供社区使用。 该omniauth-digitaloceanGem在Github并发布到RubyGems的。 它是基于OmniAuth ,对多供应商的身份验证广泛使用的基于机架库,并整合“与DigitalOcean登录”到Rails和机架框架的简单方法。
结论
OAuth是一种非常成熟的方式,可让应用访问您的帐户或请求用户访问帐户。 DigitalOcean的“Apps&API”页面努力使这一过程尽可能简单,双方。
对于DigitalOcean的OAuth API的技术概述,请点击这里: DigitalOcean的OAuth概述 。
要了解更多有关OAuth的是如何工作的,请查看我们的社区文章: 介绍到OAuth 2 。