Asp.net

您正在使用哪些身份驗證和授權方案 - 為什麼?

  • April 16, 2009

我們開始設計一大堆要創建的新服務(WCF、ADO.NET 數據服務,可能在某個時候在雲中),彈出的一個問題是使用什麼身份驗證和授權方案 - 有很多很少!

我們基本上需要能夠辨識各種協議(HTTP、HTTPS、TCP)上的使用者(實際人員和“虛擬”應用程序/服務使用者),並且我們需要為他們分配至少一堆角色/權限查看某些數據和/或執行某些操作。

我們絕對不能單獨使用 Windows 組成員資格 - 我們有大量服務的外部消費者,我們不希望必須在我們的內部域中為每個人設置域帳戶。

所以我認為主要有三個選擇:

  1. 使用 ASP.NET 成員系統 - 在那裡創建使用者並分配角色
  2. 使用 AzMan(授權管理器),它似乎是一個更細粒度、更成熟、更精細的系統(具有使用者、任務、組 - 三個級別,而不僅僅是使用者 + 角色)
  3. 滾動我們自己的

首先 - 你會推薦這三個中的哪一個?有什麼理由嗎?

其次 - 我還有更多的選擇嗎?

感謝您的任何提示,指針,意見!

馬克

PS:看到到目前為止的答案,我對投票給選項#3 的人數之多感到驚訝。我原以為 MS 能夠設計出可以處理所有這些要求的可重複使用的東西……

實際上,答案可能是 1 和 3 的組合。

如果預設選項沒有達到您想要的程度,您可以通過編寫成員資格角色個人資料提供者來利用框架為您提供的許多工具和功能。

我們已經在許多客戶網站上做到了這一點 - 例如,我們的一個客戶將他們的大部分使用者儲存為 Commerce Server 使用者,並使用 Commerce Server 配置文件系統,因此我們編寫了一個會員和配置文件提供程序來與這些使用者交談數據儲存 - 一個相當簡單的練習。


大多數人可能會選擇 3,因為需要通過原始 TCP 進行身份驗證——這引入了一個超出標準ASP.NET成員資格提供程序的層。

MS 生產的大部分產品都是“好的”或“足夠好”,但總會有一些極端情況,你想做一些“不太標準”的事情,這意味著你最終會自己動手。我猜想除了“基本身份驗證”或“Windows 身份驗證”之外,你的普通開發人員很容易理解,他們選擇了“讓我們為網路建構這個”的明智選擇。

如果您看一下可以針對 WCF 服務進行身份驗證的多種方法,您就會明白我的意思——這些方法旨在處理不同的傳輸機制,因此要復雜得多。

也就是說,預設角色和配置文件提供者相當有限(角色:沒有層次結構,因此您需要檢查每個可能的角色,或將每個角色顯式分配給使用者;配置文件:所有儲存在一個欄位中作為逗號分隔值 - 不是很容易找到所有設置了值的使用者)。

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