在我的REST API中,用户将首次使用他们的用户名和密码登录。
当他们成功登录后,我们将采用以下格式进行回复。
{
"token": "0c7f8b870675bc61d92baeef1e274c2d31343736393530373230",
"expire_on": "2016-11-19T18:05:20+0000",
"user_id": 30,
"user": {...}
}
在REST API之后,我们将在标头中发送token
以验证用户。 token
长52
个字母。
足够安全吗?
我应该同时发送token
和user_id
来验证更多信息吗?
答案 0 :(得分:0)
这取决于您如何生成令牌。 如果有人能猜出它们是如何生成的,那么它就可以创建一个假的。 如果这是保存在您的服务器上的随机字符串,并且对于每个请求,您检查服务器中是否存在,那么您就是安全的。 无状态令牌的最佳当前解决方案是JWT。看看https://jwt.io/
答案 1 :(得分:0)
您是否实施了身份验证层?我建议看一下Oauth2规范,你对grant_type是密码时的部分感兴趣。如果您遵循它,只返回访问令牌是安全的:
授权服务器发出访问令牌和可选 刷新令牌,并通过添加以下内容来构造响应 使用200(OK)的HTTP响应的实体主体的参数 状态代码:
的access_token 需要。授权服务器发出的访问令牌。
token_type 需要。按照中所述发布的令牌类型 第7.1节。值不区分大小写。
expires_in 推荐的。访问令牌的生命周期(以秒为单位)。对于 例如,值“3600”表示访问令牌将 从响应生成之日起一小时后到期。 如果省略,授权服务器应该提供 到期时间通过其他方式或记录默认值