【问题标题】:Windows authentication in WCF & IIS to access a databaseWCF 和 IIS 中的 Windows 身份验证以访问数据库
【发布时间】:2011-03-27 10:17:10
【问题描述】:

我有一个 WCF 服务,我想用它来访问一个 SQL 数据库(目前通过 Linq2SQL),但实时 IIS 环境中的受信任安全性似乎没有使用正确的凭据 - 我试图遵循这里的相关帖子,但似乎不太明白。如果有人能发现我的错误,我将不胜感激......

在 Endpoint 配置中,我已将其设置为使用 BasicHttpBinding,配置如下

<basicHttpBinding>
  <binding name="authHttpBinding">
    <security mode="TransportCredentialOnly">
      <transport clientCredentialType="Windows"/>
    </security>
  </binding>
</basicHttpBinding>

我已将 system.web 设置为:

<authentication mode="Windows" />
<identity impersonate="true" />

在 IIS 服务器上,我添加了一个新的 AppPool,将 Identity 设置为 ApplicationPoolIdentity,并将 ManagedPipeLine 设置为 Integrated。在实际的 Web 应用程序中,设置为我的新 AppPool,我已将 Windows 身份验证设置为“启用”,并尝试启用和禁用 ASP.Net 模拟

当我尝试调用 WCF 服务时,它会运行,但是当它通过 Linq2SQL(使用 Trusted Security 对远程服务器上的数据库)实际调用存储过程时,我收到以下错误: 用户 'domain\ machinename$' 登录失败 - 机器名称末尾带有美元符号

这在我看来很像我未能委派正确的身份(我可以通过 Management Studio 访问实际的数据库。

【问题讨论】:

  • 同样的问题。如果你记得你是如何解决的,请告诉我。

标签: asp.net wcf iis impersonation windows-identity


【解决方案1】:

是的,这是可能的。在这种情况下,您需要确保您的安全设置设置为 Windows(这是默认设置)并确保您的服务已准备好进行模拟。您可以以编程方式或声明方式执行此操作。

您需要通过将适当的 ImpersonationOption 属性设置为 required 或 allowed 来指示 WCF 允许模拟所需的服务/方法。

[OperationBehavior(Impersonation=ImpersonationOption.Allowed)]

因为您要通过网络访问资源,所以您需要确保将模拟级别设置为委托,而不是模拟,除非您访问的资源是本地资源。这是在客户端端点行为级别设置的。

 <clientCredentials>
        <windows allowedImpersonationLevel="[Impersonation or Delegate]"/>
 </clientCredentials>

【讨论】:

  • 嗨,史蒂夫——刚刚结束假期,我会告诉你结果如何。我想我错过了第一个设置......干杯
【解决方案2】:

访问您的数据库与您的 WCF 安全设置没有任何关系。我将从您的绑定配置中删除安全设置以及 system.web 中的模拟设置。你不应该需要这些。

检查配置中的连接字符串设置,并确保如果您使用 Windows 集成安全性来访问您的数据库,则您对数据库具有正确的权限。 IIS 将尝试使用在应用程序池中配置的身份连接到您的数据库,因此您需要确保该帐户具有访问权限。如果您有指定用户,请确保您的凭据设置正确。 ConnectionStrings.com 有各种如何正确设置的示例。

HTH。

史蒂夫

【讨论】:

  • 嗨,史蒂夫,我听到了你的意思,但我对这个应用程序的要求是使用发出请求的用户的身份连接到数据库,而不是来自 appPool 的共享身份。那可能吗?我之前一直使用 appPool 标识,但是这个项目有这个要求(所以它可能比 WCF 更像是一个 IIS)
猜你喜欢
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 2021-07-11
  • 1970-01-01
相关资源
最近更新 更多