我的任务是保护使用WCF的Web服务,并为Silverlight,WP7和Android设备提供Web服务。
所以我相信我应该激活SSL并为Web服务添加一种身份验证/授权。
现在我知道我可以在我的web.config和IIS中打开Windows身份验证,它将自动使用PC登录进行身份验证。但我不知道当我使用Intranet以外的设备,特别是Android设备时,这是否是正确的解决方案。我不想设置为我们团队中的Android开发人员使用这种身份验证方法无法取得进展。这样在Android中这么容易吗?
当我添加安全性时,我发现使用basicHttpBinding
添加到<transport clientCredentialType="Windows"
很容易,但这在customBinding
内不起作用。那些与那些不同的东西吗?
答案 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中使用Guid
或UUID
之类的东西,您仍然需要某种方式从Android设备传递用户名/密码组合 - 它将无法正常工作使用Windows身份验证。
您还应该查看REST
或SOAP
。我发现REST
更容易使用,所以我更喜欢它。