【发布时间】:2015-10-25 19:06:49
【问题描述】:
我目前正在开发 API,但我对如何保护它有点困惑。我不想重新发明轮子,而且我不是密码学专家。
我目前的计划如下;
检查客户端是否通过 HTTPS 进行通信
检查客户端是否有令牌,如果有则验证它,否则让他们登录(返回 401)
为了验证令牌,我会检查它是否存在于数据库中,如果它确实检查它没有过期。
如果令牌不存在,我会要求他们进行身份验证。这将涉及通过 HTTPS 将他们的用户名和密码发送到服务器,我将使用传统方法(散列、加盐、比较等)对其进行检查。如果一切顺利,那么我将创建一个会话密钥/令牌/random 字符串,并在以后的所有请求中要求他们将其与 API 请求一起发送。
这听起来是不是一种明智的做法?
谢谢
【问题讨论】:
-
听起来不错。如果您颁发数字签名令牌,则无需进行数据库查找。
-
听起来您确实在尝试重新发明轮子,并且对于这个主题可能很危险 - 取决于您可以使用已建立的 ASP.NET 版本(例如 OWIN)来发布和根据您的方案验证令牌。您在谈论授权 (OAuth),同时也在谈论正确的密码存储。例如参见:link。有大量关于在 ASP.NET 中使用令牌和正确密码存储的文章。
标签: api security asp.net-web-api cryptography token