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

问题描述

| 我目前正在设计和开发将由移动设备使用的WCF 4 RESTful服务。我之所以特别选择REST,是因为它据说是轻量级的,并且JSON输出使移动客户端的解析变得简单。 该服务负责整个应用程序中的移动设备部分。但是,这要求用户登录后才能使用该服务。基本的HTTP身份验证不是一种选择:它是不安全的,中间人攻击很容易拦截用户帐户。 SSL是这里的一个选项,但是我不知道SSL在WCF RESTful服务上如何轻松工作,以及在移动设备上实现的难度如何。 我已经研究过摘要式身份验证,但是我真的找不到关于如何实现它的任何好的信息。这还带来了一个问题:我该如何允许用户以此向其帐户添加设备?将用户名/密码组合与其他信息一起哈希到Digest标头中吗? 有人可以阐明这一点吗?因为我很糊涂。网上有很多有关如何实现WCF(RESTful)服务的信息,但是一旦您需要保护它,信息量就会大大减少。     

解决方法

        在WCF中,利用SSL非常简单,因此每个移动平台都应支持SSL。您绝对应该使用SSL进行基本身份验证,以使您的生活尽可能简单。 在WCF服务上启用HTTPS所需要做的就是:
<webHttpBinding>
    <binding name=\"MyBinding\">
        <security mode=\"TransportCredentialOnly\">
           <transport clientCredentialType=\"Basic\" />
        </security>
    </binding>
</webHttpBinding>
这将表示“仅允许通过安全传输访问此服务,并希望传递基本身份验证凭据”。 现在,唯一的问题是,您在哪里托管WCF服务?如果托管在IIS中,则只需要使用它配置服务证书,就可以完成所有工作。 另一种选择是使用F5设备或类似设备预先进行SSL。然后,您需要做更多的工作,因为默认情况下,WCF不允许您通过非安全的传输传递凭据。然后,您需要自定义自己的绑定并在
TransportSecurityBindingElement
上设置
AllowInsecureTransport = true
。基本上,这将对WCF说“相信我,我正在做正确的事”,并允许服务适当地初始化,即使凭据将通过非安全绑定流动。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...