ASP.NET - > WCF服务需要Windows身份验证

时间:2009-01-28 18:03:47

标签: asp.net wcf authentication authorization windows-authentication

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

如果WCF服务(以及使用当前凭据需要与之交谈的任何内容)与ASP> NET前端位于同一个框中,您可能会没问题

...否则您可能会遇到“Double Hop身份验证”问题。基本上,Windows身份验证将在Web服务器上获得“模拟”身份,这在本地很好,但它没有权限从Web服务器进行身份验证。要做到这一点,你需要一个“委托”身份。

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

因此,如果您说“Windows身份验证”,那么您的确意味着每个人(客户端和所有服务器)都位于同一个AD域中,您可以这样做。

答案 1 :(得分: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身份验证 - 已启用

  4. 这对我有用。