1

我有一个 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 IDand Password,但由于连接字符串只接受SQL用户,导致Login failure报错

编辑2

我向我的上级建议我们应该尝试为服务创建一个单独的应用程序池,将其设置为以 AD 用户身份运行,并允许 AD 用户作为服务登录(我在某处读过的东西)但是他们对此并不热衷,并认为这应该是“最后的手段”

4

0 回答 0