保护Azure Web角色WCF服务的最简单方法
问题描述:
使用最新的VS 2013和Azure SDK 2.4,我在其中创建了一个Web角色和一个WCF服务。 此服务将由标准生成的.NET服务参考客户端代理使用。保护Azure Web角色WCF服务的最简单方法
我想弄清楚什么是最简单的方式来保护此WCF服务。我的意思是确保认证不能被黑客攻破简单的方法,比如明文PWD等
有关使用情况下,一些额外的信息:
- 将有只有一个用户
- 这是完全确定在客户端存储任何秘密(如用户名/密码或证书),因为客户端应用程序将在安全的地方运行
- 我只是想阻止我的服务被公众访问。只有我的安全的地方运行客户端应用程序应该访问它,我不想再少。
因此,我在网上搜索,更多我看了更多我困惑和不知所措的选项和可能性我不需要我想。当搜索客户端证书时,我发现服务器端临时证书等过度复杂的联合身份验证方法等等,我不确定我的简单用例需要什么。
任何帮助表示赞赏。 在此先感谢
答
如果你真的想限制访问,那么我会看客户端证书。客户端证书配置蔚蓝似乎很复杂,在一个单一的细节,这样张贴,所以我会向您推荐这个博客帖子client-certificates-in-windows-azure和我将在下面总结[我这个最近使用过的自己,所以我知道它的工作原理]
本质您可以使用makecert
制作自己的证书[注意:您可能需要为您的站点提供官方SSL证书,并且仅使用自签名证书。]
然后,您将站点配置为接受客户端证书 - D使用appcmd.exe
和一个启动任务,但作为博客文章指出你的网站还没有准备好,所以你需要将此添加到你的卷轴OnStart
方法[我实际上最初去了appcmd.exe
路径,并且是v不知所措]。
using (var serverManager = new ServerManager())
{
try
{
var siteName = RoleEnvironment.CurrentRoleInstance.Id + "_Web";
var config = serverManager.GetApplicationHostConfiguration();
var accessSection = config.GetSection("system.webServer/security/access", siteName);
accessSection["sslFlags"] = @"SslNegotiateCert";
serverManager.CommitChanges();
}
catch (Exception ex)
{
...
}
}
在CertificateAuthHandler
您可以用比验证证书,如果你想(我建议)客户端证书发送是从预期的CA(如果自签名)或证书的指纹是你期望的(如果只有一个)或上述的组合。
谢谢你的减号。除了一次点击的努力,您已经投入了一些机会写下一些评论? – 2014-10-28 00:01:12