2011-02-14 72 views
2

請考慮一個包含一組使用ASP.NET 4和本機C++ IIS模塊構建的ReST Web服務的應用程序。在ASP.NET 4中支持多種身份驗證策略Web應用程序

我們需要能夠支持2種認證策略:

  • 內部用戶可以直接從其他客戶端應用程序中調用我們的REST端點(比如在Silverlight或Java中實現),在那裏他們已經根據提供者的內部單點登錄進行身份驗證,提供安全令牌作爲HTTP調用的一部分。

  • 爲了測試,我們希望允許用戶使用瀏覽器訪問ReST終端,因此我們需要允許他們通過輸入用戶名/密碼進行身份驗證(我們將檢查網絡上提供的單一登錄服務器)。爲此,我們正在考慮使用ASP.NET Forms或Digest。

(這樣在一種情況下用戶已經通過身份驗證 - 但我們需要驗證這個在每次調用,在其他情況下,我們需要向他們挑戰,以提供憑據)

問題是如何以支持這兩種情況。

我無法找到一個解決方案,可在這兩種情況下工作:

  • 如果我從一個應用程序(非瀏覽器)的調用和令牌丟失,我不能重定向他們登錄。 aspx作爲調用我們的應用程序不知道如何處理一堆HTML(登錄表單)。我需要返回響應代碼401.

  • 但是,如果我從未通過身份驗證的Web瀏覽器接到呼叫,我不能在沒有提供用戶輸入憑據的可能性的情況下返回401。

有沒有人遇到過這個問題?

在此先感謝。

P.S.一些Web服務將在C++中實現的事實使事情變得複雜,但是如果我們至少使用表單身份驗證,那麼我可以使用集成管道併爲本地模塊使用表單。

回答

0

我們將使用HTTP頭實現多種身份驗證方案,每種客戶端類型都將響應它支持的挑戰。

例如:

  • 客戶端請求的資源
  • 服務器401和WWW身份驗證reponds:基本,自定義領域:安全區域
  • 瀏覽器可以根據基本訪問身份驗證憑據迴應(例如)
  • 來自已經認證用戶的其他應用程序內的調用將使用「自定義」認證方案提供令牌。

我們還將在.NET中創建一個自定義身份驗證HttpModule實現,該實現將用於整個網站(包括用C+++實現的應用程序)。

相關問題