2011-02-24 90 views
1

我们正在尝试为我们的案例构建最佳安全方案。WCF安全许可证方案

一家公司可以将我们的软件安装在多台电脑上。一家公司可以购买可以在员工之间共享的多个许可证。每当一位员工想要使用我们的软件时,他/她将能够看到弹出屏幕,其中显示了公司已购买的所有许可证。然后,如果使用许可证,员工将能够看到谁在使用它。

  1. 为了查看所有公司许可证,不必输入密码。有必要区分公司购买的许可证。

  2. 当用户想要使用许可证(使用应用程序)时,他必须输入自己的密码。

WPF应用程序和服务器之间的连接将使用WCF服务完成。必须有某种令牌可以检查每隔5分钟是否可以连接到服务器,否则应用程序将关闭。

我们在这里想到的是为每个公司部署一个证书。无论何时该公司将通过证书进行身份验证,只要应用程序启动,我们就可以显示公司许可证。

然后,当用户想要打开应用程序时,他将选择一个许可证,并提示密码框。另一个身份验证将使用SQLMembershipProvider完成。

是否可以实施?请告诉我们你的想法。

+0

所有这些当然都是可能的......但更大的问题是您是否愿意实施这样的系统。考虑一下您的许可证服务器或公司在短时间内(例如15分钟,甚至)失去互联网访问的情况。然后会发生什么?还有很多其他可能的情况,这只是合法的情况。 – 2011-02-24 05:02:39

回答

1

您还没有告诉服务器托管在内部或中心位置。需要的是未命名的许可证来跟踪并发用户(或并发会话,即同一用户可以使用来自多台计算机的应用程序)。这是我为内部部署服务器所做的概述:

  • 对于每个公司,创建一个许可证 文件。它可以像xml 文件一样简单,该文件包含许可证号 ,有效日期,公司 标识符(&其他信息)等数据。 重要的是使用您的私钥加密 内容。您还应该存储散列以检查是否存在篡改
  • 将授予每个公司将许可证文件放置在其配置位置的服务器上。许可证交付可以是手动(电子邮件/网络下载)或自动(提供注册码以下载许可证)
  • 服务器代码将使用您的公钥读取许可证并应用许可规则。
  • 对于集中托管的服务器,大纲类似,但许可证存储将在您的控制之下,因此不需要加密该数据。然而,重要的是向每个公司颁发一些标识符令牌(比如数字证书),以便您可以跟踪正确的公司。

用户身份验证与此无关,您可以使用任何您需要的身份验证方案。无论何时用户通过身份验证(例如使用用户名/密码),许可证都将被标记为已消耗。对于中央服务器(托管服务)模型,您可以使用用户身份验证来验证公司(不向其发布单独的数字证书)。