ASP.NET MVC - 如何安全地保留用户密码以进行 SQL 服务器身份验证?

ASP.NET MVC - How to safely persist password of a user for SQL Server Authentication?

我有一个使用 SQL 服务器后端的 ASP.NET MVC 应用程序。但是,SQL 服务器的身份验证方法是 SQL 服务器身份验证,这意味着我需要询问用户密码才能通过我的应用程序连接到数据库。

理想情况下,我不想要求一次密码,为会话永久地建立从应用程序到数据库的连接,然后在我想打开和关闭与数据库的连接时完全忘记密码需要时且仅在执行数据库操作时使用数据库。

但显然,我也不想将他们的密码存储在 Session 对象中,无论应用程序是否将 https 连接和内部面向,因为这是一个很大的禁忌。

在会话期间保留密码的最安全方法是什么?

我无法更改身份验证方法,理想情况下我想使用 Windows 身份验证,但这不可能。

您有两种选择来解决这个问题。

  1. 如果您使用的是 asp.net 身份,那么您可以向用户身份添加自定义声明,该声明将为会话保存在身份验证 cookie 中。在此处查找示例和文章:

How to add claims in Asp.Net Identity

Adding Custom Claims when Logging In with Asp.Net Core Identity Cookie

  1. 如果您不使用 Asp.net 身份,而是遵循旧式表单身份验证,您可以将其作为自定义用户数据添加到身份验证 cookie 中。

How to store some custom data in form auth cookie

保存在身份验证cookie中的用户数据将被加密,可以轻松检索并在注销或会话到期后被丢弃。如果您的应用程序托管在与会话变量不同的服务器场上,它也将是线程安全的。