我需要创建一个wcf服务,该服务将通过互联网下载的silverlight应用程序使用。基本上,用户不属于任何Windows域,但凭据和角色都在数据库中维护。
实现1& 2,我跟着下面的链接。
WCF security by Robbin Cremers
为了覆盖第3点,我提供了MembershipProvider和RoleProvider类的自定义实现,并分别重写了ValidateUser和IsUserInRole方法,以从我自己的架构用户和角色表中获取。
到目前为止,良好的身份验证和授权工作正常。
现在问题是,开发人员无法安装IIS并配置了证书,因此需要在开发模式下禁用此功能。因此实现了自定义CodeAccessSecurityAttribute类,它将检查开发模式或生产并使用自定义IPermission或PrincipalPermission。
<问题1 [问题1]我的问题是,我不会在任何人推荐这种方法的地方,所以小心翼翼地担心这是否是正确的方法,或者有更好的方法来处理这种情况。 <问题2]问题2最后与第5点有关,我是否需要发送某种令牌?对此最好的方法是什么? <问题3]问题3在Robbin Cremers方法中的性能影响,因为对于每个服务调用,将在&#34; ValidateUser&#34;中进行两次额外的数据库调用。和&#34; IsUserInRole&#34;进行身份验证和授权。还有更好的方法吗?抱歉这个大问题。
答案 0 :(得分:0)
根据您的方案说明,一旦您创建并连接了自定义成员资格/角色提供程序,您就不需要Message Security。相反,http://msdn.microsoft.com/en-us/library/dd560702(v=vs.95).aspx中描述的标准方法可以正常工作(或http://msdn.microsoft.com/en-us/library/dd560704(v=vs.95).aspx如果您希望用户通过Silverlight应用程序而不是通过常规网页登录)。浏览器然后自动处理任何所需的令牌发送(通过cookie),我猜测ASP.NET在缓存身份验证/授权结果方面很聪明,因此不应在每次调用时产生开销。