多个命令行应用程序的持久OAuth会话?

时间:2018-12-18 00:51:03

标签: oauth oauth-2.0

我正在为使用OAuth2进行身份验证的Web服务开发RESTful API。我们的第三方开发人员客户有兴趣创建数十个小型命令行工具来处理数据。但是,对于他们来说,每次运行命令都必须登录。

我所设想的是非常类似于“ npm login”或“ git login”的东西-一种在命令行上创建持久会话的实用程序。我想这会将用户的OAuth凭据存储在私有配置文件中。各种第三方工具将调用Python库函数(我们还将提供),该函数将读取文件并通过服务进行验证,并向其返回可在后续HTTP调用中使用的令牌。

但是,我们希望每个工具都有其自己的客户端ID,以便我们可以将一个工具与另一个工具区分开来,以用于度量和报告目的。因此,我想避免客户端ID在登录时固定的情况。

不幸的是,我是OAuth的新手,不确定从哪里开始。任何建议或起点都将有所帮助。

1 个答案:

答案 0 :(得分:0)

有两种方法取决于您的确切要求。这些由OAuth 2.0(RFC6749)定义。

如果您只需要标识脚本类型(例如:-删除脚本,数据访问脚本或任何用途),而不必担心最终用户,则可以使用 Client Credentials Grant

在此授予类型中,您可以为每个脚本定义客户端ID和客户端机密,并使用这些凭据为每个脚本获取令牌。可以将其作为脚本的第一步。您只需要处理令牌请求和响应。

如果需要标识最终用户,则应使用 Resource Owner Password Credentials Grant 。这类似于客户端凭据授予,但是最终用户使用客户端脚本共享客户端凭据,而不是客户端凭据。然后您的脚本调用令牌端点以获取令牌。

这两种方法都不涉及授权服务器的登录屏幕。因此它们可以被脚本使用(适用于脚本)。选择取决于您,具体要求取决于您的要求。