保护Azure Web角色WCF服务的最简单方法

问题描述:

使用最新的VS 2013和Azure SDK 2.4,我在其中创建了一个Web角色和一个WCF服务。 此服务将由标准生成的.NET服务参考客户端代理使用。保护Azure Web角色WCF服务的最简单方法

我想弄清楚什么是最简单的方式来保护此WCF服务。我的意思是确保认证不能被黑客攻破简单的方法,比如明文PWD等

有关使用情况下,一些额外的信息:

  • 将有只有一个用户
  • 这是完全确定在客户端存储任何秘密(如用户名/密码或证书),因为客户端应用程序将在安全的地方运行
  • 我只是想阻止我的服务被公众访问。只有我的安全的地方运行客户端应用程序应该访问它,我不想再少。

因此,我在网上搜索,更多我看了更多我困惑和不知所措的选项和可能性我不需要我想。当搜索客户端证书时,我发现服务器端临时证书等过度复杂的联合身份验证方法等等,我不确定我的简单用例需要什么。

任何帮助表示赞赏。 在此先感谢

+0

谢谢你的减号。除了一次点击的努力,您已经投入了一些机会写下一些评论? – 2014-10-28 00:01:12

如果你真的想限制访问,那么我会看客户端证书。客户端证书配置蔚蓝似乎很复杂,在一个单一的细节,这样张贴,所以我会向您推荐这个博客帖子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(如果自签名)或证书的指纹是你期望的(如果只有一个)或上述的组合。