带有 ASP.NET 服务帐户的 DPAPI

Posted

技术标签:

【中文标题】带有 ASP.NET 服务帐户的 DPAPI【英文标题】:DPAPI with ASP.NET Service Account 【发布时间】:2009-09-01 12:26:14 【问题描述】:

我想在将数据保存到数据库之前对其进行加密。对数据的访问由应用程序控制。所以任何具有管理员角色的人都应该能够看到数据。我希望能够保护用于加密/解密数据的加密密钥。我不想使用 DPAPI 机器密钥,因为服务器托管多个应用程序。

我想知道是否可以创建一个服务帐户并使用该帐户的登录凭据来加密 web.config 文件中的密钥。

谢谢

【问题讨论】:

为什么要尝试,如果不起作用,请回来告诉我们。 【参考方案1】:

好的,答案是肯定的,也不是取决于你的堆栈。

如果您托管在 IIS 7 上,那么您应该能够只使用专用应用程序池并使用新的 LoadUserProfile 功能 - 这将允许 DPAPI 使用用户存储。

IIS 6 没有该功能,因此严格的答案是否定的 - 但 Microsoft 提供了一个很好的示例,说明如何获得类似的最终结果。当 Windows 服务控制管理器加载用户配置文件时,他们使用服务进行加密/解密(从而允许 DPAPI 工作)

这是一个相当长的阅读,但应该可以解决问题:

Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication

【讨论】:

以上是关于带有 ASP.NET 服务帐户的 DPAPI的主要内容,如果未能解决你的问题,请参考以下文章

如何使用窗口服务帐户使用窗口身份验证托管 asp.net 应用程序

如何仅在 ASP.NET Core 控制台应用程序中使用服务帐户详细信息发送电子邮件?

如何在 C# 中使用带有服务帐户的 gmail api 或 google Oauth 来发送邮件?

VS 2017 ASP.NET Core Web 应用程序和个人用户帐户有效,但页面不存在

asp.net从谷歌应用程序帐户发送邮件不起作用

使用受信任连接时,哪个帐户用于向 SQL 验证 ASP.net?