WCF安全许可证方案

时间:2011-02-24 01:40:22

标签: c# wcf security service

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

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

  1. 无需输入密码即可查看所有公司许可证。需要区分公司购买的许可证。

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

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

    我们在这里想到的是为每家公司部署一个证书。每当使用证书对该公司进行身份验证时,我们将能够在应用程序启动时显示公司许可证。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

用户身份验证与此无关,您可以使用所需的任何身份验证方案。每当用户通过身份验证(例如使用用户名/密码)时,将标记许可证。对于中央服务器(托管服务)模型,您可以使用用户身份验证来对公司进行身份验证(不向他们发出单独的数字证书)。