保护WCF Web服务,保持与Android和Silverlight的兼容性

时间:2012-01-09 15:56:38

标签: android silverlight wcf iis

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

所以我相信我应该激活SSL并为Web服务添加一种身份验证/授权。

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

当我添加安全性时,我发现使用basicHttpBinding添加到<transport clientCredentialType="Windows"很容易,但这在customBinding内不起作用。那些与那些不同的东西吗?

1 个答案:

答案 0 :(得分:2)

我正在做与我的应用程序非常相似的事情。对于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更容易使用,所以我更喜欢它。