我正在为使用OAuth2进行身份验证的web服务开发一个RESTful应用程序接口。我们的第三方开发人员客户对创建几十个小型命令行工具来处理数据很感兴趣。但是,对于他们来说,每次运行命令都必须登录,这将是很麻烦的。
我所设想的是类似于"npm login“或"git login”的东西--一个在命令行上创建持久会话的实用程序。我想这将把用户的OAuth凭证存储在一个私有配置文件中。各种第三方工具将调用一个Python库函数(我们还将提供该函数),该函数读取文件并使用服务进行验证,向它们返回一个可在后续HTTP调用中使用的令牌。
然而,我们希望每个工具都有自己的客户端id,这样我们就可以为了度量和报告的目的而将一个工具与另一个工具区分开来。因此,我希望避免客户端id在登录点固定的情况。
不幸的是,我是OAuth的新手,不知道从哪里开始。任何建议或起点都会很有帮助。
发布于 2018-12-20 11:25:23
根据您的确切需求,有两种方法。这些都是由OAuth 2.0 (RFC6749)定义的。
如果您只需要确定脚本类型(例如:-删除脚本、数据访问脚本或其他用途),而不需要担心最终用户,则可以使用。
在此授权类型中,您将为每个脚本定义客户端id和客户端密码,并使用这些凭据为每个脚本获取令牌。这可以作为脚本中的第一步来完成。您只需要处理令牌请求和响应。
如果您需要识别最终用户,那么您应该使用。这类似于客户端凭据授予,但与客户端凭据不同,最终用户将其凭据与您的脚本共享。然后,您的脚本调用令牌端点以获取令牌。
这两种方法都不涉及来自授权服务器的登录屏幕。因此,它们可以由脚本使用(适用于脚本)。您可以根据具体要求进行选择。
https://stackoverflow.com/questions/53824938
复制相似问题