【发布时间】:2015-06-13 21:52:15
【问题描述】:
我已经为如何在没有用户身份验证的情况下保护 REST API 苦苦挣扎了 2 天。
这是什么意思?
在我的 AngularJS 应用程序中,我通过向我必须使用的现有服务 (companydomain/userinfo) 发送 GET 请求来识别用户。我不确定这是如何工作的,因为我不是这段代码的作者,但关键是我在响应中以 JSON 形式获得了有关用户的信息(活动目录名称、公司中的电话......)。
这就是我识别用户的全部内容。
我做了什么
现在,我发现很多资源都在谈论 OAuth、唯一令牌等,但似乎没有任何内容与我的问题相符。我实现了一个令牌系统,但它毫无用处,因为我无法确定请求者的真实性。
- 用户打开应用程序。应用程序向服务询问与用户相关的信息。 公司域/用户信息
- 应用程序根据返回的信息向服务器(nodejs & express)请求一个令牌。 /api/token/get/{user_info}
- 服务器生成一个唯一的令牌,并将其与到期日期和所有者一起存储在内存中。如果用户存在(基于活动目录名称),服务器还会检查“授权用户”表,如果不存在则添加新条目。
- 应用程序将令牌连同每个请求一起发送到 API。 /api/entry/delete/{entry_id}
我想你明白这里出了什么问题,攻击者可以轻松地向 API 发出损坏的请求以获取合法令牌。所以我的问题是:
由于用户不使用凭据进行身份验证,我如何设法保护我的 API?
我希望我的问题足够清楚,此时我什至不确定是否可以在不添加凭据系统的情况下解决此问题。
【问题讨论】:
-
如果您需要验证用户的身份,则需要某种形式的身份验证,这是没有办法的。
-
@Jason 我也得出了这个结论,但我想确定这一点。
-
嗨@user3284786,谢谢你的好问题+1。当我尝试为我的 restful api(消费者是 angluarjs)构建安全性时,我还发现了你在帖子中提到的这个问题。
an attacker could easily make a corrupted request to the API to get a legit token.。你现在的解决方案是什么?你能告诉我更多关于它的信息吗?也许你可以在这里发布你的答案。谢谢。
标签: angularjs node.js api security rest