2010-09-12 38 views
1

先決條件:有一個利用ASP.NET安全模型的Web應用程序。還有一個Active Directory(AD)集成組件。它提供了AD用戶和角色,就好像這些是應用程序自己的用戶和角色一樣。當然,AD用戶和AD角色之間的「角色」關係存儲在AD域中,但是會被Web應用程序緩存。我應該刪除一個我沒有放在那裏的緩存條目嗎?

問題:假設AD用戶1是AD角色1的成員。當Web應用程序啓動時,它會緩存這種關係。現在,如果AD管理員使用AD控制檯從role1中刪除user1,則應用程序不知道此更改 - 緩存條目保留。這成爲一個安全漏洞,因爲角色1可能擁有user1不應該擁有的權限。

有兩種сcontrary意見如何解決這個問題:一次AD服務器上檢測到操作

  1. 「聽」到公元變化和觸發緩存條目刪除 - 因爲我們有責任正確的AD組件功能
  2. 離開緩存不變 - 因爲我們沒有把進入那裏,不應該將其刪除或者

什麼是在這種情況下,以正確的方式去?爲什麼?

謝謝!

回答

1

我認爲它應該是使用緩存機制的組件的實現者的責任。

在許多情況下,傳播更改權限的某些延遲可能是可以接受的。 因此,使用合理的小絕對超時的緩存條目可能是可以接受的。

如果這種等待時間不可接受,那麼高速緩存可能不適合。

緩存機制的實現者應該記錄這一點。如果我這樣做了,我會有一個文檔化的可配置絕對超時時間,這樣管理員可以判斷可以接受的延遲時間,並且可以完全禁用緩存。我還可能提供一個API或UI,使管理員可以手動清除緩存。

+0

嗯,我完全忘記了緩存過期...你是對的 - 給管理員一個選項來指定這種類型的緩存超時可能是一個很好的解決方案。謝謝! – 2010-09-18 18:44:12

相關問題