使用最新的VS 2013和Azure SDK 2.4,我在其中创建了Web角色和WCF服务。 此服务将由标准生成的.NET服务引用客户端代理使用。
我正在试图找出保护此WCF服务的最简单方法。我的意思是确保身份验证不能被轻易破解,比如明文pwd等。
有关用例的一些其他信息:
所以我在谷歌搜索网络,而且我阅读的更多,我对我认为不需要的选项和可能性感到困惑和不知所措。在搜索客户端证书时,我发现过于复杂的联合身份验证方法与服务器端临时证书等,我不确定我的简单用例需要。
任何帮助表示赞赏。 提前致谢
答案 0 :(得分:1)
如果你真的想限制访问,那么我会查看客户端证书。在单个SO帖子中配置azure用于客户端证书似乎相当复杂,所以我将引用您参考此博客文章client-certificates-in-windows-azure,我将在下面总结[我最近自己使用了这个,所以我知道它有效]
从本质上讲,您可以使用makecert
创建自己的证书[注意:您可能需要为您的站点提供正式的SSL证书,并且只能使用自签名的客户端证书。]
然后,您将站点配置为接受客户端证书 - 通常我会使用appcmd.exe
和启动任务,但正如博客文章指出您的站点尚未就绪,因此您需要将其添加到您的webrole { {1}}方法[我实际上最初走了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)
{
...
}
}
中,您可以验证证书,如果您希望(我建议)发送的客户端证书来自您预期的CA(如果是自签名的),或者证书的指纹是您期望的那个(如果只有一个)或上述的组合。