我正在学习使用JSON Web令牌进行基于令牌的身份验证,以下是我现在看到的移动应用程序的方法,例如,使用例如夫特:
我可以使用用户输入在应用内创建一个对象,比如
{ 用户名:“patrickbateman”, 密码:“ismyknifesharp”, 角色:“常规”, ... }
然后我可以使用library从中生成JWT令牌。
/api/contacts/list
。或者我必须发送登录名/密码进行身份验证吗?以下是我的结论:
这些结论是否正确?检查客户端发送的令牌的方法是什么?
答案 0 :(得分:4)
我的意见:
我们不应该在客户端上保留用户的密码。客户应在注册/登录时将密码发布到服务器,不要将其保存在客户端的任何位置。请求应为android:scaleType="fitCenter"
,密码不应加密。我们稍后会在服务器端加密密码。
用户成功登录后,服务器将为该用户生成https
。 token
本身将包含过期日期。我们将使用令牌来验证服务器的权限。
我认为每个API请求都应提供令牌,但注册/登录/忘记密码请求除外。
令牌应放在请求标题内。
服务器应该允许客户端请求带有旧令牌的新令牌(可能已过期)
“如何从客户端检查令牌?”的答案。有很多方法可以做到这一点。以下是我目前的方法:
服务器端生成一个令牌,该令牌是token
的加密字符串(例如用户的令牌过期时间,用户ID,角色...)和密码(仅在服务器端保留)与HMAC或RSA算法。当用户提交user info
时,服务器可以在不查询数据库的情况下解密并获取token
过期时间。
无论如何,此问题与user info
代码无关。