我的任务是保护使用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中的
Guid
或UUID
之类的东西,您仍将需要某种方式来从android设备传递用户名/密码组合-它不适用于Windows身份验证。您可能还应该查看
REST
或SOAP
。我发现REST
更易于使用,因此我偏爱它。关于android - 保护WCF Web服务,使其与Android和Silverlight兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8791224/