我想知道以下基于令牌的身份验证的设计是否合理。
(session_key, expires_at) <- (a 256-bit pseudo-random string, some date in the future)
并将其保存在所选的存储系统中。{session_key: ..., expires_at: ...}
。原因是非浏览器客户端没有cookie,它们将读取此有效负载,并将其本地存储以备将来使用。具体来说,我认为系统需要在有效负载中发送令牌以及用于非浏览器客户端的cookie。这是常见的做法吗?还是我错过了重要的东西,还有更好的选择?
答案 0 :(得分:1)
正如我在another question中指出的那样,这很好。它不会公开会话密钥,就像仅在cookie中一样。仅当攻击者可以使用有效的用户/密码组合调用身份验证端点时,才会发生这种情况。
请确保您的身份验证端点不接受有效的会话并回显其密钥,因为这可能会使您暴露于CSRF和会话窃取中!
有关其他身份验证方法,请查看我放在一起的Web Authentication Guide。