3

我只是尝试使用此连接字符串将 WCF 服务移动到 Windows 身份验证

<add name="MembershipConnection" connectionString="Data Source=DBADDRESS ;Initial Catalog=aspNetMembership;Persist Security Info=True;Integrated Security=SSPI;"/>

WCF 服务托管在 IIS (2003) 中,我在“目录安全”下设置的用户是我们为此应用设置的用户,该用户在 SQL 中设置了权限。此应用程序的应用程序池设置在“网络服务”用户下运行,但在尝试使用该服务时出现此异常。

System.Data.SqlClient.SqlException:用户 'Domain\MAchineName$' 登录失败

我与我们的系统管理员交谈过,他说用户名末尾的 $ 表示如果尝试验证用户而不是机器本身,则表示机器本身。

关于为什么机器尝试进行身份验证而不是 IIS 中的用户设置的任何想法?

4

2 回答 2

5

实际上,它像宣传的那样工作:“网络服务”用户将作为任何远程连接的机器进行身份验证。从这里的 msdn 文档:

在 NetworkService 帐户的上下文中运行的服务将计算机的凭据提供给远程服务器

如果您需要特定帐户,则需要创建它并设置应用程序池以在该帐户下运行。

如果要以用户身份进行身份验证,则需要设置委派。

于 2009-08-28T20:31:29.530 回答
1

您需要配置您的服务以模拟调用者(简单的部分,例如使用[OperationBehavior(Impersonation = ImpersonationOption.Required)]),然后您需要设置 IIS 以进行约束委派。看

于 2009-08-28T20:30:56.710 回答