我正在使用企业库和AZ Man将用户身份验证到我的winforms应用程序中。我已经使用XML文件正常运行了代码。我不明白如何安全地部署应用程序。
在app.config中有一个XML文件的路径。似乎没有任何东西阻止用户在azman.msc中打开这个XML文件并给自己提供他们不应该访问的文件。
如果我们将XML文件放在服务器上并使其只读给用户,则没有什么能阻止用户在本地复制所有内容并将app.config指针更改为他们可以写入的本地文件。
这里似乎有一些重要的东西,但我一直在阅读,无法弄明白。
答案 0 :(得分:1)
我认为你可能想要做的是在Active Directory中创建授权存储而不是xml文件。您可以找到有关如何执行此操作的说明here。这是有趣的一点:
使用授权商店
创建授权存储
- 打开授权管理器,右键单击“授权管理器”,单击“确定” 选项,选择开发人员模式,然后单击确定。
- 在 授权管理器控制台,右键单击授权管理器, 单击“新建”,然后单击“授权存储”。
- 选择“有效” 目录或XML文件作为商店类型。
- 在中输入完整的商店名称 “商店名称”框,或使用“位置”按钮选择位置 使用“新建授权存储”对话框。
- 如果是活跃的 目录授权存储,使用LDAP名称 - 例如 CN = myStore,CN =程序数据,OU =授权,DN = myCompany,DN = com。如果它 是一个XML授权存储,使用将要的路径和文件名 在运行时有效 - 例如C:\ AuthStores \ MyStore.xml。
- 键入a “描述”框中新授权存储的描述,以及 然后单击“确定”。
醇>注意:只能在开发人员模式下创建授权存储。看到 “设置授权管理器选项”部分 有关设置开发者模式的说明的文章。
在Active Directory中创建商店后,您可以限制谁具有对AD和AzMan商店的写入权限。如果需要,您还可以在SQL中创建商店。
您拥有的另一个选项是在app.config中加密连接字符串到AzMan。由于您使用的是Enterprise Library,我认为您可以选择加密整个AzMan xml文件。这些都不是完全防弹的,但是您的用户必须经历很多的麻烦来破解您的应用程序。但是,如果您的用户愿意花费很多精力来闯入您的计划,那么您就没有编程问题 - 您需要解决人事问题(无论如何,我的意见)。
This看起来是加密app.config部分的一个很好的演练。从本质上讲,我认为您的想法是在工作站上创建一个新的RSA密钥,并使用该密钥加密app.config部分。然后将该密钥导入服务器并授予用户对该密钥的读取权限。我确信如果你使用谷歌(或在stackoverflow上搜索),还有很多其他的加密解决方案。