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

标签 .net ios wcf json rest

我们正在构建一个新的网络应用程序堆栈。后端功能将在很大程度上基于服务,但由于其中一些服务需要暴露在公共(public)互联网上,我需要保护它们。通过使用标准成员资格/角色提供者模型锁定服务 URL,我取得了部分成功。我现在遇到的问题是,如果我们要在我们的服务栈之上构建一个 iOS(或 Android)应用程序,我们将如何处理安全问题?

我完全愿意接受建议。到目前为止,我已经在下面提供了一些有关设置的信息。

  1. 使用在 HTTPS 连接上运行的 SQL 成员身份/角色提供者/表单例份验证的 ASP.NET 网站。只有默认/登录/常见问题解答页面可以公开访问。所有其他页面都位于一个名为“/Secure”的文件夹中,该文件夹需要您进行身份验证。

  2. WCF 网络服务。所有支持的功能都是通过此服务提供的。端点仅在本地 Intranet 上可用。 ASP.NET 网站代码隐藏使用标准服务引用与服务对话。

  3. WCF REST/JSON 服务。上面的一些功能被重新包装在 WCF REST/JSON 服务中。这是使用“WCF REST Template 40”设置的。然后使用 System.Web.Routing 将服务路由到“/Secure/jsonsvc/*”。因为它位于/Secure 文件夹下,所以它继承了任何请求的成员资格/角色提供者安全性。例如从客户端 JQuery 小部件对此服务的 xmlhttp 调用仅适用于已经登录到我们网站的用户。

  4. 将来,这些相同的 WCF Rest/JSON 服务可能需要由外部应用程序(例如 iPad 应用程序)使用。鉴于缺少 HTTP 站点/ session /登录上下文,解决此问题的最佳方法是什么。

最佳答案

如您所知,ASP.NET 表单例份验证使用 cookie 来维护您的身份验证 session 。撇开关于这是否是在 REST 方法下处理事情的最佳方式的任何争论,我看不出您不能在您的 iOS 应用程序中使用相同 cookie 的技术原因。

您显然需要一个简单的登录网页(通过 UIWebView 在您的应用程序中显示)或登录 REST 方法首先将 cookie 返回给您,然后在后续请求中您只需返回 cookie请求(这里有一点 information on handling cookies in iOS using the ASIHTTP library )。

要牢记的几件重要事情是您无法控制设备所在的无线网络,因此您绝对应该使用 SSL,并且您还应该考虑失败/重试/等一个登录 REST 方法,就像登录页面一样(如果不是更多的话)。

希望对您有所帮助!

关于.net - 我应该如何保护我的 WCF Rest/JSON 服务以用于 iOS/Android 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7332029/

相关文章:

wcf - 筛选 Azure 日志时性能不佳 - WCF 数据服务筛选器

c# - 如何使用 Java 客户端导入 WCF Web 服务

c# - WCF 事件顺序

.net - 为什么我应该使用 MSDTC 上的事务而不是 System.Data.SqlClient.SqlTransaction?

.net - SqlServer CE 4 无法找到请求的 .Net 框架数据提供程序

c# - 在循环内与循环外使用 IF 语句

ios - 如何更改导航 Controller 后退按钮的字体大小

.net - "Create Unit Tests"选择在哪里?

ios - 创建存储患者信息的对象。需要在整个应用程序中使用它

ios - 在 SwiftUI 中添加圆角半径时如何隐藏背景颜色的溢出?