ASP.NET和WCF身份验证选项

时间:2012-05-04 18:58:00

标签: asp.net wcf authentication wif sts-securitytokenservice

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

情景:

  1. 用户在ASP.NET表单中输入用户名和密码。
  2. ASP.NET需要将此传递给WCF以对用户进行身份验证。
  3. 如果经过身份验证,则用户可以在网站上执行操作。每个操作都需要将数据发送到不同的WCF操作。 WCF需要知道每次通话时用户是谁。
  4. 最简单的解决方案是将用户名/密码存储在ASP.NET会话状态中。但是,这是不安全的,因为密码存储在服务器的内存中。

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

    到目前为止,我看到的最佳建议是使用Windows Identity Foundation(WIF)。看来这需要STS。根据{{​​3}},Microsoft似乎不建议通过Visual Studio设置STS。由于某些环境可能使用Active Directory而其他环境可能具有自定义用户存储,因此无法保证部署环境中的STS可用。是否可以设置自定义STS以对自定义用户存储进行身份验证?我在找到这方面的文档时遇到了麻烦。

    除了使用WIF之外还有其他选择吗?那些返回可用于对主WCF服务进行身份验证的令牌的自定义WCF身份验证服务呢?

1 个答案:

答案 0 :(得分:1)

这样做的标准方法是使用WIF和Microsoft的STS即可。 Active Directory联合身份验证服务v2.0(ADFS)。

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

您可以创建自己的自定义属性商店:AD FS 2.0 Attribute Store Overview

TechNet WIF / WCF:WIF and WCF