1

让 ASP.NET Web 应用程序与 WCF 服务通信的身份验证选项有哪些?

场景:

  1. 用户在 ASP.NET 表单中输入他们的用户名和密码。
  2. ASP.NET 需要将此传递给 WCF 以对用户进行身份验证。
  3. 如果通过身份验证,用户可以在网站上执行操作。每个操作都需要将数据发送到不同的 WCF 操作。WCF 需要知道每个呼叫中​​的用户是谁。

最简单的解决方案是将用户名/密码存储在 ASP.NET 会话状态中。但是,这是不安全的,因为密码存储在服务器的内存中。

我宁愿不使用证书对服务的 ASP.NET“客户端”进行身份验证,因为除了 ASP.NET 之外,此 WCF 可能会被另一个客户端使用。

到目前为止,我看到的最好的建议是使用 Windows Identity Foundation (WIF)。看来这需要一个 STS。根据MSDN,微软似乎不建议通过 Visual Studio 设置 STS。无法保证 STS 在部署环境中可用,因为某些环境可能使用 Active Directory,而其他环境可能具有自定义用户存储。是否可以设置自定义 STS 以针对自定义用户存储进行身份验证?我很难找到有关执行此操作的文档。

除了使用 WIF,还有其他选择吗?如果自定义 WCF 身份验证服务返回可用于针对主要 WCF 服务进行身份验证的令牌,那又如何呢?

4

1 回答 1

1

执行此操作的标准方法是将 WIF 与 Microsoft 的 STS viz 结合使用。Active Directory 联合服务 v2.0 (ADFS)。

有许多自定义 STS 可用,例如Identity Server。这使用 SQL DB 作为属性存储。它是开源的,因此可以根据您的需要进行调整。

您可以创建自己的自定义属性存储:AD FS 2.0 属性存储概述

TechNet WIF/WCF:WIF 和 WCF

于 2012-05-06T20:02:14.090 回答