2012-10-18 51 views
0

我們有兩個現有的舊式Web應用程序,一個用於在域中使用Windows身份驗證的Intranet,另一個用於執行自定義Web表單用戶名+基於密碼的認證。現在開發了一種新的網絡應用程序,並將在因特網上提供給互聯網和內聯網用戶,處理這兩種認證模式。因此我們決定使用WIF。我們將在Windows Server 2012上使用ASP.NET 4.5 MVC 4.ASP.NET MVC中WIF(Windows身份基礎)的用戶名和密碼身份驗證

Intranet身份驗證不應該成爲問題,因爲我們可以在這裏使用ADFS 2.0。

但是我們目前還沒有線索如何解決用戶名+密碼認證問題。它看起來像我們需要開發自定義UserNameSecurityTokenHandler來驗證提供用戶名和密碼信息的用戶,這些用戶信息經我們的自定義會員供應商驗證。但我需要整個工作流程的一些幫助...

假設我們有一個自定義的登錄頁面,並假設我們設法將Internet用戶路由到此登錄頁面(在ASP.NET MVC中),從這裏到缺少有效令牌的部分是什麼?接受提供的用戶名+密碼的表單或MVC控制器操作如何繼續觸發配置的WIF身份提供程序?

回答

2

最優雅的解決方案是爲外部用戶創建另一個STS並ADFS相信這個身份提供商:

enter image description here

外部用戶將被重定向到IdP進行STS會使用usr/pwd數據庫。內部用戶將直接通過ADFS進行身份驗證(針對AD)。

在這種情況下,ADFS同時充當IdP和聯合供應商

爲了這個工作,你需要ADFS和暴露在互聯網上的IdP(和應用程序)。您可以使用的STS利用會員資格是IdentityServer,它是開源的,您當然可以根據自己的需求進行自定義。

有了這種架構,你不需要在應用程序中的任何特殊的定製/擴展。不過,您需要處理「家庭領域發現」。哪一個是知道何處對用戶進行身份驗證的過程(例如,內部網與外部網)。據推測,你可能有不同的網址等。

+0

身份服務器看起來不錯,我會看看我們是否可以使用它。謝謝你的幫助 – thmshd

+0

謝謝,我終於接受了這一點,即使我們決定不使用IdentityServer,但這指出我正確的方向 – thmshd

+0

這是正確的..... – Wilky