适用于移动设备上多个平台的WCF安全实施

时间:2012-05-02 07:47:20

标签: c# wcf security rest mobile

我们目前有一大堆暴露在互联网上的WCF REST服务。多个移动设备使用这些服务(iOS,Android,Symbian等)以及一系列跨平台解决方案。

我们做的第一件事就是确保一切都通过SSL运行。但是,我需要确保调用这些REST服务的设备经过身份验证。例如,如果我有一个获取正文中人员ID号的RetrieveBalance POST,ANYBODY可以使用其他ID号调用此方法并获得其余额。

我需要在每次调用之前基本上对用户名和密码/密码进行身份验证(例如)检索此人的余额。

在WCF REST中有没有办法做这样的事情,可以在各种不同的平台上运行?我的想法是在标题中添加用户名和密码,然后使用以下命令将其抓取到服务器上:

 var username = WebOperationContext.Current.IncomingRequest.Headers["Username"];
 var pwd = WebOperationContext.Current.IncomingRequest.Headers["Password"];

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

如果您使用的是HTTPS,则可以使用Basic authentication - 如果您在IIS中托管服务,那么使用自定义用户名和密码验证(默认实现需要Windows帐户)会有点棘手,但它是可能的通过custom module。自托管服务时不存在此问题,因为您可以实现custom user name password validator

答案 1 :(得分:0)

如果您使用的是<security mode="Transport">,那么请使用自定义用户/密码验证程序(不需要IIS模块)实现基本用户/通过凭据类型。如果您不能这样做,最简单的方法是为每个服务方法添加用户名和密码参数,并在每次调用时验证它们。原油,但应该工作。