首先,我想说我已经搜索了Google并直接在StackOverflow上搜索了这个问题的答案。似乎answer in this post不是我所追求的,因为部署方案不同。该用户正在部署Web应用程序,我正在部署桌面应用程序。
我在C#中编写了一个广泛使用Azure表存储(ATS)的桌面应用程序。桌面应用程序和ATS之间的通信使用https(Azure提供的部分服务)进行加密。这就是我直接连接到ATS而不是使用我自己的服务的原因,交换的信息由SSL保护,我不必购买证书。现在我想保护连接字符串到ATS,以便用户无法获取此信息。
我能够找到的所有场景都显示连接字符串要加密然后添加到Azure,但是,这些是针对部署到Azure的应用程序,我的应用程序部署到桌面。
我目前的解决方案相当复杂但确实有效。我目前正在使用ATS和MVC应用程序的组合将连接字符串提供回它所在的客户端,直到应用程序关闭。我希望我需要更改此体系结构,以便永远不会存储连接字符串,而是按需解密。这个ATS / MVC交换现在需要大约3/4秒,这个命中是我准备接受的,因为它只在app启动时发生一次。我知道将连接字符串保留在内存中并不是一个好习惯,但直到我能找到更好的解决方案.....
有一点需要注意,每个连接字符串都不同。我部署我的软件的每一家公司都在我的azure订阅中获得自己的ATS帐户。我这样做是为了防止任何数据污染的可能性(一个用户数据以某种方式与错误的用户相关)。因此,违规行为的损害仅限于安全受到损害的公司,而不是整个应用程序中的所有用户。
我正在寻求社区解决方案来解决这种情况。
请注意,在发布之前,我已经阅读了很多关于这个主题的内容,我读过的最有希望的文章是here,特别是名为App.config Example的部分。似乎在这种方法中,我可以使用我当前的方法来检索连接字符串(它只发生一次),然后从那时起,连接字符串在本地加密,只能由该机器解密。这可能是答案,但我不认为。