保护Azure Web角色WCF服务的最简单方法
使用最新的VS2013和Azure SDK 2.4,我在其中创建了一个Web角色和一个WCF服务。 此服务将由标准生成的.NET服务引用客户端代理使用 我正在试图找出保护WCF服务的最简单方法。我的意思是,确保身份验证的安全不能通过简单的方式进行,比如明文pwd等 关于用例的一些附加信息:保护Azure Web角色WCF服务的最简单方法,wcf,azure,azure-web-roles,Wcf,Azure,Azure Web Roles,使用最新的VS2013和Azure SDK 2.4,我在其中创建了一个Web角色和一个WCF服务。 此服务将由标准生成的.NET服务引用客户端代理使用 我正在试图找出保护WCF服务的最简单方法。我的意思是,确保身份验证的安全不能通过简单的方式进行,比如明文pwd等 关于用例的一些附加信息: 将只有一个用户 在客户端存储任何机密(如用户名/密码或证书)是完全可以的,因为客户端应用程序将在安全的地方运行 我只是想阻止公众访问我的服务。只有我的安全的地方运行客户端应用程序应该访问它,我想不多不少
- 将只有一个用户
- 在客户端存储任何机密(如用户名/密码或证书)是完全可以的,因为客户端应用程序将在安全的地方运行
- 我只是想阻止公众访问我的服务。只有我的安全的地方运行客户端应用程序应该访问它,我想不多不少
提前感谢如果您真的想限制访问,那么我将查看客户端证书。为客户端证书配置azure似乎相当复杂,需要在一篇SO文章中详细说明,因此我将向您推荐这篇博客文章,并在下面进行总结[我最近使用过它,所以我知道它是有效的] 本质上,您可以使用
makecert
[注意:您可能需要站点的官方SSL证书,并且只对客户端证书使用自签名证书。]
然后,您将站点配置为接受客户端证书-通常我会使用appcmd.exe
和启动任务,但正如博客文章指出的那样,您的站点还没有准备好,因此您需要将其添加到您的webroleOnStart
方法中[我最初实际上是沿着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(如果是自签名的),或者证书的指纹是您期望的指纹(如果只有一个)或者以上两者的组合。谢谢你的减号。除了一次点击的努力,你还有机会写一些评论吗?