【发布时间】:2014-04-24 15:08:28
【问题描述】:
我需要使用 api 密钥对用户进行身份验证,但在将其交给他们之前,我显然需要检查他们的凭据。我认为这个过程需要这样:
客户端->服务器:GET /user?username=fred
服务器->客户端:nonce=XYXY
client->server: POST /login?hashval={hash(username + password + nonce)}&nonce=XYXY&username=fred
服务器将 hash(username + passwordFromDB + nonce) 的结果与 hashval 进行比较,如果相等则返回 API-key
但是如果有人窃听连接,虽然它无法直接发现我的用户密码,因为它已经知道用户名和随机数,如果密码足够简单,中间人将能够通过尝试密码的所有通用可能值来匹配我的哈希值。(暴力攻击)
我知道通过 HTTPS 的连接和强密码可以确保此过程的安全,但是否有任何其他建议或方法可以使此过程更安全?
谢谢
【问题讨论】:
标签: rest authentication token api-key