REST API身份验证| AppID + AppSecret

时间:2015-06-29 12:21:21

标签: api rest authentication token

我目前正在创建自己的REST API。 API提供的数据并非每个人都可以使用,因此我考虑使用您在进行API调用时必须发送的令牌来保护它。

首先我考虑过使用OAuth2,但我只是发现了如何使用OAuth2的方式。 Facebook API(弹出窗口要求用户权限.....)。

这不是我想要的,所以我开发了自己的auth机制。我有一个" apps"允许使用API​​。每个应用程序都有一个AppID来识别它和一个AppSecret。现在身份验证的工作方式如下:

  1. 客户来电/auth/requestToken?auth_appId=[AppID]
  2. 如果AppID有效,客户将返回requestToken
  3. 现在,客户端将AppSecret附加到requestToken并哈希生成的字符串
  4. 客户来电/auth/accessToken?auth_requestToken=[requestToken]&auth_requestAccessToken=[hash]
  5. 如果hash对发送的requestToken有效,则API返回accessToken有效期为2小时
  6. 可以通过将accessToken添加为get参数
  7. 来进行API调用

    现在我的问题是:

    • 是否有像这样的客户端验证标准?
    • 有更好的方法吗?
    • 您建议的任何改进?

1 个答案:

答案 0 :(得分:1)

  

是否有像这样的客户端验证标准?

是的,您的方法与OAuth 2非常相似,您可以在此架构here上看到。 您的解决方案与OAuth2之间的差异与登录系统有关。

  

您建议的任何改进措施?

在我看来,你的建议错过了很大一部分:授权。 我没有在你的帖子中看到任何部分谈论用户访问API资源的权利,这是一个问题。我认为如果你没有提供任何解决方案进行身份验证或者提供任何解决方案,那么保护API调用是没用的。授权用户。

  

有没有更好的方法来做到这一点?

使用OAuth2,它是一个标准,您可以非常简单地创建自己的OAuth2,并且网上有很多教程。

这是一个简单的例子:creating-a-php-oauth-server

我希望我的基本答案可以帮到你:)。