ASP.NET模拟和SQL Server可信连接呼叫
-
23-08-2019 - |
题
我工作的ASP.NET页面,我们在代码冒充请求用户上。我们使用下面的代码来启动冒充。
Dim impersonationContext As System.Security.Principal.WindowsImpersonationContext
Dim currentWindowsIdentity As System.Security.Principal.WindowsIdentity
currentWindowsIdentity = CType(User.Identity, System.Security.Principal.WindowsIdentity)
impersonationContext = currentWindowsIdentity.Impersonate()
此之后,我们已经验证该应用程序适当的上下文中运行通过调用:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
此返回用户的正确身份,和文件访问和其他项目出现使用他们的帐户是。然而,使用Microsoft应用程序数据应用程序块提供SQLHelper类时,调出数据库使用受信任的连接认证失败,为“NT AUTHORITY \ ANONYMOUS登录”用户。
我们可以失败,目前的身份仍然是我们所期望的账户,而不是匿名登录帐户后重新验证。
有没有人有一个想法,这是为什么?或者更具体如何,我们可以围绕它得到什么?
修改强> 大约从这些页面的调用是如何工作的一些额外的信息。
我们从做.aspx页面中的冒充电话。
在我们模拟我们呼叫到被referecned一个“业务逻辑”组件。
我们知道上下文身份仍然是一个正确的位置。
在此之后,“业务逻辑”组件调用实际执行可信连接呼叫另一个组件。我们不能修改该“数据存取”组件,所述身份验证异常由该组件报道为好。
其他提示
我知道我用模拟在ASP.NET(使用C#和访问文件系统)之前,我想知道如果曾试图包装,其包括的 currentWindowsIdentity.Impersonate()强>的逻辑与一个“使用/结束使用”(显式地定义为一个代码块的安全性上下文)。
所以,它应该是这样的:
Using impersonationContext = currentWindowsIdentity.Impersonate()
' Logic here
End Using
不隶属于 StackOverflow