2012-01-23 66 views
2

我目前正在開發一個帶有WCF web API的web api,它允許我編寫寧靜的apis。我擔心的一個問題是安全問題。基於這個原因,我決定用OAuth協議保護我的api,這個協議非常好用。然而,團隊得出的結論是,我們自己的應用程序不應該被oauth授權,而應該由http basic授權,這意味着客戶端應用程序應該發送用戶名和密碼。ssl channel wcf web api?

所以我有2個問題:

  1. 我如何建立WCF的Web API和SSL的工作,我使用的網絡API預覽6,該項目是一個MVC3應用程序?
  2. 我有一個操作處理程序負責從客戶端訪問令牌創建IPrincipal,然後將其注入到操作參數中,以便我可以訪問用戶的信息。我希望在同一個操作處理程序中有一個條件,我可以檢查授權方案是OAuth還是http basic,然後在http基本情況下提取用戶的憑證並根據我的數據庫驗證該特定用戶,如果驗證成功創建一個IPrincipal並將其注入到操作參數中。但是,正如我所看到的,每次使用http basic的應用程序都會向api請求某些東西,我將不得不前往數據庫並進行身份驗證。所以我的問題是:我是在正確的道路上,還是可以通過其他方式來完成?

任何答案將不勝感激。先進的謝謝!

回答

1

您爲WCF Web API設置SSL,就像您通過HTTPS公開其他任何WCF服務一樣。如果您在IIS中託管,則需要爲HTTPS配置站點綁定。如果你是自己託管的,那麼這個配置就更有意義了。所有細節請參見http://msdn.microsoft.com/en-us/library/ms733768.aspx

要處理針對自定義身份提供者的基本身份驗證,通常在IIS中託管時使用自定義authz模塊。有關如何執行此操作的示例,請參閱[http://custombasicauth.codeplex.com/]。如果你是自己託管的,那麼你可以使用自定義的用戶名passworld驗證器。詳細信息請參見http://msdn.microsoft.com/en-us/library/aa702565.aspx

是的,我相信你是正確的,每個請求都需要認證,除非你建立某種類似會話的語義。

希望這會有所幫助。