我有一个关于使用 API 安全性的问题,因为我认为由于我缺乏经验,我错过了一些基本概念。
我有一个无头 Discourse 实现,用于集成到我的前端,并且我已成功启用了 SSO 进行用户身份验证。
我最初的理解是,我使用 SSO 作为“活动用户”来从 API 获取特定于活动用户的数据。我现在意识到,这并不完全正确。
我现在看到返回的数据似乎取决于标头中传递的“api-username”。但我使用的是管理员 API 密钥,我认为这意味着通过传递正确的用户名作为“api-username”,我可以获取任何我想要的用户的数据。
所以我的问题归结为,API 似乎没有引入“活动用户”的概念,我必须通过检索外部 ID 来获取用户名,然后在活动会话中始终使用该用户名作为 api-username 来调整活动用户,是这样吗?
如果我的理解是正确的,那么黑客岂不是可以轻易地修改标头中的 api-username 来检索任何用户的聊天记录?
任何额外的信息都将有助于我理解。谢谢!
一些我阅读过的相关文章:
管理员 API 密钥是通往王国的钥匙

不要将其放在任何前端应用程序中。如果你这样做了,我建议你立即撤销它。
3 个赞
michaeld
(Michael - Communiteq)
3
你不应该从前端使用该 API,因为那样的话确实存在风险(实际上风险要高得多,因为黑客可以做任何事情)
你应该从后端执行此操作。
如果那不是一个选项,那么你应该改用用户 API 密钥。
2 个赞
作为一个无头实现,我将从我的前端运行它。所以,在这种情况下,我似乎需要花一些时间来解读关于这个话题的讨论:
与这些讨论类似,我也有兴趣使用我的管理员API访问来自动生成用户的API密钥。但是,在我的流程中,我不想让用户重定向到一个新页面来“批准”我的应用程序。我将要么想使用我可靠的管理员API密钥强制批准,或者是否有我可以禁用的设置,这样新用户API密钥就不需要额外的身份验证了?