问题标签 [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.

0 投票
0 回答
46 浏览

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) 的一篇小文章,他基本上是在解释,他如何接收用于本地脚本的令牌。但在他的案例中,他将其用于某个特定的用例,而不是作为一般公众客户。所以不幸的是,它并没有真正有助于我的回答。