Active User Objects和The Membership Directory
在網(wǎng)站的編程技術(shù)中我們經(jīng)常遇到的問題是如何跟蹤用戶的信息,特別 是當(dāng)用戶數(shù)量高達數(shù)百萬的時候,可以很方便的管理用戶并且還要求 服務(wù)器的高性能。下面介紹到將使用AUO(Active User Objects)技術(shù)來實現(xiàn)這個功能。
一些基本的概念簡介: 首先一個基礎(chǔ)是我們采用的解決方案是我們使用了微軟提供的Microsoft Membership Directory, 它是跟隨Site Server一起安裝的。一旦安裝了Site Server,你將擁有能夠管理百萬級用戶量 和優(yōu)化訪問量極其頻繁的情況了。 這個具體的技術(shù)細(xì)節(jié)可以參閱Site Server的文檔,現(xiàn)在我們只是初步了解這個技術(shù)。 在MMD(Microsoft Membership Directory)下面的技術(shù)就是LDAP,LDAP是一個用來查詢和 管理對象數(shù)據(jù)庫的協(xié)議標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)提供了一個用來存儲和獲取信息的目錄。 而微軟提供了訪問這種目錄結(jié)構(gòu)的機制--ADSI (Active Directory Service Interfaces),ADSI 提供一個COM對象模型來管理目錄中的項目,同時ADSI還能夠訪問其它的一些目錄服務(wù)結(jié)構(gòu),例如 NT的安全數(shù)據(jù)庫,Novell的DSN目錄等等,這些我在前面的文章中也提到過好多次了。 這里再補充一點的是,使用ADSI還可以訪問ADO來調(diào)用關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。 現(xiàn)在簡單的介紹一下AUO(Active User Objects,活動用戶對象)。作為Site Server的另一部分, 它給我們提供了一個簡單的通過ASP獲取網(wǎng)站訪問者和這些訪問者信息的機制,這些信息都保存在一個或者 多個datastores(也被稱作AUO providers)中。 注意的是主AUO provider通常為Membership Directory,而我們使用ADSI來訪問的一般都被稱為 次secondary AUO provider(并且用戶的數(shù)據(jù)都是保存在這些數(shù)據(jù)庫中). 你能夠想象得到,保存多個用戶的信息就意味著要有安全設(shè)置的功能。 現(xiàn)在這篇文章的興趣主要在于如何約束和獲取訪問我們網(wǎng)站的方法上。
網(wǎng)站的安全問題 當(dāng)一個用戶匿名訪問一個網(wǎng)頁時,一般他們使用權(quán)限的就是一個匿名用戶的權(quán)限,默認(rèn)的是IUSR_systemname 并且他們所擁有的權(quán)限也僅僅是在NT中給用戶帳號IUSR_systemname設(shè)置的權(quán)限。 一旦網(wǎng)站資源沒有被給予匿名帳號訪問的權(quán)限,那么該訪問將被拒絕。 下面有幾個方法來讓一個對話不是運行在匿名帳號下,而是使用一個已經(jīng)存在的用戶帳號來建立對話。 例如,當(dāng)IIS設(shè)置為使用Membership Directory, 將使用兩種驗證機制: Windows NT 驗證 用戶必須有一個NT帳號和密碼 Membership 驗證 用戶必須有一個Membership Directory帳號和密碼 除了安全因素要考慮外,我們還必須考慮到其他一些因素,例如用戶在擁有合法帳號前必須輸入的其它一些個人信息。 我們就要考慮到這時用戶在匿名帳號時就應(yīng)該具備輸入這些信息的權(quán)限。 要支持這個受限制的權(quán)限,我們可以很方便的使用Site Server的Membership Authentication 的cookie來實現(xiàn)。當(dāng)然這時用戶的瀏覽器必須要支持cookie了。
|