分发需要访问授权的网页小部件 API
Distributing Webpage Widgets that need to Access an Authorized API
我开发了一个 API,它使用 JWT 来授权客户端请求。经验丰富的开发人员可以通过 HTTPS 使用登录 API 获取 JWT,并使用该 JWT 进行后续授权的 API 调用。一切正常。
现在,主要面向前端的经验不足的开发人员(HTML/CSS/Javascript 开发人员)对我产生了一些兴趣。理想情况下,对于这个 class 个人,他们希望被指示 "drop this script tag in your HTML, set it up like this, and magic will ensue."
如果他们不在后端的某个随机端口(例如 9090)上部署某种代理服务器(这是我独立思考这个问题时的大脑所在),是否有规范的策略这将允许这种事情,而开发人员不必将他们的 JWT 放在他们的客户端代码中,因此会破坏 API 的授权/身份验证模型(因为在这种情况下,任何人都可以伪装成该用户,例如,只需查看 Chrome 开发人员工具网络 and/or 源选项卡)。
显然我的后端代理概念并不完美,可能会被滥用,但至少我可以在某种滥用场景下撤销恶意行为的 JWT,并与受影响的授权开发人员沟通以提出解决方案.设置代理服务对某些人来说需要付出很多努力。我想我最终可以为每个想要这种东西的开发人员设置一个,如果他们愿意为此付费的话,但我想知道 "is there a better way?"。你怎么说?
我认为您无法阻止恶意用户访问小部件可以访问的任何 API 端点,除非您让他们在使用小部件之前对自己进行身份验证。
假设身份验证是行不通的,也许最小特权原则就是答案。不知道小部件的交互性如何就很难说,但是一些例子:
- 如果小部件不需要写访问权限,请授予它只读访问权限。
- 只允许小部件访问它需要的 data/endpoints。
- 如果小部件仅显示摘要数据(例如获取原始数据但呈现图表),请 API 首先摘要数据而不是将原始数据发送到客户端(例如在服务器)。这将使原始数据更难检索。
我开发了一个 API,它使用 JWT 来授权客户端请求。经验丰富的开发人员可以通过 HTTPS 使用登录 API 获取 JWT,并使用该 JWT 进行后续授权的 API 调用。一切正常。
现在,主要面向前端的经验不足的开发人员(HTML/CSS/Javascript 开发人员)对我产生了一些兴趣。理想情况下,对于这个 class 个人,他们希望被指示 "drop this script tag in your HTML, set it up like this, and magic will ensue."
如果他们不在后端的某个随机端口(例如 9090)上部署某种代理服务器(这是我独立思考这个问题时的大脑所在),是否有规范的策略这将允许这种事情,而开发人员不必将他们的 JWT 放在他们的客户端代码中,因此会破坏 API 的授权/身份验证模型(因为在这种情况下,任何人都可以伪装成该用户,例如,只需查看 Chrome 开发人员工具网络 and/or 源选项卡)。
显然我的后端代理概念并不完美,可能会被滥用,但至少我可以在某种滥用场景下撤销恶意行为的 JWT,并与受影响的授权开发人员沟通以提出解决方案.设置代理服务对某些人来说需要付出很多努力。我想我最终可以为每个想要这种东西的开发人员设置一个,如果他们愿意为此付费的话,但我想知道 "is there a better way?"。你怎么说?
我认为您无法阻止恶意用户访问小部件可以访问的任何 API 端点,除非您让他们在使用小部件之前对自己进行身份验证。
假设身份验证是行不通的,也许最小特权原则就是答案。不知道小部件的交互性如何就很难说,但是一些例子:
- 如果小部件不需要写访问权限,请授予它只读访问权限。
- 只允许小部件访问它需要的 data/endpoints。
- 如果小部件仅显示摘要数据(例如获取原始数据但呈现图表),请 API 首先摘要数据而不是将原始数据发送到客户端(例如在服务器)。这将使原始数据更难检索。