我们希望在任何网络应用中实现以下非常一般的日常场景。我们希望确保从非Windows客户端(即非.NET客户端)到WCF Web服务的调用。客户端是移动设备(iPhone,Android或Blackberry,但应该适用于所有这些设备)并且还假设本机应用程序将是银行(金融)域应用程序。所以安全性不会受到损害。
将为用户提供一个输入用户名和密码的屏幕。
WCF服务调用将验证用户凭据(我们想知道如何保护此WCF服务调用)
验证成功后,所有后续通话都不必通过用户名和密码。
每个服务调用都应该能够验证凭据或检查它是否是已经过身份验证的用户,如果是,则从某个商店加载用户角色以授权该呼叫。
您可以理解我们正在寻找从现在的Windows客户端到WCF服务的安全会话。期待一种解决方案(避免使用ASP.NET会话)来保护每个服务调用并授权调用。
请回复代码,配置
谢谢和问候,
Milind
答案 0 :(得分:2)
这可能是网络应用中的日常场景,但不是服务中的日常场景。具有服务的日常场景是每次呼叫中的身份验证,并尽可能避免任何会话。
您的安全要求的答案是HTTPS。这将确保通信不会受到损害。您的身份验证要求的答案是基本身份验证(可能是用于在IIS中托管服务时用于处理身份验证的自定义HTTP模块)或用于在邮件正文中传递凭据的UserName令牌配置文件(仅限SOAP服务)。
用户将能够在您的移动应用程序中提供他的凭据,但您的移动应用程序应该在每次调用服务时使用这些凭据(在.NET世界中,这些凭据仅为通信代理设置一次,但这只是实现 - 他们仍在每次通话中发送。)
WCF支持在WS-SecureConversation之上实现的安全会话,但是移动平台都不支持它,并且它是非常严格的规范,所以你不会尝试自己实现它(如果你这样做,你可以将它作为单独的项目出售)。此外,在iPhone上支持非常差的SOAP时,您最有可能使用REST服务,其中不存在安全会话或甚至会话。
如果你想要任何会话,你将不得不使用ASP.NET Session(= AspNetCompatibility),或者你必须实现自己的会话管理并在cookie中传递会话令牌(通常与ASP.NET会话相同的机制)或者消息体(通常是WS-SecureConversation所做的,但它处理所有安全性问题)。