我在IIS中托管WCF服务,我正在使用基本授权。当IIS执行授权时,我的WCF服务无法判断是否允许特定用户。 不幸的是,我必须支持已启用的用户名列表。服务和元数据必须仅适用于列表中的用户,而不能用于其他用户。这怎么可能,仅使用基本授权?邮件授权不是一种选择,因为我无法控制服务使用者。
澄清: 我可以将Windows用户分配给该服务,从而限制对特定组的访问。我想要实现的是允许服务以编程方式限制对特定用户的访问。使用UserNamePasswordValidator的天真方法无法使用,因为IIS正在自行执行身份验证。
答案 0 :(得分:2)
在我看来,你可能会混淆两个不同的问题:
在您使用WCF的传输安全性时,IIS将执行身份验证。这仅验证指定的用户名/密码是身份验证上下文(本地计算机或域)中的有效组合。
但是,您要执行的操作是使用授权来控制经过身份验证的用户是否可以访问您的服务。这是一个单独的问题,WCF 可以控制它。您要做的是设置授权策略,该策略仅授予您所需用户访问服务的权限。
默认情况下,这将基于Windows组成员身份完成,但如果这不适合您的方案,则可以自定义WCF级别的方式,例如使用ASP.NET角色成员资格提供程序,甚至是自定义角色提供者。
以下两篇文章应指出正确的方向: