2010-03-13 73 views
3

我正在考慮啓動一個需要安全的新Web應用程序(如果沒有其他原因,我們將需要PCI(支付卡行業)認證點)。使用Active Directory在面向萬維網的網站中驗證用戶身份

根據以前使用PCI(在一個域中)的經驗,首選的方法是使用集成的Windows身份驗證,然後使用kerberos一直通過應用程序傳遞到數據庫(所以NT用戶在數據庫中擁有權限)。這允許更好的審計以及對象級權限(即最終用戶不能讀取信用卡表)。

即使有人妥協網絡服務器,他們也無法從數據庫中收集任何/多少附加信息。此外,網絡服務器沒有存儲任何數據庫憑據(超出了簡單的匿名用戶,對簡單網站配置的權限很少)

因此,現在我正在尋找將在公共互聯網上。一個建議是有一個Active Directory服務器,併爲AD的每個用戶創建Windows帳戶。然後這些用戶將被放置到合適的NT組中,以決定他們應該擁有哪些數據庫權限(以及他們可以訪問哪些頁面)。

ASP.Net已經提供了AD成員資格提供者和角色提供者,所以這應該相當簡單的實現。

圍繞這個問題有很多問題 - 可擴展性,可靠性等......我想知道是否有任何人有這種方法的經驗,或者更好,爲什麼要做/不是更好的理由去做吧。

任何輸入理解

回答

4

在一個項目中使用ADAM後,我發現它是熊。開發人員的文檔可能很少,它有點怪誕,它與完整的AD不同,最重要的是,我無法從MS那裏得到直接答案,以確定它是否將在未來得到全面支持。我得到的印象是,ADAM是混蛋的孩子,新的聯邦服務(ADFS)是他們希望人們去的地方。將ADAM商店從一個成員服務器移動到另一個服務器是一件痛苦的事情。既然如此,我在ADAM方面的問題與商店的開發和維護有關,它絕對具有擴展能力和可靠性。也就是說有時你需要深入研究LDAP /目錄魔法的80級法術來確定它是或不在做什麼。

對於面向公衆的網站,AD/ADAM可能會矯枉過正IMO。您可以使用其他MembershipProviders(如SqlMembership提供程序)來獲得有關憑證的良好安全級別。如果您想進一步研究,可以使用數據庫加密(SQL Server至少具有內置此功能)來加密屬於PII(個人身份信息)競技場的信息,當然也可以對備份進行加密。數據庫支持的認證存儲具有的優點是,您擁有數據庫產品提供的所有工具,可用於擴展,備份和控制訪問等。

編輯:讓我補充一點,使用.NET,您可以設置您的站點,使其在Windows用戶下運行並使用Windows身份驗證(假設db支持它)連接到數據庫。因此,不需要將證書存儲在配置文件中。但是,如果您因任何原因必須存儲憑證,則可以使用DPAPI對配置文件中的憑證進行加密。

ADDITION爲了迴應有關保護加密密鑰的問題,您有幾個選擇。首先是簡單地哈希信用卡號碼。這大大簡化了訪問數據的任何問題,但這意味着客戶將不得不爲每次購買重新輸入他們的卡號。如果您想記住客戶的卡號,那麼您將進入解密密鑰維護的新領域。在這種情況下,您絕對應該對數據庫使用Windows身份驗證,並查看SQL Server 2008的可擴展密鑰管理功能,該功能可讓您將第三方密鑰管理程序掛接到SQL的加密功能中。這樣,只有網站用戶才能訪問用於解密的密鑰。還有其他解決方案可以確保網站不會受到威脅。更大的擔心是有人得到未檢測到的數據庫副本。下面是關於使用SQL Server是PCI兼容的鏈接:

Deploying SQL Server 2008 Based on Payment Card Industry Data Security Standards (PCI DSS) Version 1.2.

+0

謝謝 - 我也被朋友警告過ADAM(出於類似的原因)。雖然我們可以在配置文件中加密密碼,但是我們是否仍然會丟失數據庫中的所有對象級權限?即最終用戶可以從信用卡表中讀取?另外,如果Web服務器可以使用加密的憑證登錄到數據庫,那麼任何危害Web服務器的人都可以這樣做? – Basic 2010-03-20 12:01:02

+0

擴大我的OP討論加密的CC號碼。如果您使用的是Windows身份驗證,則開發人員無法強制帳戶獲取號碼。還有一些測試可以運行,以確保網站不會被劫持,但即使它(並假設網站完全免受SQL注入攻擊),黑客也會想要使用它來獲取數據庫的副本。在這種情況下,這將是沒有用的,因爲他不會有解密密鑰。 – Thomas 2010-03-20 15:27:23

+0

感謝您的鏈接 - 看起來非常有用! – Basic 2010-03-21 14:43:40

1

夫婦想法

運行AD/AM - Active Directory Application Mode

它比例很好。它與AD相同的核心代碼。類似的管理功能。可靠性強。適用於ASPNET AD會員供應商。

它包含在Windows中。


另請考慮通過ADFS 2探索聯合身份系統。

不像AD/AM,這種方法相當先進。 ADFS v2服務器的最終版本尚未從Microsoft獲得,但它處於「候選發佈版」階段。如果您有成爲早期採用者的胃,ADFS2有可能採用聯合身份驗證方法。這意味着您可以接受來自各種現有來源的身份令牌:谷歌登錄,雅虎登錄,any OpenId source,並將其用作您網站上的身份。用戶不必「註冊」並向您進行身份驗證。相反,您的網站會尊重由某些受信任的第三方提供的身份和身份驗證,並根據該身份執行授權。

+0

感謝-ADFS 2聽起來很有希望,我們已經在VS 2010 RC for .NET 4中開發 - 所以早期採用也不應該成爲問題。一些註冊/認證的代表團實際上在某些方面幫助了我們(儘管可能與我們自己的系統一起)。 我希望能夠得到一點辯論,因爲我想要一系列的觀點 - 所以我打算讓Q開放直到賞金到期之前。 謝謝 – Basic 2010-03-18 19:47:12

1

這不是一個直接的答案,但有一個AD用戶帳號意味着你需要一個Windows CAL該用戶。另一種方法是向用戶頒發客戶端證書並將客戶端證書映射到IIS中的AD用戶。

您可能還會考慮AzMan與SQL存儲從Windows 2008開始可用或開放源碼netsqlazman

+0

謝謝,我甚至沒有考慮過這種方法 - 我們將有混合使用該系統的最終用戶和「客戶」。我們可以控制的客戶(在某種程度上),但最終用戶將會公開 - 這是一種友好的體驗嗎? (頒發/安裝證書)? – Basic 2010-03-20 12:02:37

+0

對於joe公共客戶端證書不是用戶友好的。首先,您需要爲每個用戶創建一個不同的證書,並記錄哪個用戶具有哪個證書。您可能還必須提供證書的短期或不同到期日期。安裝客戶端證書並提示用戶每次選擇您的證書都不友好。它僅適用於有限的內部用戶或B2B情況。 – softveda 2010-03-20 22:45:32

+0

感謝您的回答 - 這可能是我將來使用的項目,但不幸的是,它不適合這種情況。不過謝謝你的迴應! – Basic 2010-03-21 14:44:50

相關問題