基于数据库的令牌(Oauth2之类的)API身份验证,是否安全?

时间:2014-05-21 08:28:16

标签: node.js http rest authentication oauth-2.0

最近我一直在阅读很多关于如何正确保护REST API的内容,但仍然不确定我是否正在做出正确的设计选择。

我有一个由Nodejs Web服务器公开的API。事件是有组织的(基本上人们可以回答问题),因此用户可以使用API​​,如果他们拥有通过客户端界面键入的特定代码来验证自己。

使用相同的API可能会有数千名用户针对一个事件和数千个同时运行的事件进行身份验证。因此,我不希望在服务器端存储任何会话信息。

我的识别流程如下

  • 客户端将特定于事件的代码发送到API的/ login服务。

  • Webserver检查代码,检索相应的事件,并生成封装事件ID(该用户正在参与)的令牌,基于时间戳的生成的用户ID和无状态会话的到期日期 - >这导致包含小有效负载的加密令牌。 (使用SH256和服务器上的秘密硬编码)并发送回客户端

  • 令牌存储在客户端以供将来的API调用。

  • 用户使用授权http标头中的令牌开始回答问题

  • 服务器使用nodejs模块passport-http-token检查令牌,并解密用户ID,事件ID并检查过期日期。它将用户的答案与用户ID一起保存。

所以基本上没有会话商店,虽然我觉得在我发现的大多数OAuth2解决方案中,人们都在服务器端数据库中存储令牌。

假设使用https保护对/ login(发送事件代码)的第一个API调用,有哪些缺陷? SH 256令牌可以进行逆向工程吗?

感谢您的帮助

0 个答案:

没有答案
相关问题