技术栈
现在,在这种情况下,订阅密钥将通过浏览器->检查->网络标签可见
我们要确保用户不能使用UI密钥进行API调用 使用代理将隐藏密钥,但是现在任何人都可以调用代理url来获取数据。
如何使其安全?
答案 0 :(得分:1)
您找到任何解决方案了吗?我使用nginx作为代理服务器,并在调用微服务时将订阅密钥保留为proxy_set_header subscription-key abc-def
。这样,订阅密钥就不会暴露给UI,而是会通过nginx转发给API Management Service。
答案 1 :(得分:0)
将密钥存储在Azure密钥保险库中,并从前端应用程序进行访问, https://medium.com/@ayanfecrown/azure-key-vault-node-js-step-by-step-tutorial-af131a78e220
答案 2 :(得分:0)
如nmbrphi,garethb所述,我们可以控制最终用户在浏览器网络标签中看到的内容。
并且由于我们在系统中没有可用的用户身份验证,而仅具有IP身份验证,因此无法直接通过API控制UI密钥的使用。
为了确保我们有更安全的UI调用,我们实现了可用于任何javascript应用程序的自定义逻辑
参考 http://billpatrianakos.me/blog/2013/09/12/securing-api-keys-in-a-client-side-javascript-app/
这至少帮助我区分了UI调用API和直接调用的API与邮递员之类的其他应用程序/工具。
感谢您的帮助。