我想使用令牌身份验证来验证我的RESTful API。提供的两个关键选项是https://github.com/tymondesigns/jwt-auth和Laravel自己的内置令牌认证。
即使看起来最有希望,我也无法让jwt-auth
为我工作,所以我决定查看Laravel的实现。
这很简单。在用户DB中创建一个额外的字段api_token,生成一个随机字符串并将其存储在用户记录IN PLAIN TEXT中,然后用户发送的任何请求应附加api_token,您应通过检查其在DB中的存在来进行身份验证。只是。
是不是像用纯文本存储密码那样,因为碰巧有权访问数据库的人和经过身份验证的人一样好?那里不存在直接的安全风险吗?有人帮我理解这个。
另外,如何处理诸如使令牌无效,给予令牌有效期等事情?等等?
答案 0 :(得分:1)
对于类似案例我没有使用任何外部插件,而Laravel已经发布了一个名为Lumen的项目,它最适合Restfull Web服务,
我将加密的哈希字符串存储为用户表中的api_token, 在我的移动应用程序中,我让用户首次通过用户名密码进行身份验证,然后将解密后的令牌存储在移动设备中,以便为后续的api呼叫维护用户状态,关键点是我将解密的用户令牌存储在移动设备中我收到服务器中的令牌,我做比较,使用我之前使用的相同加密功能匹配它们,...
在这种情况下,您必须提出自己的加密算法,因为您需要在客户端使用相同的算法进行解密, 或者一个简单的方法是在api_token字段中复制用户密码哈希字符串并将用户密码存储在客户端, 但你必须确保客户端应用程序的安全性,
如果您考虑使用原生android,我将在私有模式下使用共享优先级,这是安全的....
if(Hash::check($password,$user->password)){
$response['success'] = 1;
$response['message'] = 'You have Connected to Server Successfully';
$response['api_token'] = $user->api_token;
}else{
$response['success'] = 0;
$response['message'] = 'Authentication Unsuccessful';
$response['api_token'] = '';
}