我需要创建一个 wcf 服务,该服务将由通过 Internet 下载的 silverlight 应用程序使用。基本上,用户不是任何 Windows 域的一部分,但在数据库中维护凭据和角色。
- wcf 服务应该启用互联网,但不能匿名访问方法。
- 还应该支持授权\
- 用户和角色表不符合 ASP.NET 成员资格架构
- 不应限制开发人员安装 IIS 并配置证书
- 授权用户应该只能访问他的相关信息。他应该能够删除或更新他的相关公司,但不能删除或更新其他公司。
为了实现 1 和 2,我遵循了以下链接。
为了涵盖第 3 点,我提供了 MembershipProvider 和 RoleProvider 类的自定义实现,并分别覆盖了 ValidateUser 和 IsUserInRole 方法,以从我自己的模式用户和角色表中获取。
到目前为止,良好的身份验证和授权工作正常。
现在的问题是,开发人员无法安装 IIS 和配置证书,因此需要在开发模式下禁用此功能。因此实现了自定义 CodeAccessSecurityAttribute 类,该类将检查开发模式或生产并使用自定义 IPermission 或 PrincipalPermission。
[问题1]我的问题是我没有人推荐这种方法,所以有点担心这是正确的方法还是有更好的方法来处理这种情况。
[问题2] 最后与第5点有关,我需要发送某种令牌吗?最好的方法是什么?
[问题 3] Robbin Cremers 方法对性能的影响,因为对于每个服务调用,都会在“ValidateUser”和“IsUserInRole”中进行两次额外的数据库调用来进行身份验证和授权。有没有更好的办法?
对不起这个大问题。