0

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

  1. wcf 服务应该启用互联网,但不能匿名访问方法。
  2. 还应该支持授权\
  3. 用户和角色表不符合 ASP.NET 成员资格架构
  4. 不应限制开发人员安装 IIS 并配置证书
  5. 授权用户应该只能访问他的相关信息。他应该能够删除或更新他的相关公司,但不能删除或更新其他公司。

为了实现 1 和 2,我遵循了以下链接。

Robbin Cremers 的 WCF 安全性

为了涵盖第 3 点,我提供了 MembershipProvider 和 RoleProvider 类的自定义实现,并分别覆盖了 ValidateUser 和 IsUserInRole 方法,以从我自己的模式用户和角色表中获取。

到目前为止,良好的身份验证和授权工作正常。

现在的问题是,开发人员无法安装 IIS 和配置证书,因此需要在开发模式下禁用此功能。因此实现了自定义 CodeAccessSecurityAttribute 类,该类将检查开发模式或生产并使用自定义 IPermission 或 PrincipalPermission。

[问题1]我的问题是我没有人推荐这种方法,所以有点担心这是正确的方法还是有更好的方法来处理这种情况。

[问题2] 最后与第5点有关,我需要发送某种令牌吗?最好的方法是什么?

[问题 3] Robbin Cremers 方法对性能的影响,因为对于每个服务调用,都会在“ValidateUser”和“IsUserInRole”中进行两次额外的数据库调用来进行身份验证和授权。有没有更好的办法?

对不起这个大问题。

4

1 回答 1

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

于 2012-12-17T05:23:37.847 回答