我有一个WCF服务,使用netTcpBinding和一个自定义ASP.NET成员资格提供程序(从服务器上的配置文件读取用户;将是ServiceAccounts)。传输安全性为默认值。
我使用PrincipalPermssions属性来说明此方法,用户必须担任此角色。
问题 如果PrincipalPermssions属性位于服务方法上,则成员资格提供程序似乎只会启动。
是否有一种方法可以将成员资格提供程序身份验证应用于所有服务方法,无论属性如何?
或者是否有另一种默认锁定所有服务方法的方法? - 而不仅仅是用户是有效的Windows用户。
答案 0 :(得分:0)
从编程WCF服务:
一书虽然可以应用其定义的PrincipalPermission属性 方法和类,在WCF服务类中,您只能在方法上应用它。该 原因是在WCF中,与普通类不同,服务类构造函数总是如此 无论使用何种身份验证机制,都在具有空白标识的GenericPrincipal下执行。因此,构造函数运行的标识是未经身份验证的,并且始终会失败任何类型的授权尝试(即使 客户端是角色的成员,即使不使用Windows组)
如果您正在使用可以初始化服务实例并授权调用者的会话,我建议您提供Initialize方法。