Dot-Net

我應該如何保護我的 WCF Rest/JSON 服務以與 iOS/Android 應用程序一起使用?

  • February 2, 2013

我們正在建構一個新的 Web 應用程序堆棧。後端功能將大量基於服務,但由於其中一些服務需要公開到公共網際網路,我需要保護它們。通過使用標準成員資格/角色提供者模型鎖定服務 URL,我已經部分成功。我現在遇到的問題是,如果我們要在我們的服務堆棧之上建構一個 iOS(或 Android)應用程序,我們將如何處理安全性?

我完全願意接受建議。到目前為止,我在下面提供了一些有關設置的資訊。

  1. 使用 SQL Membership/Role Provider/Forms Authentication 在 HTTPS 連接上執行的 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 站點/會話/登錄上下文,解決此問題的最佳方法是什麼。

如您所知,ASP.NET 表單身份驗證使用 cookie 來維護您的身份驗證會話。撇開關於這是否是在 REST 方法下處理事情的最佳方式的任何爭論,我認為沒有技術原因會導致您無法在 iOS 應用程序中使用相同的 cookie。

您顯然需要一個簡單的登錄網頁(通過 UIWebView 在您的應用程序中顯示)或登錄 REST 方法首先將 cookie 返回給您,然後在後續請求中,您只需將 cookie 與請求一起返回(這裡有一些關於在 iOS 中使用 ASIHTTP 庫處理 cookie的資訊)。

需要記住的幾件重要事情是,您無法控制設備所在的無線網路,因此您絕對應該使用 SSL,並且您應該考慮登錄 REST 的失敗/重試/等方法就像登錄頁面一樣(如果不是更多的話)。

希望有幫助!

引用自:https://stackoverflow.com/questions/7332029