我的体系结构由前端服务器和后端/ API服务器组成。最终用户可以访问该API,但是我希望前端服务器能够访问最终用户无法访问的API的某些路由(更高的特权)。
此问题分为两部分:
(1)我需要为最终用户使用API密钥。最佳做法是什么?
((2)前端如何在API密钥系统中发挥作用?客户将需要登录其帐户以访问前端提供的这些提升的特权。 (例如启用网络钩子)
我的应用程序托管在Google Cloud App Engine Standard env上,我使用的是node.js10。如果有人对本体系结构有任何建议,那将是非常棒的。
我知道这个问题有些笼统,但我花了几个小时在网上环顾四周,我的问题不是如何使用API密钥,也不是如何对前端进行身份验证,而是:什么是最佳实践这两个在一起?
谢谢,尼基塔
JWT(https://jwt.io/introduction/)可以帮助您。您可以在请求标头中包含API密钥和JWT。一些服务接受API密钥作为URL参数,但是将此类敏感数据放在标头中是更好的方法。
JWT可以在用户进行身份验证时存储在cookie中,并且可以与请求一起传输到服务器。
服务器可以使用API密钥来验证和解码JWT,并使用服务器环境中用于授权访问的密钥,因为对该JWT进行解码可以揭示用户的类型,因此,帮助可以确定所需的访问级别。
直接使用多个变体的方法。您可以从基本版本开始,然后继续逐步添加图层/功能。