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

保护Azure Web角色WCF服务的最简单方法,wcf,azure,azure-web-roles,Wcf,Azure,Azure Web Roles,使用最新的VS2013和Azure SDK 2.4,我在其中创建了一个Web角色和一个WCF服务。 此服务将由标准生成的.NET服务引用客户端代理使用 我正在试图找出保护WCF服务的最简单方法。我的意思是,确保身份验证的安全不能通过简单的方式进行,比如明文pwd等 关于用例的一些附加信息: 将只有一个用户 在客户端存储任何机密(如用户名/密码或证书)是完全可以的,因为客户端应用程序将在安全的地方运行 我只是想阻止公众访问我的服务。只有我的安全的地方运行客户端应用程序应该访问它,我想不多不少

使用最新的VS2013和Azure SDK 2.4,我在其中创建了一个Web角色和一个WCF服务。 此服务将由标准生成的.NET服务引用客户端代理使用

我正在试图找出保护WCF服务的最简单方法。我的意思是,确保身份验证的安全不能通过简单的方式进行,比如明文pwd等

关于用例的一些附加信息:

  • 将只有一个用户
  • 在客户端存储任何机密(如用户名/密码或证书)是完全可以的,因为客户端应用程序将在安全的地方运行
  • 我只是想阻止公众访问我的服务。只有我的安全的地方运行客户端应用程序应该访问它,我想不多不少
所以我在网上搜索,读得越多,我就越困惑,对我认为不需要的选项和可能性不知所措。在搜索客户机证书时,我发现带有服务器端临时证书等的过度复杂的联邦身份验证方法,我不确定我的简单用例需要什么

谢谢你的帮助。
提前感谢

如果您真的想限制访问,那么我将查看客户端证书。为客户端证书配置azure似乎相当复杂,需要在一篇SO文章中详细说明,因此我将向您推荐这篇博客文章,并在下面进行总结[我最近使用过它,所以我知道它是有效的]

本质上,您可以使用
makecert
[注意:您可能需要站点的官方SSL证书,并且只对客户端证书使用自签名证书。]

然后,您将站点配置为接受客户端证书-通常我会使用
appcmd.exe
和启动任务,但正如博客文章指出的那样,您的站点还没有准备好,因此您需要将其添加到您的webrole
OnStart
方法中[我最初实际上是沿着
appcmd.exe
路径走的,非常困惑]

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(如果是自签名的),或者证书的指纹是您期望的指纹(如果只有一个)或者以上两者的组合。

谢谢你的减号。除了一次点击的努力,你还有机会写一些评论吗?