我的任务是保护使用WCF并为Silverlight,WP7和Android设备提供Web服务的Web服务。

因此,我相信我应该激活SSL并向Web服务添加一种身份验证/授权形式。

现在,我知道可以在web.config和IIS中打开Windows身份验证,这将自动使用PC登录进行身份验证。但是我不知道当我使用Intranet以外的设备(特别是Android设备)时,这是否是正确的解决方案。我不想为我们团队中的Android开发人员设置使用这种身份验证方法,以使其无法升级。那么这在Android中足够容易吗?

当我添加安全性时,发现使用basicHttpBinding添加到<transport clientCredentialType="Windows"很容易,但这在customBinding中不起作用。这些有什么不同吗?

最佳答案

我在做与我的应用程序极其相似的事情。对于android端,我们向设备发送一个MobileUserId-在本例中为Guid,它唯一地标识用户。仅为会话保存。从那里开始,对服务的每次调用也要求此Guid有效。

为了安全起见,您的web.config应该具有以下内容:

<service name="Service.System" behaviorConfiguration="ServiceBehaviour">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="TransportSecurity" contract="Service.ISystem" behaviorConfiguration="web"></endpoint>
</service>

<bindings>
<webHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>


即使您选择不使用Java中的GuidUUID之类的东西,您仍将需要某种方式来从android设备传递用户名/密码组合-它不适用于Windows身份验证。

您可能还应该查看RESTSOAP。我发现REST更易于使用,因此我偏爱它。

关于android - 保护WCF Web服务,使其与Android和Silverlight兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8791224/

10-12 00:25
查看更多