我们有一个带有json API的应用程序。我们在浏览器中使用Javascript向它发送ajax调用。每个API调用都需要一个API密钥。
我计划实现一个接受用户名和密码的登录API,并返回该特定用户的API密钥。密钥将进入cookie并随每个API请求传回。 (你仍然可以将它包含在json请求中; cookie将是一个后备。)
这个方案的最大好处是我们不需要在服务器端维护会话。服务器端的所有内容都是无状态的。当您处于集群环境中时,无状态操作会带来显着的好处。
这是个坏主意吗?它安全吗?还有更好的方法吗?
假设我们正在运行https。
答案 0 :(得分:1)
如果您不需要对旧浏览器的支持,并且您只需要访问api密钥客户端,那么您可以使用本地存储,这样您就不必向服务器发送cookie以及从服务器发送cookie,以及没有可以被盗的饼干。
答案 1 :(得分:1)
不,你提到的方式,即使你使用https,你的API密钥也不会安全。这是因为API密钥现在存在于您的浏览器中,并且很容易被浏览器插件,脚本等暴露。
此处要考虑的另一件事是您的令牌有效期多久。在这种情况下,建议使用较短的API令牌到期时间。
幸运的是,很多人都有相同的要求,而OAuth 2规范只针对您提到的用例有一个隐式授权案例流程。你可以看一下并决定你的方法,