asp.net - 覆盖基于配置的模拟

Posted

技术标签:

【中文标题】asp.net - 覆盖基于配置的模拟【英文标题】:asp.net - override configuration-based impersonation 【发布时间】:2015-08-18 20:21:57 【问题描述】:

我有一个 asp.net web api 项目,它通过 web config 元素使用模拟来连接到我们的 SQL 数据库:

<identity impersonate="true"
      userName="domain\user1" 
      password="password" />

这在 99.9% 的情况下都能完美运行。但是,有一个特定端点需要 SQL Server 中的额外权限。我想冒充第二个用户,让我们称它为 user2,而不是 user1 来处理这个特定的调用,然后为所有其他请求恢复到 user1。我相信模拟可以通过编程方式实现,但它可以与上述基于配置的方法一起使用,以便我可以通过编程方式覆盖(并随后恢复为默认)这个端点的模拟用户吗?

【问题讨论】:

一个不相关的问题:你为什么需要模仿?为什么不直接将应用池的身份设置为该用户? 如果此操作是用户可以随时执行的操作,请授予他们使用自己的帐户执行此操作的权限。如果它需要某种形式的限制/守门,那么用户不应该直接对数据进行更改。创建一个负责进行更改并允许用户连接到它的服务/进程。这样,新流程以更多的信誉运行,但专门用于限制对某些特定情况的访问 【参考方案1】:

在您的 web.config 中使用连接字符串。

如果您可以使用标准安全性,请参考它。如果您只能使用集成,请使用凭据创建一个 DSN 并在连接字符串元素中引用该 DSN。

在第二个端点中,引用具有提升权限的第二个连接字符串。如果未来的端点需要不同的权限,这将为 API 提供更大的灵活性。

【讨论】:

两者都是有效的选项,但连接字符串方法需要接触大量现有代码,这并不理想。如果没有其他选择,可能是必要的

以上是关于asp.net - 覆盖基于配置的模拟的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NE网站发布注意事项

[图像识别]-离线检测白瓶程序

缩放 ASP.NET 应用程序

理解ASP.NET Core

ASP.NET Web API 身份验证(Web + 移动)

在 WPF、Silverlight 和 ASP.NET 之间共享一个公共 DAL