我目前正在开发一个API,但我对如何保护它有点难以理解。我不想重新发明轮子,我也不是密码学方面的专家。用令牌保护API
我现在的计划如下:
检查客户端通信的HTTPS
检查客户端是否有令牌,如果他们不那么验证它,否则让他们登录(返回401)
验证令牌,我会检查它是否存在于数据库中,如果它检查它没有过期。
如果令牌不存在,我会要求他们验证。这将涉及通过HTTPS将他们的用户名和密码发送到服务器,我会使用传统方法(散列,加盐,比较等)检查它。如果全部检出,那么我会创建一个会话密钥/令牌/随机字符串,并在将来的所有请求中要求他们发送它们的API请求。
这听起来像一个明智的做法?
谢谢
听起来不错。如果您发出数字签名的令牌,则不需要执行数据库查找。 – MvdD
这听起来像是你试图重新发明轮子,对于这个主题可能是危险的 - 取决于什么版本的ASP.NET(例如OWIN),你可以使用已建立的方法根据你的场景发布和验证令牌。您在谈论授权(OAuth),同时也在讨论正确的密码存储。例如,请参阅:[链接](http://bitoftech.net/2015/01/21/asp-net-identity-2-with-asp-net-web-api-2-accounts-management/)。有大量的文章使用令牌,并在ASP.NET中正确存储密码。 –