簡體   English   中英

.NET MVC身份驗證 - 表單+ Windows身份驗證

[英].NET MVC Authentication - Forms + Windows Authentication

我目前正在開發一個項目,該項目的要求導致了一些問題,我想知道處理它的最佳方法。

基本上我們希望內部用戶能夠訪問MVC應用程序並通過AD進行身份驗證,我們希望它們非常像SSO,他們登錄到他們的計算機導航到站點並且他們在。

第二類用戶是我們AD中不存在的外部合作伙伴,我們希望通過SQL Server進行管理。 對於這些用戶,我們希望顯示登錄頁面並進行表單身份驗證。

我的想法一開始很簡單,讓IIS嘗試使用Windows身份驗證進行身份驗證,如果失敗(401)重定向到登錄頁面。 我目前沒有一個可以測試它的環境,但是根據我在IIS7中的理解,它不是那么簡單,需要一點“黑客”來完成。 我需要避免這樣的事情,我需要一個解決方案,因為系統設計工作,而不是欺騙它。

我已經研究過ADFS和WIF,但是ADFS只支持AD而不支持SQL,而且從我看到的是沒有支持SQL Server的STS。 我已經考慮過托管使用Windows身份驗證的內部應用程序和使用表單身份驗證的外部應用程序,但我想盡可能避免這種情況。

理想情況下,我們想要的流程是用戶導航到MVC應用程序IIS嘗試執行Windows身份驗證,如果失敗(401)將它們重定向到登錄頁面。 從那里登錄頁面將根據SQL數據庫驗證用戶憑據。 在1 MVC應用程序中實現這一切的最佳方法是什么?

謝謝!

如果您使用的是ASP.NET MVC,我會在FormsAuthentication或OWIN之上實現自己的身份驗證。它非常簡單,您可以完全控制對用戶進行身份驗證的位置。 相信我並不像聽起來那么可怕。 我寫了一些你可能感興趣的帖子。

MVC 5

http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux

MVC 4

http://tech.pro/tutorial/1216/implementing-custom-authentication-for-aspnet

我目前使用MVC 4方法對Active Directory域進行身份驗證,並取得了巨大成功。 我建議的唯一一件事就是將您的呼叫緩存到Active Directory,因為它有時可能不可靠。

有支持sql server的STS,它是IdentityServer。

https://github.com/thinktecture/Thinktecture.IdentityServer.v2

它甚至支持自定義成員資格提供程序,為您提供了很多不同的可能性。 我不確定它是否支持在集成身份驗證失敗時自動回退到表單。 如果沒有,則有兩個選項:自定義sts或兩個顯式stses以及用戶的顯式選擇。 我們用ADFS實現了后一個場景 - 有兩個adfses,一個是Forms,另一個是集成auth,第一個是另一個。 這在home realm發現頁面上給出了明確的選擇 - “。你想用用戶名/密碼登錄還是嘗試集成身份驗證”

您可以創建一個使用“內部部署身份驗證”的項目,該項目使用ADFS對用戶進行身份驗證。 內部部署權限URI將是:

https://yourADFSservername/federationmetadata/2007-06/federationmetadata.xml

加載項目后,您可以轉到ADFS設置並創建新的“信賴方信任”並傳遞您的MVC應用將使用的HTTPS URL。 設置為使用LDAP屬性作為聲明,並且將輕松地對AD身份驗證進行排序,因為它將用戶導航到組織登錄頁面,就像Office 365一樣。然后,如果某些用戶的身份驗證失敗,請讓用戶將用戶發送到正常的簽名 - in / signup頁面,獨立於AD並連接到SQL Server。 您可以使用內部部署身份驗證完全跳過Windows身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM