Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
C# IIS中的WCF:由WCF执行的基本授权_C#_Wcf_Iis_Wcf Security - Fatal编程技术网

C# IIS中的WCF:由WCF执行的基本授权

C# IIS中的WCF:由WCF执行的基本授权,c#,wcf,iis,wcf-security,C#,Wcf,Iis,Wcf Security,我是IIS中WCF服务的主机,正在使用基本授权。由于IIS正在执行授权,我的WCF服务无法判断是否允许特定用户。 不幸的是,我必须支持已启用用户名的列表。服务和元数据必须仅对列表中的用户可用,而不是对其他用户可用。这怎么可能,只使用基本授权?消息授权不是一个选项,因为我无法控制服务使用者 澄清: 我可以将Windows用户分配到该服务,从而限制对特定组的访问。我想要实现的是允许服务以编程方式限制特定用户的访问。无法使用使用UserNamePasswordValidator的简单方法,因为IIS自

我是IIS中WCF服务的主机,正在使用基本授权。由于IIS正在执行授权,我的WCF服务无法判断是否允许特定用户。 不幸的是,我必须支持已启用用户名的列表。服务和元数据必须仅对列表中的用户可用,而不是对其他用户可用。这怎么可能,只使用基本授权?消息授权不是一个选项,因为我无法控制服务使用者

澄清:
我可以将Windows用户分配到该服务,从而限制对特定组的访问。我想要实现的是允许服务以编程方式限制特定用户的访问。无法使用使用UserNamePasswordValidator的简单方法,因为IIS自己执行身份验证。

在我看来,您可能混淆了两个不同的问题:

在您的案例中使用WCF的传输安全性时,IIS将执行身份验证。这只是验证指定的用户名/密码是否是身份验证上下文(本地计算机或域)中的有效组合

但是,您要做的是使用授权来控制经过身份验证的用户是否有权访问您的服务。这是一个单独的关注点,WCF对此有控制权。您要做的是设置一个授权策略,只向您想要的用户授予对服务的访问权限

默认情况下,这将基于Windows组成员身份进行,但如果这不适合您的场景,您可以自定义在WCF级别如何进行,例如使用ASP.NET角色成员身份提供程序,甚至使用自定义角色提供程序

以下两篇文章应该为您指出正确的方向:


看一看,我认为它应该能帮助你解决这个问题。谢谢你,@Alex。我已经实现了这一点,它正在完美地工作。我正在更新我的问题,让它更清楚。这是我试图避免的漫长道路。无论如何,知道它是正确的(也是唯一的)一个是很好的。