如果我的API密钥和用户身份验证方案有意义,我想与您联系。我的服务器端代码是PHP,数据库是MySQL。这是我想到的方案: 我正在后端服务器中实现一个REST API,它将由移动应用程序调用(目前)。此时,我只希望已知的移动应用程序连接到此API。所以我使用的是在安装过程中提供给移动应用程序的一次性API密钥。应用程序的每个请求都会传递我的API检查的API密钥,然后再继续。此密钥存储在数据库表中。这样就完成了我的API密钥检查,似乎只允许已知的应用程序调用我的API。
接下来,在调用API之后我也有一些服务,只有经过身份验证的用户才能访问。为此,移动应用程序使用用户名和密码登录,该用户名和密码在我的数据库的用户表中进行了身份验证。如果通过,服务器将生成用户令牌并将其传递给移动应用程序。用户令牌也会保存在针对该用户的用户表中。来自App的所有后续请求(需要用户身份验证)都会传递此用户令牌,该用户令牌在用于用户身份验证的数据库中的用户表中进行检查。如果移动应用程序注销,则会从用户表中删除此用户令牌。我还有条款添加" TimeToExpire"对于我将在稍后实现的用户令牌。
如果你们能告诉我以下内容,我将非常感激:
以上结构对App身份验证和用户身份验证有意义吗?
如果我需要更改API密钥(无论出于何种原因),我会感到很遗憾。不确定如何将其发送到所有应用程序。 Google Messaging似乎是处理这种情况的一种可能方式。
对于App身份验证,将API密钥保存在Memcached对象中是否有意义?由于来自应用程序的所有请求都经过身份验证,因此我不想每次都访问数据库。和利弊?
同样,在Memcached对象中拥有用户令牌也是有意义的吗?优点/缺点