我目前正在创建自己的REST API。 API提供的数据并非每个人都可以使用,因此我考虑使用您在进行API调用时必须发送的令牌来保护它。
首先我考虑过使用OAuth2,但我只是发现了如何使用OAuth2的方式。 Facebook API(弹出窗口要求用户权限.....)。
这不是我想要的,所以我开发了自己的auth机制。我有一个" apps"允许使用API。每个应用程序都有一个AppID来识别它和一个AppSecret。现在身份验证的工作方式如下:
/auth/requestToken?auth_appId=[AppID]
requestToken
AppSecret
附加到requestToken
并哈希生成的字符串/auth/accessToken?auth_requestToken=[requestToken]&auth_requestAccessToken=[hash]
hash
对发送的requestToken
有效,则API返回accessToken
有效期为2小时accessToken
添加为get参数现在我的问题是:
答案 0 :(得分:1)
是否有像这样的客户端验证标准?
是的,您的方法与OAuth 2非常相似,您可以在此架构here上看到。 您的解决方案与OAuth2之间的差异与登录系统有关。
您建议的任何改进措施?
在我看来,你的建议错过了很大一部分:授权。 我没有在你的帖子中看到任何部分谈论用户访问API资源的权利,这是一个问题。我认为如果你没有提供任何解决方案进行身份验证或者提供任何解决方案,那么保护API调用是没用的。授权用户。
有没有更好的方法来做到这一点?
使用OAuth2,它是一个标准,您可以非常简单地创建自己的OAuth2,并且网上有很多教程。
这是一个简单的例子:creating-a-php-oauth-server
我希望我的基本答案可以帮到你:)。