首页 > 解决方案 > ASP.NET MVC - 如何安全地保存用户密码以进行 SQL Server 身份验证?

问题描述

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

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

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

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

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

标签: c#asp.net-mvcpasswords

解决方案


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

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

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

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

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

如何在表单 auth cookie 中存储一些自定义数据

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


推荐阅读