我应该如何保护我的WCF Rest/JSON服务以用于iOS/Android应用程序?

Eoi*_*ell 9 .net rest wcf json ios

我们正在构建一个新的Web应用程序堆栈.后端功能将基于服务,但由于其中一些服务需要暴露给公共互联网,我需要保护它们.我使用标准成员资格/角色提供程序模型锁定服务URL部分成功.我在那一刻遇到麻烦的部分是,如果我们要在我们的服务堆栈上构建一个iOS(或Android)应用程序,我们将如何处理安全性?

我完全乐于接受建议.到目前为止,我已在下面的设置中包含了一些信息.

  1. ASP.NET网站使用在HTTPS连接上运行的SQL成员资格/角色提供程序/表单身份验证.只有Default/Login/FAQ页面可以公开访问.所有其他页面都位于名为"/ Secure"的文件夹中,需要您进行身份验证.

  2. WCF WebService.所有支持的功能都通过此服务提供.端点仅在本地Intranet上可用.ASP.NET网站代码背后使用标准服务参考与服务进行对话.

  3. WCF REST/JSON服务.上述某些功能在WCF REST/JSON服务中重新包装.这是使用" WCF REST模板40 "设置的.然后使用System.Web.Routing将服务路由到"/ Secure/jsonsvc/*".因为它位于/ Secure文件夹下,所以它继承了任何请求的membership/roleprovider安全性.例如,xmlhttp从客户端JQuery小部件调用此服务,仅适用于已登录我们网站的用户.

  4. 将来,外部应用程序(例如IPad应用程序)可能需要使用这些相同的WCF Rest/JSON服务.鉴于缺少HTTP站点/会话/登录上下文,最好的方法是什么?

Dav*_*ner 11

如您所知,ASP.NET表单身份验证使用cookie来维护经过身份验证的会话.暂且不论是否这是在REST方法下处理事物的最佳方式,我认为没有技术原因可以解释为什么你不能在你的iOS应用程序中使用相同的cookie.

您显然需要一个简单的登录网页(通过UIWebView在您的应用程序中显示)或登录REST方法,首先将cookie返回给您,然后在后续请求中,您只需返回带有请求的cookie(这里有一些关于使用ASIHTTP库在iOS中处理cookie信息.

需要记住的一些重要事项是,您无法控制设备所在的无线网络,因此您绝对应该使用SSL,并且还应考虑登录REST的故障/重试/等等方法就像登录页面一样(如果不是这样的话).

希望有所帮助!

  • +1好帖子.请查看[FormsAuthentication类](http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx).你应该可以调用[`Authenticate`](http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.authenticate.aspx)和[`SetAuthCookie`](http:/ /msdn.microsoft.com/en-us/library/twk5762b.aspx)来自您的其他受保护的wcf服务之外的Web服务.经过身份验证后,请确保您仍在后续请求中传递身份验证Cookie. (2认同)