Rya*_*one 6 asp.net asp.net-core-mvc asp.net-core asp.net-core-webapi asp.net-core-2.0
我最近遇到了一些SQL Server并不喜欢默认的AppIdentityUser登录的问题,所以我继续创建了一个具有写访问权限的自定义数据库用户.
但它让我想知道 - 这是最好的方法吗?
我想知道Asp.Net Core最好的SQL Server登录方法是什么.我知道有一个类似于普通.NET的问题,但是你无法加密Core web.config/appsettings.json(嗯,以一种快速而直接的方式).
以下是我看到的选项:
通过存储在appsettings.json中的SQL Server ID进行连接.
通过ASP.NET"AppIdentityUser"通过用户NT ID连接.
通过Active Directory用户连接.
我还缺少其他选择吗?在哪些情况下使用以下哪些选项?哪个更标准?有没有我不考虑的利弊?
您绝对应该使用自定义SQL登录名来连接数据库。在后台,SQL登录名可以绑定到本地帐户,服务帐户,网络帐户等。实际上并不重要。
您似乎在这里遇到的真正问题是不想(正确地)以纯文本公开登录凭据。我不确定为什么在这里继续引用Web.config,因为ASP.NET Core不使用它。相反,可以选择使用各种配置提供程序。默认情况下,ASP.NET Core(至少从2.0开始)添加了一个JSON配置提供程序来查找项目,appsettings.json并appsettings.{environment}.json在您的项目中添加了命令行配置提供程序,用户密钥配置提供程序,最后是环境变量配置提供程序。
对于您的情况,最后两个最有趣。在开发中,应使用用户密码。在生产中,应使用环境变量。但是,它们都不以加密方式存储机密。两种方法的好处都是秘密不在您的项目中,因此也不在您的源代码控制中。即使没有加密,也没有您想的那么大。弄清两者中的秘密都需要直接访问服务器/开发机器。此外,默认情况下,用户机密与特定的用户帐户绑定,只有该用户才能访问,并且可以使用相同的方式设置环境变量。因此,某人将需要同时访问计算机和获得对特定帐户的访问权限。这实际上是一个很高的标准,如果要发生的话,在那时,暴露数据库密码确实是您最不用担心的事情。
但是,如果您想要真正的加密,则可以选择使用Azure KeyVault。无论您的应用程序是否实际托管在Azure中,都可以使用KeyVault,尽管它不是免费的,但它却非常便宜。
最后,您始终可以创建自己的配置提供程序或源第三方提供程序。例如,虽然默认的JSON提供程序不支持加密,但您可能会编写一个支持加密的程序。