Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
用于下游WCF身份验证和授权的ASP.NET表单身份验证_Asp.net_Wcf_Forms Authentication_Wcf Security - Fatal编程技术网

用于下游WCF身份验证和授权的ASP.NET表单身份验证

用于下游WCF身份验证和授权的ASP.NET表单身份验证,asp.net,wcf,forms-authentication,wcf-security,Asp.net,Wcf,Forms Authentication,Wcf Security,开发环境:Windows 7 Enterprise with 使用Visual Studio 2010的.NET 4.0 生产环境:带IIS 7.0的Windows 2008 Server 我正试图找出针对运行在ASP.NETWeb应用程序的独立安全区域中的独立计算机上的WCF服务进行身份验证和授权的最佳方法 用户根据存储在数据库中的凭据使用用户名和密码登录。我们没有实现成员资格提供程序,但是当用户的凭据通过时,我们手动创建一个带有用户id的Forms Auth票证 我确实使用了自己的角色提供程

开发环境:Windows 7 Enterprise with 使用Visual Studio 2010的.NET 4.0

生产环境:带IIS 7.0的Windows 2008 Server

我正试图找出针对运行在ASP.NETWeb应用程序的独立安全区域中的独立计算机上的WCF服务进行身份验证和授权的最佳方法

用户根据存储在数据库中的凭据使用用户名和密码登录。我们没有实现成员资格提供程序,但是当用户的凭据通过时,我们手动创建一个带有用户id的Forms Auth票证

我确实使用了自己的角色提供程序来实现RoleProvider。因此,我们在ASP.NET web应用程序上有“标准”ASP.NET角色和forms auth票证

我需要做的是以某种方式将这些凭证传递给另一台机器上的WCF服务。最初,我想我可以使用Windows身份基础并创建自定义安全令牌服务(STS)。基本上,如果用户进行身份验证,则创建一个令牌,并将基于声明的授权与用户标识一起添加到令牌中,并将其传递给WCF服务

我们目前使用的.NET远程处理服务(.NET 1.1时间范围)根本不进行身份验证或授权

这似乎有点过分了,因为可能有一种方法可以简单地将我当前拥有的信息传递给用户,因为当您创建表单身份验证票证时,我知道当前IPrinciple是使用IIdentity设置的,并且在Thread.CurrentIdentity上将“name”属性设置为用户id

我很确定IsInRole(“WhateverRole”)在这一点上也能正常工作,但所有这些都是在Web应用程序端。不会向.NET远程处理服务传递任何内容

看看这两个类:


我认为它们不是我想要的。同样,我也读过米歇尔·布斯塔曼特的书,但我真的看不到这一特定场景。当我读到有关Windows身份验证的内容时,我一直在想,需要将其绑定到一些与内部Windows安全情况相关的内部NTLM或Kerberos中。我们的用户都不是内部用户。它们完全是外部的

现在,我知道如果用户获得一个Forms Auth票证,他们基本上会得到一个有效的IPrinciple,并且应该设置角色,对吗

如果是这样,是否有办法将其传递给另一台机器上的WCF服务设置?如果我将WCF clientCredentialType设置为windows,并将serviceAuthorization principlePermissionMode设置为“UseApsNetRoles”,那么在我进行服务调用时,这些会在安全上下文中从web应用程序传递到WCF服务吗


我所能找到的任何东西都不清楚这是如何发生的。谢谢。

我想你想要的是:

这不是超级安全的,因为您实际上创建了自己的中间人攻击,但它可能足够安全,满足大多数需求

从本质上讲,这可以归结为:

  • 使用相同的MachineKey配置两台服务器
  • 从用户请求中获取FormsAuthenticationCookie
  • 将cookie附加到传出的WCF服务调用
  • 利润

  • 您是否需要WCF服务根据用户凭据进行身份验证?还是仅仅是web服务器凭据?两台服务器是否在同一个web域(而不是windows域)中?理想情况下,我希望WCF根据用户的凭据进行身份验证。它们不在同一个域中。