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

问题描述 投票:6回答:2

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

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

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

http oauth oauth-2.0 authorization
2个回答
8
投票

您描述的oauth2授权称为Authorization Code Grant 。 已经设计了这种认证方式,希望访问用户资源的应用程序不能访问用户凭证。

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

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

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

资源所有者密码凭据授予

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

然而

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

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

客户凭证授予

客户端可以仅使用其客户端凭证来请求访问令牌。

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


如果你想了解更多关于oauth2的信息, 这里有一篇好文章。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.