需要帮助在Internet环境中实现WCF身份验证和授权

时间:2012-12-16 10:12:15

标签: wcf silverlight security

我需要创建一个wcf服务,该服务将通过互联网下载的silverlight应用程序使用。基本上,用户不属于任何Windows域,但凭据和角色都在数据库中维护。

  1. wcf服务应该启用互联网,但不能匿名访问方法。
  2. 还应支持授权\
  3. 用户和角色表不符合ASP.NET成员资格架构
  4. 不应限制开发人员安装IIS并配置证书
  5. 授权用户应该只能访问他的相关信息。他应该能够删除或更新他的相关公司,但不能删除其他公司。
  6. 实现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;进行身份验证和授权。还有更好的方法吗?

    抱歉这个大问题。

1 个答案:

答案 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在缓存身份验证/授权结果方面很聪明,因此不应在每次调用时产生开销。