ASP.NET Windows 身份验证模拟问题

标签 asp.net iis windows-authentication

在我之前的问题中,我问的是如何在我的应用程序中使用 Windows 身份验证。现在可以使用了,用户可以使用那里的帐户登录,但我有一个数据库访问方案,但我找不到任何内容。

基本上我会有几台服务器,这就是问题所在。

在某些服务器上,他们将拥有 SQL Server 数据库服务器的 Windows 身份验证帐户,因此应使用模拟他们的凭据。但我注意到它是 web.config 中的一个全局设置(不是每个连接),在一种情况下我想使用应用程序(IIS 或 ASP)Windows 身份验证帐户而不是用户。 (访问我的配置数据库)

我怎样才能做到这一点?

Web 应用程序是托管在 Server 2003/2008 IIS 6/7/7.5 上的 ASP.NET MVC,客户端为 Windows XP 及更高版本。混合使用 SQL Server Express/Standard 2005/2008。

最佳答案

模拟是在站点范围内进行的,您也可以手动将其打开。恐怕您不能手动将其关闭,也不能通过连接字符串完成。

所以基本上关闭模拟,然后在需要模拟时包装数据库调用,如下所示:

using System.Security.Principal;

WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
    ctx = winId.Impersonate();
    // Do your thing
}
catch
{
}
finally
{
    if (ctx != null)
        ctx.Undo();
}

MSDN P&P guide to asp.net impersonation还有更多。

关于ASP.NET Windows 身份验证模拟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411013/

相关文章:

ASP.NET 5 (MVC6) EF7 外键可能导致循环

javascript - 寻找方法来检查包含某个单词的字符串

ASP.NET Windows 身份验证路由不同组

javascript - Kerberos,javascript 中的 Windows 身份验证请求

c# - 将列表 <> 绑定(bind)到 asp.net c# 中的 ListView

asp.net - 在 owin MVC5 中正确关闭 session

c# - 如何在 IIS 上使用 pythonnet 运行 .NET Core 项目

c# - 如何创建具有始终运行组件的 WCF 服务?

iis - 使用 Powershell 更改 IIS 站点主目录

java - Boncode AJP13 - 一般连接器通信错误