我有一个 SL4 应用程序,它使用 WCF 与后端 SQL Server 2008 数据库进行通信。由于调用的存储过程需要数据库权限,其中一项 WCF 服务需要使用专用系统帐户连接到数据库。我尝试在服务代码中使用模拟来实现解决方案,例如
int result = LogonUser(userName, domain, password,
LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, out _token);
if (result > 0)
{
ImpersonateLoggedOnUser(_token);
//Code here to call NHibernate data access code
}
我的该服务的连接字符串是:
<add name="MyConnection" connectionString="Data Source=servername\instance;Initial Catalog=MyDatabase;Integrated Security=SSPI" providerName="System.Data.SqlClient"/>
但是,数据访问例程仍然失败,并显示以下消息:
用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。
数据库连接中的模拟被忽略。有任何想法吗?
Change LOGON32_LOGON_NETWORK
to LOGON32_LOGON_NETWORK_CLEARTEXT
在你的电话中LogonUser
.
这会将登录凭据缓存在本地安全提供程序中,这应该能够与 SQL Server 成功进行 SSPI 握手。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)