连接字符串中的集成安全性

时间:2009-08-28 20:19:32

标签: .net sql wcf iis windows-authentication

我只是尝试使用此连接字符串

将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中的用户设置的任何想法?

2 个答案:

答案 0 :(得分:4)

实际上,它正如所宣传的那样工作:“网络服务”用户将作为任何远程连接的机器进行身份验证。来自msdn docs here

  

在上下文中运行的服务   NetworkService帐户显示   计算机的远程凭据   服务器

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

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

答案 1 :(得分:1)

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