问题标签 [rest-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rest - 通过 oauth 授权本地脚本访问 Web 服务的最佳实践
我找不到有关其他人如何解决此问题的信息,所以也许您可以帮助我。
我有的
使用 OpenID Connect 保护的具有 REST API 的多个服务。服务之间的连接工作正常。现在我有多个开发人员,他们有时需要编写和执行本地脚本(Python、R、Bash 等)以进行快速分析和测试。
我想要的是
我想让开发人员尽可能轻松地使用这些服务,但仍要考虑安全问题。
我试过的
我将脚本本身定义为客户端。因此,我在我的 OIDC 产品中创建了一个公共客户端,它有点像“开发者脚本”。使用处理 oauth 舞蹈的库,然后我可以执行作为上述客户端连接的脚本。第一次,浏览器弹出并请求用户进行身份验证,因此授权客户端代表用户使用 REST API。之后,令牌被缓存,我可以轻松地继续处理该脚本。
这工作得很好,关于安全性,我很高兴凭据没有像以前那样保存在本地计算机上,例如基本身份验证。此外,我能够在用户级别控制对不同服务的访问。
其他没有说服我的想法:
- 每个 Web 服务还有一个公共客户端,然后脚本可以将其用作客户端(因此脚本不再定义为客户端)
- 令牌生成在其他地方完成,开发人员只需将生成的访问/刷新令牌添加到脚本
我的问题
我目前的解决方案让我担心的是该客户的定义。在所描述的情况下,它可能是所有开发人员用于所有脚本的通用客户端,或者是每个想要编写本地脚本的开发人员的新客户端。后者似乎开销很大,前者可能是安全问题?
所以最后我要问一个问题:对于我描述的用例,是否有任何已知的最佳实践?
编辑:
我发现了 [Martin Fowler](https://martinfowler.com/articles/command-line-google.html) 的一篇小文章,他基本上是在解释,他如何接收用于本地脚本的令牌。但在他的案例中,他将其用于某个特定的用例,而不是作为一般公众客户。所以不幸的是,它并没有真正有助于我的回答。