wcf - 如何对 WCF 4 RESTful 服务进行身份验证?

标签 wcf restful-authentication

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

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

我研究过摘要式身份验证,但我真的找不到任何关于如何实现它的有用信息。这也带来了:我如何允许用户使用这个将设备添加到他们的帐户?将用户名/密码组合与其他信息一起散列到摘要 header 中?

有人可以阐明这一点吗?因为我很困惑。网上有很多关于如何实现 WCF (RESTful) 服务的信息,但是当您需要保护它时,信息量会显着下降……欢迎发表文章。

最佳答案

在 WCF 中利用 SSL 非常简单,目前每个移动平台都应该支持它。您绝对应该使用 SSL 进行基本身份验证,以使您的生活尽可能简单恕我直言。

要在 WCF 服务上启用 HTTPS,您需要做的就是:

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

这会说“只允许通过安全传输访问此服务并期望传递基本的身份验证凭据”。

现在,唯一的问题是,您在哪里托管 WCF 服务?如果在 IIS 中托管,您只需使用它配置服务证书即可。

另一种选择是使用 F5 设备或类似设备预先执行 SSL。然后你必须做更多的工作,因为默认情况下,WCF 不会让你通过非安全传输传递凭据。然后您需要自定义您自己的绑定(bind)并在 TransportSecurityBindingElement 上设置 AllowInsecureTransport = true。这基本上会向 WCF 说“相信我,我做的是正确的事”,并允许服务正确初始化,即使凭据将流经非安全绑定(bind)也是如此。

关于wcf - 如何对 WCF 4 RESTful 服务进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154603/

相关文章:

java - 基本身份验证请求应该是 POST 还是 GET?

c# - 就传输的总字节数而言,最紧凑的 wcf 绑定(bind)是多少?

WCF 流媒体服务/来自媒体播放器的多个 GET 请求

rest - 使用 JWT 创建 PostMan GET 请求

ruby - Rails 3 中的 Restful API

rest - 使用拦截器和注入(inject)在 JAX-RS 中进行身份验证/授权

wcf:是否有可能与 tcp 绑定(bind)和流式传输模式签订双工契约(Contract)?

c# - WCF 服务 web.config 调整以更改生成的 wdl

.net - WCF 命名管道 : Across network? 真的吗?

php - 使用 token 实现RESTful API身份验证(Yii/Yii2)