为Azure webapp上托管的SOAP WCF添加简单的安全性

我在Azure应用程序上托管了一个SOAP WCF。 此服务仅由服务器使用,不包含UI。 我只需要一个服务帐户来授权我的WCF。 我不能使用oauth,因为它是SOAP。 我已经阅读了一些关于ACS的内容,但在我的案例中似乎有些过分,因为我只想使用一个帐户来保护我的WCF。 我的想法是,我将利用Azure AD在那里建立一个服务帐户并使用它来保护服务。

这甚至可以在Web应用程序上使用,还是需要将其托管在Web角色上? 在任何情况下,我如何根据我的前提在我的WCF上实现简单的安全性?

详细的答案示例

经过一般性讨论后,这里有一个建立传输安全性+简单密码的详细示例(在IIS中,内部或Azure我刚测试过)

这很简单
– 没有基于身份的角色,没有声明或程序控制。
– 身份是硬编码的。
– 不使用更强大的消息安全性(中间的人)。
– 传输安全性是最小的,因为基本身份validation没有得到证实。

该安全方案实施起来很短

1.创建具有传输安全性的Web服务

              

2.声明查找Basic-Auth的模块

      

3.模块的实施:

 public class UserNameModuleAuthenticator : IHttpModule{ ... public void OnAuthenticateRequest(object source, EventArgs eventArgs){ HttpApplication app = (HttpApplication)source; string authStr = app.Request.Headers["Authorization"]; string username = ...; // from header string password = ...; // from header if (username == "gooduser" && password == "password") { app.Context.User = new GenericPrincipal(new GenericIdentity(username, "Custom Provider"), null); } else { DenyAccess(app); return; } 

4配置客户端以传递基本身份validation

               

5.在客户端传递**凭据到服务器**

 HelloServiceClient client = new HelloServiceClient("basicEndpoint", new EndpointAddress("https://testsecurewebservice.azurewebsites.net/HelloService.svc")); client.ClientCredentials.UserName.UserName = userName; client.ClientCredentials.UserName.Password = password; String msg = client.SayHello(userName); 

可能的扩展

  • 创建/管理一些用户(使用ASP.Net Provider或自定义基础)
  • 有一些角色
  • 对以下方法设置一些声明性权限:
 [PrincipalPermission(SecurityAction.Demand, Role = "Manager")] 

完整的解决方案: http : //1drv.ms/1Q5j9w0

问候

对于身份validation ,您可以使用:

  • 传递{login,password}的用户名认证。
  • 用于标识客户端的X509机制(需要在客户端上部署证书)
  • 自定义validation

对于Transfer安全性 ,您可以使用:

  • 使用服务器端安装的证书进行消息安全
  • 传输安全(HTTPS)

但强烈建议您使用一些消息安全性而不是传输安全性。 传输(Https / SSL)可以在中间受到攻击(控制路由器)。

消息安全性缺点是您必须在服务器上安装证书

在Web角色设置证书容易得多,您可以在Role.OnStart方法中进行设置

  • 如果您热衷于Web应用程序,请使用以下链接来提供带有用户名的传输安全性
    (您应该跳过使用ASP.NET MemberShip / Role提供程序的部分,因为您需要单个用户并且数据库是额外的工作):

https://msdn.microsoft.com/en-us/library/ff649647.aspx

  • 如果您热衷于邮件安全性,则应该转到Web角色并使用证书来确保邮件安全。

自定义身份validation链接与邮件安全性:
http://www.codeproject.com/Articles/33872/Custom-Authorization-in-WCF

问候