我们正在构建新的Web应用程序堆栈。后端功能将主要基于服务,但由于其中一些服务需要暴露于公共互联网,我需要保护它们。我部分成功地通过使用标准成员/角色提供者模型来锁定服务URL。我现在遇到的问题是,如果我们要在服务堆栈之上构建一个iOS(或Android)应用程序,我们将如何去处理安全问题?我应该如何确保我的WCF Rest/JSON服务与iOS/Android应用程序一起使用?
我完全接受建议。到目前为止,我在下面列出了一些信息。
使用SQL Membership/Role Provider/Forms的ASP.NET网站在HTTPS连接上运行的身份验证。只有默认/登录/常见问题页面可公开访问。所有其他页面都位于名为“/ Secure”的文件夹中,这需要您进行身份验证。
WCF WebService。所有支持的功能都是通过此服务提供的。端点仅在本地Intranet上可用。 ASP.NET网站代码隐藏与使用标准服务参考的服务对话。
WCF REST/JSON服务。上述一些功能重新包装在WCF REST/JSON服务中。这是使用“WCF REST Template 40”设置的。该服务然后使用System.Web.Routing路由到“/ Secure/jsonsvc/*”。因为它位于/ Secure文件夹下面,所以它会继承任何请求的成员资格/角色提供者安全性。例如xmlhttp从客户端JQuery小部件调用此服务,仅适用于已登录到我们网站的用户。
未来,这些相同的WCF Rest/JSON服务可能需要由外部应用程序(例如,iPad应用程序)使用。考虑到缺少HTTP站点/会话/登录上下文,最好的方法是什么?
您在#1中提到的身份验证机制是否也作为#3中的Web服务的一部分公开? – momo
你的意思是...是否有会员供应商登录方法的webservice版本。不,没有。我不确定那将如何工作。即使我公开了一个采用用户名和密码的方法,它会返回什么。当前版本将ASPXAUTH cookie值作为浏览器xmlhttp请求的一部分。你将如何在本地客户端中模拟这一点。 –
对于我们构建的大多数应用程序,Web服务的登录调用将返回会话令牌,以便随后的Web服务调用必须包含该会话令牌。您可能会对我最近回答的问题感兴趣,这个问题可以在http://stackoverflow.com/questions/7296729/handling-login-functionality-for-native-app-connecting-to-web-service/7296764#7296764上找到。它可能适用于你的情况。 – momo