使用 Windows 身份验证远程访问的 Visual Basic Sql 连接字符串
Posted
技术标签:
【中文标题】使用 Windows 身份验证远程访问的 Visual Basic Sql 连接字符串【英文标题】:Visual Basic Sql Connection String using Windows Authentication Remote Access 【发布时间】:2014-05-08 13:46:02 【问题描述】:这有一个很长的背景故事,但总而言之,我试图在我的 VB 程序中创建一个 SQL Server 连接,以自动运行一些查询并显示结果。过去,当服务器在我的网络上时,我已经能够轻松地做到这一点。现在我的公司正在迁移到托管服务器,但我遇到了问题。
使用 RUNAS 命令时,我可以使用 SSMS 成功连接到服务器:
runas /netonly /user:[network domain]\[username] "C:\Program Files (x86)\Microsoft SQLServer\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"
但我不知道如何以类似的方式设置 VB 程序 SQL 连接字符串。
我知道我可以使用Integrated Security = SSPI
来指定 Windows 身份验证,但我还需要传递用户名和密码以及网络/域信息。
当我尝试执行此操作时,我收到“用户登录失败...”消息或“登录来自不受信任的域,不能用于 Windows 身份验证”,集成安全性=SSPI。
有一些关于 Windows 模拟的东西,但我无法掌握它在这里的工作原理。
如果可能的话,更改需要几乎完全由我来完成,因为托管公司非常...挑剔...关于对其环境或设置进行任何更改。
我呼吁互联网的智慧来寻求答案!
额外的事实: SQL Server 2008、Windows 7、Microsoft Visual Studio 2013、Windows 窗体程序
【问题讨论】:
【参考方案1】:对于 ASP.NET 有一个很好的knowledge base article,但我认为代码解决方案也适用于其他平台:
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()
'Insert your code that runs under the security context of the authenticating user here.
impersonationContext.Undo()
在里面,您可以像往常一样使用定义的 SSPI 运行连接。
【讨论】:
“User.Identity”参数引发错误。我应该如何将我从用户那里获得的域\用户名\密码分配给新身份。 @user3473944:看看这个:***.com/questions/18835134/…以上是关于使用 Windows 身份验证远程访问的 Visual Basic Sql 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章
我在服务器上的iis上的身份验证选项中去掉了匿名访问,启用了集成windows身份验证
windows远程桌面连接时,显示发生身份验证错误,给函数提供的身份无效