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

时间:2011-05-27 15:41:30

标签: wcf restful-authentication

我目前正在设计和开发将由移动设备使用的WCF 4 RESTful服务。我特意选择了REST,因为它应该是轻量级的,JSON输出使移植客户端的解析变得简单。

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

我已经研究过摘要式身份验证,但我找不到任何关于如何实现它的好信息。这也会带来:我如何允许用户将设备添加到他们的帐户?将用户名/密码组合散列到摘要标题中以及其他信息?

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

1 个答案:

答案 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并允许服务初始化属性,即使凭证将流过非安全绑定。