【发布时间】:2015-09-06 20:01:20
【问题描述】:
我正在通过 HTTPS 在我的 Node.js 应用程序上创建 REST 服务。我不想让任何人使用这些 REST 服务,除非他们是经过身份验证的用户,因此在向这些服务发出请求时我需要一种身份验证方法。
我在网上阅读过,似乎带有护照的 OAuth2 是一个很好的解决方案......但是我想出了一个我认为不需要持久性令牌的更简单的解决方案,我想知道是否有我的解决方案有什么大漏洞吗?
我的解决方案是在服务器上保存一个秘密。当用户登录并且我对他们进行身份验证(或注册)时,我会对用户用户名进行哈希处理,为其添加时间戳,并使用我的密码对其进行编码以创建“访问令牌”。由于时间戳,此令牌将始终在一个小时(或一天或多长时间......)后过期。
一旦用户拥有了这个访问令牌,他们只需在请求查询中传递这个令牌,连同他们的用户名,他们就可以使用服务器的 REST API。鉴于当我使用服务器密码解码令牌时,它等于用户名。
此方法也不需要我保留任何令牌信息(刷新令牌、到期时间等)。我也不需要额外的模块,例如护照和 oauth 模块来实现我的解决方案,看起来非常紧凑。
我的问题是(我对安全性非常陌生),假设服务器机密永远不会被发现,这个解决方案对于旨在为移动应用程序提供服务的服务器(仍然可以通过 REST 客户端访问)是否足够好?
【问题讨论】:
标签: node.js rest security authentication oauth