我有一个WCF Web服务,它应该始终使用特定的AD帐户,该帐户已被授予对数据库的访问权限,以执行SQL事务。我读了几篇文章,但我显然正在做/理解错误,因为我没有按照我想要的方式工作。
我认为该Web服务应模拟AD用户,因此我在Web服务web.config中启用了模拟:
<identity userName="dmn\wsusr" password="p@55w0rd" impersonate="true"/>
然后,由于我在技术上使用Windows用户连接到SQL,我按如下方式设置连接字符串(“Integrated security=true;
”用于Windows身份验证,对吧?):
Data Source=SQLSVR\INSTNC; Failover Partner=SQLSVR\INSTNC2; Initial Catalog=DB; Integrated Security=true;
为了测试连接,我将一些值插入表中。我要插入的表中的一列具有以下定义:
[LogUser] VARCHAR(75) NOT NULL DEFAULT USER
因此,理论上,打开连接的用户的AD用户名将自动插入到列中。不幸的是,该列每次都包含我自己的AD用户名。
我正在通过使用Windows身份验证的网站测试Web服务,因此我假设这会在问题的原因中发挥作用。但是应该忽略网站身份验证,因为这将是一个外部可访问的Web服务,SQL事务永远不应该依赖于客户端和Web服务之间的身份验证。
谢谢!
修改
我也尝试过:
Trusted_connection
添加到连接字符串,但它产生与上面相同的结果。User ID
和Password
,但由于连接字符串仅接受SQL用户,因此导致Login failure
错误EDIT2
我向上级建议我们应该尝试为服务创建单独的应用程序池的方法,将其设置为以AD用户身份运行,并允许AD用户作为服务登录(我读过的内容)在某处)但他们不热衷于此并认为它应该是“最后的手段”