是否使用令牌足够安全地检查后续REST API请求?

时间:2016-10-20 08:28:46

标签: rest security

在我的REST API中,用户将首次使用他们的用户名和密码登录。

当他们成功登录后,我们将采用以下格式进行回复。

{
  "token": "0c7f8b870675bc61d92baeef1e274c2d31343736393530373230",
  "expire_on": "2016-11-19T18:05:20+0000",
  "user_id": 30,
  "user": {...}
}

在REST API之后,我们将在标头中发送token以验证用户。 token52个字母。

足够安全吗?

我应该同时发送tokenuser_id来验证更多信息吗?

2 个答案:

答案 0 :(得分:0)

这取决于您如何生成令牌。 如果有人能猜出它们是如何生成的,那么它就可以创建一个假的。 如果这是保存在您的服务器上的随机字符串,并且对于每个请求,您检查服务器中是否存在,那么您就是安全的。 无状态令牌的最佳当前解决方案是JWT。看看https://jwt.io/

答案 1 :(得分:0)

您是否实施了身份验证层?我建议看一下Oauth2规范,你对grant_type是密码时的部分感兴趣。如果您遵循它,只返回访问令牌是安全的:

  

5.1. Successful Response

     

授权服务器发出访问令牌和可选   刷新令牌,并通过添加以下内容来构造响应   使用200(OK)的HTTP响应的实体主体的参数   状态代码:

     

的access_token            需要。授权服务器发出的访问令牌。

     

token_type            需要。按照中所述发布的令牌类型            第7.1节。值不区分大小写。

     

expires_in            推荐的。访问令牌的生命周期(以秒为单位)。对于            例如,值“3600”表示访问令牌将            从响应生成之日起一小时后到期。            如果省略,授权服务器应该提供            到期时间通过其他方式或记录默认值