我正在开发一个应用程序,它需要从活动目录中输入功能“服务帐户”才能通过模拟来执行需要提升的应用程序的某些功能。它基本上会为用户提供受应用功能限制的应用功能,而无需提供他们的帐户权限。在过去,我使用了SHA1加密哈希并将加密密码存储在web.config中。这可能不像其他方法那样安全。这里的主要目标是能够在应用程序中存储服务帐户的用户ID和密码,而无需在任何地方以明文形式存储。对此有何建议?
答案 0 :(得分:1)
ASP.NET Core的配置设置允许配置多个不同的源:JSON,环境变量等。对于存储机密信息,有些比其他信息更适合,所以这里是您的主要选项:< / p>
用户秘诀:这是开发的明智之举。任何类型的帐户信息,API密钥等都应存储在开发中的用户机密中。主要问题是这只是为了发展。因此,您仍需要找到生产解决方案。
环境变量:虽然未加密,但环境变量至少会将这些设置限制在特定服务器(您可能已经存储了此类服务帐户的凭据)以及源控件之外。不过,有些用户可能更喜欢更安全。
Azure Key Vault:目前,这是ASP.NET Core提供的唯一支持加密的分布式配置选项。它当然不是免费的,但它也不贵。如果你已经在Azure中运行,这是一个明智的选择,但即使你不是,它仍然是一个不错的选择。
您想要使用的任何其他内容:ASP.NET Core的一个好处是所有内容都是模块化和可交换的。您可以使用内置配置提供程序,第三方提供的配置提供程序,甚至是您自己创建的自定义配置提供程序。特别是后一个事实为您打开了一个可能的世界,就好像您只是花时间编写自己的提供程序一样,您实际上可以继续使用类似Web.config的东西,因为您已经使用或集成了一些您想要使用的其他解决方案。