如何在WCF 4 RESTful服务上进行身份验证?

问题描述:

我目前正在设计和开发将由移动设备使用的WCF 4 RESTful服务。我特别选择了REST,因为它应该是轻量级的,JSON输出使得移动客户端的解析变得简单。如何在WCF 4 RESTful服务上进行身份验证?

该服务负责整个应用程序的移动设备部分。但是,它要求用户在使用该服务之前登录。基本的HTTP身份验证不是一个选项:它不安全,中间人攻击可以轻松拦截用户帐户。 SSL是一种选择,但我不知道SSL在WCF RESTful服务上的工作方式以及在移动设备上实现的简单程度。

我已经研究过Digest Authentication,但是我无法找到任何有关如何实现它的好信息。这也带来了:我将如何让用户使用它添加设备到他们的帐户?将用户名/密码组合与其他信息一起散列到摘要标题中?

有人可以对此有所了解吗?因为我很困惑。网络上有很多关于如何实现WCF(RESTful)服务的信息,但是当你需要保护它时,信息量显着下降......文章是受欢迎的。

+0

这是复制吗? http://*.com/questions/6021612/wcf-restful-web-services-and-custom-authentication – ale 2011-05-27 17:32:47

利用SSL在WCF中大脑简单,现在应该受到每个移动平台的支持。你应该明确地使用SSL进行基本身份验证,以尽可能简化你的生活恕我直言。

所有你需要做的启用HTTPS的WCF服务是:

<webHttpBinding> 
    <binding name="MyBinding"> 
     <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
</webHttpBinding> 

那会说:“只允许通过安全传输访问该服务,并期待着基本身份验证凭据传递”。

现在,唯一的问题是,你在哪里托管你的WCF服务?如果在IIS中托管,您只需要使用它配置服务证书,并且您已完成设置。

另一种选择是先用F5设备或类似的东西做SSL。然后,您必须做更多的工作,因为默认情况下,WCF不会让您通过非安全传输方式的保证。然后,您需要进入自定义绑定并在TransportSecurityBindingElement上设置AllowInsecureTransport = true。这基本上说WCF会“相信我,我正在做正确的事情”,并允许服务初始化财产,即使凭证将流经非安全绑定。

+0

这个想法是从IIS内部托管服务。我目前正在使用不支持SSL的ASP.NET开发服务器进行开发。不过,明天我会抽出一个测试服务+移动客户端,看看它是否有效。我将生成自己的证书,将其导入到我的手机中并将其链接到IIS中。 – Toolmaker 2011-05-29 16:33:59

+0

这是怎么解决的? – 2011-06-10 16:09:07

+0

@Toolmaker为你工作吗? – 2013-06-28 13:50:17