OAuth2 - 无需用户交互即可进行授权

时间:2017-06-02 22:21:01

标签: http oauth oauth-2.0 authorization

所以我试图通过他们的API从外部应用程序访问我自己的数据。 我只需要访问自己的数据。不试图从我的任何用户的帐户接收数据,因此他们不需要授权任何内容。显然我需要避免任何重定向(这似乎是我研究OAuth的标准过程......)

该进程被命中/authorize端点,该端点返回一个代码。然后在请求中向accesstoken端点提供该代码。然后,它允许我通过API访问我的帐户。我95%确定这个过程是所有OAuth的标准,但我认为如果不是,我会提供详细信息。

如何在后端提供凭据以获取代码以输入令牌请求,以便否定所有用户交互?我正在使用的API迫使我使用OAuth。

2 个答案:

答案 0 :(得分:8)

您描述的oauth2资助称为Authorization Code Grant。这种身份验证方式已经设计为希望访问用户资源的应用程序可以访问用户凭据。

因此,如果您找到了与此授权中的用户凭据进行交互的方法,那么它将被视为黑客攻击。

如果您不希望单个用户输入用户名和密码,但您希望使用某种“系统帐户”访问api,则这不是您应该使用的oauth授权。

有多种赠款可供您使用。问题是授权服务器支持哪些内容并且可以使用。

Resource Owner Password Credentials Grant

  

此授权类型适用于能够获取资源所有者凭据的客户端。

然而

  

资源所有者密码凭据授予类型适用于      资源所有者与其拥有信任关系的情况      客户端,例如设备操作系统或高权限应用程序。

这种授权类型很可能是不可用的,因为它可能被滥用来窃取用户凭据。

Client credential grant

  

客户端只能使用其客户端凭据来请求访问令牌。

如何将资源绑定到客户端不是oauth规范的一部分,因此也不是提供者特定的。

如果您想了解更多关于oauth2的信息,here是一篇很好的文章。

答案 1 :(得分:0)

您正在描述的Oauth 2资助流程是授权代码资助流程,就像上面的答案所说的那样。就像他们说的那样,如果您可以选择使用上述两种授权方式之一,那么这是最简单的解决方案。

但是,如果你不这样做,仍然有办法避免用户互动"。目前还不清楚用户交互"的含义,但在授权代码流程中,这通常意味着登录到调用您要验证的API的Web应用程序,然后同意同意页面。有关示例,请参阅https://dev.fitbit.com/docs/oauth2/#authorization-page(我为Fitbit实施了OAuth 2 :)。您需要使用像Selenium这样的自动网络浏览器来点击同意按钮。然后,您可以从/ authorize中捕获响应中的代码,并将代码发送到accesstoken端点。