2011-08-31 197 views
0

假設我在SharePoint站點中有2個頁面。我們稱他們爲頁面A和B.我們使用基於Windows的身份驗證機制。比方說,我有2個已經過身份驗證的用戶X & Y.對於在活動目錄中將某些屬性設置爲1的用戶,頁面A應該是可見的。頁面B只應該對那些沒有設置該屬性的用戶可見。我們稱這個屬性爲SpecialUser。如果特定用戶的特殊用戶爲1,則用戶應該只能看到頁面A而不能成爲頁面B.如果特殊用戶有任何其他值,用戶應該只能看到頁面B而不是頁面A.SharePoint 2010授權問題

在這種情況下,用戶X的屬性SpecialUser設置爲1,而用戶Y沒有。因此,用戶X只應看到頁面A,而用戶Y只應看到頁面B.

活動目錄中沒有組僅包含SpecialUser屬性值設置爲1的用戶。我們不想創建SharePoint組並手動添加這些用戶。

鑑於這些限制,我們如何才能實現此授權?我認爲可能需要定製編碼。如果需要自定義編碼,我該如何去做。如果沒有,解決方案是什麼?

回答

0

我認爲最簡單的做法可能是堅持活動目錄端。 Sharepoint身份驗證可能有點變幻莫測。關於我的頭頂,我可能會建議創建一個活動目錄組來保存這些用戶的列表。你可以不用手動更新它,而是每隔一段時間運行一次服務(每天一次?每小時一次?取決於你願意進行過時驗證的時間長短),並檢查活動目錄中的用戶列表是否存在此標誌。該服務然後將更新您用於身份驗證的組。

有可能是一種方法,SharePoint開發的城牆內更優雅做到這一點,但我從來沒有聽說過這樣的事情。

1

如果你的Web應用程序可以設置爲使用基於聲明的模式,而不是經典模式,你應該能夠做到這一點無需自定義編碼,因爲一個Active Directory屬性可以設置頁面的權限時,可以作爲索賠。

否則將需要自定義編碼。您可以創建自定義Web部件,將其放置在頁面上,可以重定向用戶,也可以致電SPUtility.HandleAccessDenied(new UnauthorizedAccessException())查找無效用戶。要安全修剪頁面(使它們不可見),您需要在顯示頁面的任何菜單或Web部件中使用類似的邏輯。

如果Active Directory屬性是SharePoint用戶配置文件的一部分,您可以使用UserProfile類。否則,您可以使用System.DirectoryServices.AccountManagement來檢索屬性的值。

+1

如果可以使用API​​等訪問頁面內容,那麼添加webpart的方法可能會留下安全漏洞。 –

+0

我面臨與我的應用程序類似的問題,是否有任何方法在Sharepoint中引入自定義授權或擴展共享點授權。 –