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

Roy*_*ish 7 c# passwords asp.net-mvc

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

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

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

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

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

Tej*_*oft 3

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

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

如何在 Asp.Net Identity 中添加声明

使用 Asp.Net Core Identity Cookie 登录时添加自定义声明

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

如何在表单身份验证cookie中存储一些自定义数据

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