2

我的任务是构建一个基本的管理应用程序。该应用程序需要一个 ASP.NET 前端,它使用 WCF 与许多后端服务通信。

一项要求是应用程序的用户使用 Windows 身份验证进行身份验证。如果应用程序逻辑包含在 ASP.NET 应用程序中,我可以做到这一点,但我不知道如何在后端 WCF 服务中执行身份验证?

  • 是否可以将凭据传递给 WCF 服务并让它执行身份验证?
4

2 回答 2

3

这取决于...(请注意,其中大部分基于 HTTP/IIS 作为传输,如果使用 TCP 或其他绑定可能会有所不同)

WCF 本身可以设置为使用当前运行的凭据使用传输或消息安全性。

如果 WCF 服务(以及它需要使用当前凭据与之通信的任何内容)与 ASP>NET 前端在同一个框上,您可能会没事

...否则您可能会遇到“双跳认证”问题。基本上,windows auth 将在网络服务器上获得一个“模拟”身份,这在本地很好,但它没有权限从网络服务器进行身份验证。为此,您需要一个“委托”身份。

我知道用于获取委派身份的选项是 Kerberos 和基本身份验证。

因此,如果当您说“Windows 身份验证”时,您实际上是指每个人(客户端和所有服务器)都在同一个 AD 域上,您可能没问题。

于 2009-01-28T19:00:34.873 回答
0

我有一个使用 Windows 身份验证的 ASP.NET 站点,它需要调用启用了匿名和 Windows 身份验证的 WCF 服务。我遇到的问题是将 Windows 凭据传递给 WCF 服务。

为此,我做了以下

  1. 在站点的 Web.config 中,我确保我的 WCF 绑定使用了 Windows 身份验证:security mode="TransportCredentialOnly"

    传输 clientCredentialType="Windows"

  2. 在 IIS 中,我使用 .Net 4 和经典托管管道模式创建了一个应用程序池

  3. 在我的网站身份验证设置中

    匿名身份验证 - 已禁用

    ASP.NET 模拟 - 已启用

    Windows 身份验证 - 已启用

这对我有用。

于 2013-10-21T11:26:59.813 回答