我需要能够存储用户的Exchange密码,以便以后可以使用它来使用EWS执行某些任务。我知道以纯文本存储密码是一个可怕的犯罪,所以我有什么选择?如何存储密码以备后用?
就我而言,我的应用程序将有权访问管理员帐户,该帐户将能够使用模拟来处理用户的日历。我需要存储此管理员帐户的密码,以便在稍后使用Exchange服务器进行身份验证时使用它。我不打算使用EWS托管API。
我需要能够存储用户的Exchange密码,以便以后可以使用它来使用EWS执行某些任务。我知道以纯文本存储密码是一个可怕的犯罪,所以我有什么选择?如何存储密码以备后用?
就我而言,我的应用程序将有权访问管理员帐户,该帐户将能够使用模拟来处理用户的日历。我需要存储此管理员帐户的密码,以便在稍后使用Exchange服务器进行身份验证时使用它。我不打算使用EWS托管API。
我有一个用户创建了一个具有类似要求的日历应用程序。默认情况下,全局拥有这些权限的帐户是可怕的,不推荐。模拟角色由需要访问应用程序以减少风险范围的部门授予。不过,如果你需要这种全球范围内,这里是我推荐的缓解账号/密码曝光:
限制账户功能仅Exchange服务。仅需要邮箱访问和模拟角色的EWS服务帐户不需要本地登录和其他常规域用户权限等功能。在这种情况下,帐户无法登录到计算机,也无法用于RDP。这限制了恶意使用的风险。
用户/密码可以存储在您的应用程序数据库中,连接字符串也可以存储在应用程序之外,这里有很多:https://security.stackexchange.com/questions/22817/how-to-encrypt-database-connection-credentials-on-a-web-server并在数据库中加密密码;进一步阅读:http://www.darkreading.com/safely-storing-user-passwords-hashing-vs-encrypting/a/d-id/1269374
限制数据库服务器和管理访问。如果数据库服务器在组之间共享,则这是一个比它应该是更大的问题。审核数据库服务器访问,并重新限制厨房中厨师数量过多。数据库服务器也不应该直接被用户网络访问,但这可能是一个更大的问题来解决。
限制对应用程序的访问。如在,它是外部可用还是仅在您的外围可用?无论采用哪种方式,应用程序还应包含仅使用Kerberos或其他SSL身份验证进行访问的身份验证,确保应用程序不能用于阻止EWS服务遭受过度访问。
在Exchange上为此用户创建一次性限制策略,并相应地进行分配以防止应用程序打破EWS或限制常规用户功能。这是黑莓管理员如果不遵循建议就学会了艰难的方式。当BES服务器不能正确拆卸连接时,Web服务将开始丢弃有效的客户端请求。因此,BES必须指示用户为各种Exchange功能创建一次性限制策略。我为创建我的EWS应用程序的用户做了同样的事情。几次它救了我。
真的会归结为良好的应用程序设计和协调与Exchange团队的要求。
不要的:
希望这有助于。