Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET和WCF身份验证选项_Asp.net_Wcf_Authentication_Wif_Sts Securitytokenservice - Fatal编程技术网

ASP.NET和WCF身份验证选项

ASP.NET和WCF身份验证选项,asp.net,wcf,authentication,wif,sts-securitytokenservice,Asp.net,Wcf,Authentication,Wif,Sts Securitytokenservice,让ASP.NET web应用程序与WCF服务通信的身份验证选项有哪些 情景: 用户在ASP.NET表单中输入用户名和密码 ASP.NET需要将其传递给WCF以对用户进行身份验证 如果经过身份验证,用户可以在网站上执行操作。每个操作都需要向不同的WCF操作发送数据。WCF需要知道每个通话中的用户是谁 最简单的解决方案是将用户名/密码存储在ASP.NET会话状态。但是,这是不安全的,因为密码存储在服务器的内存中 我不希望使用证书对服务的ASP.NET“客户端”进行身份验证,因为除了ASP.NET之外

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

情景:

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

    我不希望使用证书对服务的ASP.NET“客户端”进行身份验证,因为除了ASP.NET之外,该WCF还可能被其他客户端使用

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


    除了使用WIF,还有其他选择吗?如果自定义WCF身份验证服务返回可用于针对主WCF服务进行身份验证的令牌,该服务会怎么样?

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

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

    您可以创建自己的自定义属性存储:


    TechNet WIF/WCF:

    实现这一点的标准方法是将WIF与微软的STS结合使用。Active Directory联合身份验证服务v2.0(ADFS)

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

    您可以创建自己的自定义属性存储:

    TechNet WIF/WCF: