【发布时间】:2011-09-24 17:18:06
【问题描述】:
我有一个 ASP.Net C# 应用程序,它需要每 5 分钟使用 WebServices 连接到外部 API。
External Webservice的要求如下:
- 需要用户名和密码
- 我必须在每个 Web 服务请求中传输用户名和密码
- 密码每 90 天过期一次,必须在过期日期之前更改
- 无法手动更改密码(人工),我的应用程序必须连接到单独的密码更改 Web 服务才能更改密码。
- 我的应用程序必须根据一组规则生成每个新密码。
- 密码永远不能重复使用。
- 需要 SSL、证书和防火墙 IP 限制
我已经构建了所有以前的,但我目前有一个问题。存储当前和历史密码的最佳做法是什么?
显然存储明文密码是一个不好的解决方案。我需要能够让我的网络服务读取密码并在每个请求中传输它。我还需要能够访问所有历史密码,以确保我新生成的密码不重复。
理想情况下,我想将每个(加密的)密码存储在我的数据库中,并在我需要调用 web 服务时对其进行解密。是否有我应该遵循的最佳实践?我应该使用 Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Cryptographer.EncryptSymmetric(..) 加密每个密码吗?
注意:很遗憾,我无权更改外部 API 的运行方式。我必须遵守提供的规则。
【问题讨论】:
-
在密码末尾贴一个 5 位计数器,从 2010 年开始的月份数?
标签: c# asp.net web-services passwords password-encryption