我的任务是构建一个基本的管理应用程序。 该应用程序需要一个 ASP.NET 前端,该前端使用 WCF 与许多后端服务进行通信。
一项要求是应用程序的用户使用 Windows 身份验证进行身份验证。如果应用程序逻辑包含在 ASP.NET 应用程序中,我可以毫无问题地执行此操作,但我不知道如何在后端 WCF 服务中执行身份验证?
- 是否可以将凭据传递给 WCF 服务并让它执行身份验证?
最佳答案
这取决于...(请注意,其中大部分基于 HTTP/IIS 作为传输,如果使用 TCP 或其他绑定(bind),可能会有所不同)
WCF 本身可以设置为使用当前运行的凭据来使用传输或消息安全性。
如果 WCF 服务(以及它需要使用当前凭据进行通信的任何内容)与 ASP>NET 前端位于同一个机器上,您可能会没问题
...否则您可能会遇到“Double Hop身份验证”麻烦。基本上,Windows 身份验证将在 Web 服务器上获得“模拟”身份,这在本地很好,但它没有从 Web 服务器进行身份验证的权限。为此,您需要一个“委托(delegate)”身份。
据我所知,用于获取委托(delegate)身份的选项是 Kerberos 和基本身份验证。
因此,如果您说“Windows 身份验证”时,您的真正意思是每个人(客户端和所有服务器)都位于同一个 AD 域中,那么您可能没问题。
关于ASP.NET -> WCF 服务需要 Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488676/