我目前正在设计和开发将由移动设备使用的WCF 4 RESTful服务。我特意选择了REST,因为它应该是轻量级的,JSON输出使移植客户端的解析变得简单。
该服务负责整个应用程序的移动设备部分。但是,它要求用户在使用服务之前登录。基本HTTP身份验证不是一个选项:它不安全,中间人攻击可以轻松拦截用户帐户。 SSL是一个选项,但我不知道SSL在WCF RESTful服务上的工作原理是多么容易,在移动设备上实现它是多么简单。
我已经研究过摘要式身份验证,但我找不到任何关于如何实现它的好信息。这也会带来:我如何允许用户将设备添加到他们的帐户?将用户名/密码组合散列到摘要标题中以及其他信息?
有人可以对此有所了解吗?因为我很困惑。关于如何实现WCF(RESTful)服务的网络上有大量信息,但是当您需要保护它时,信息量会大幅下降......欢迎提供文章。
答案 0 :(得分:2)
在WCF中利用SSL很简单,此时每个移动平台都应该支持SSL。您应该明确地使用SSL进行基本身份验证,以确保您的生活尽可能简单恕我直言。
在WCF服务上启用HTTPS所需要做的就是:
<webHttpBinding>
<binding name="MyBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
</webHttpBinding>
这将说“只允许通过安全传输访问此服务,并期望传递基本身份验证凭据”。
现在,唯一的问题是,您在哪里托管您的WCF服务?如果在IIS中托管,您只需要使用它配置服务证书就可以了。
另一种选择是使用F5设备或类似设备预先进行SSL。然后你必须做更多的工作,因为默认情况下,WCF不允许你通过非安全传输传递crendentials。然后,您需要自定义自己的绑定并在AllowInsecureTransport = true
上设置TransportSecurityBindingElement
。这将基本上说“信任我,我正在做正确的事情”到WCF并允许服务初始化属性,即使凭证将流过非安全绑定。