【问题标题】:Distributing Webpage Widgets that need to Access an Authorized API [closed]分发需要访问授权 API 的网页小部件 [关闭]
【发布时间】:2018-01-19 15:25:44
【问题描述】:

我开发了一个使用 JWT 来授权客户端请求的 API。经验丰富的开发人员可以通过 HTTPS 使用登录 API 获取 JWT,并使用该 JWT 进行后续的授权 API 调用。一切正常。

现在,我从主要面向前端的经验不足的开发人员(HTML/CSS/Javascript 开发人员)那里得到了一些兴趣。对于这类人来说,理想情况下,他们希望被指示“将这个脚本标签放到你的 HTML 中,像这样设置它,魔法就会随之而来。”

如果不让他们也在他们后端的某个随机端口(例如 9090)上部署某种代理服务器(当我独立考虑这个问题时,我的大脑会去那里),是否有一个规范的策略可以允许这种事情,而开发人员不必将他们的 JWT 放在他们的客户端代码中,因此破坏了 API 的授权/身份验证模型(因为在这种情况下,任何人都可以伪装成该用户,例如,只需查看 Chrome 开发人员工具网络和/或源选项卡)。

显然我的后端代理概念并不完美,可能会被滥用,但至少我可以在某种滥用情况下撤销恶意行为的 JWT,并与受影响的授权开发人员沟通以提出解决方案。但是,对于某些人来说,设置代理服务需要付出很多努力。我想我最终可以为每个想要这种东西的开发人员设置一个,如果他们愿意为此付费,但我想知道“有没有更好的方法?”。你说什么?

【问题讨论】:

  • 我是否纠正了 JWT 你的意思是 JSON Web 令牌? jwt.io
  • 我不确定代理服务器将如何提供帮助。恶意用户可以伪装成小部件与代理服务器对话,而代理会代表他们与 API 对话。似乎与发布令牌相同的问题。我错过了什么?
  • @sbleon 是的,我的意思是 JSON Web 令牌。代理令牌至少可以对客户端隐藏 JWT,这就是我的想法,例如,我可以将 JWT 绑定到代理服务器的静态 IP 地址,因此只能从那里接受。

标签: api authorization client


【解决方案1】:

我认为您无法阻止恶意用户访问小部件可以访问的任何 API 端点,除非您让他们在小部件中进行身份验证,然后他们才能使用它。

假设身份验证是不行的,也许最小权限原则就是答案。不知道小部件的交互性很难说,但有一些例子:

  • 如果小部件不需要写入权限,请授予它只读权限。
  • 只允许小部件访问它需要的数据/端点。
  • 如果小部件仅显示摘要数据(例如,获取原始数据但呈现图表),请让 API 先对数据进行摘要,而不是将原始数据发送到客户端(例如,在服务器上呈现图表)。这会使原始数据更难检索。

【讨论】:

  • 是的,这基本上是我希望听到的。最后一个子弹是一个非常好的建议,谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 2016-01-30
相关资源
最近更新 更多