設定程式庫應用程式的基於角色的安全性和驗證時需要特別考慮。
啟用或停用驗證
要考慮的其中一個因素是,圖書館應用程式的呼叫者是否應接受承載進程的進程層級安全性檢查,也就是是否啟用或停用身份驗證。
例如,如果程式庫應用程式將由瀏覽器執行,可能需要接收未經驗證的回調。 若要解決此問題,您可以停用驗證,讓裝載進程不會對連結庫應用程式的呼叫者執行安全性檢查。 當您停用驗證時,函式庫應用程式實際上會變成未經驗證,所有對它發出的呼叫都將成功。 程式庫應用程式的呼叫者不需要經過主機進程的安全性檢查。 基本上,這個資料庫應用程式被標記為「未經驗證」,對於該應用程式的呼叫,安全性檢查會被省略。
如需有關如何啟用或停用驗證的詳細資訊,請參閱 為圖書館應用程式啟用驗證。
強制執行角色檢查
另一個要做出的決定是連結函式庫應用程式是否應該使用 角色型安全性。 如果使用角色型安全性,您必須使用元件層級安全性來執行任何存取檢查。指派給連結庫應用程式的角色不會反映在進程安全性描述元中。 連結庫應用程式可控制的唯一授權是在元件層級。 如需元件層級安全性的詳細資訊,請參閱 安全性界限。
若要查看如何設定元件層級安全性,請參閱 設定存取檢查的安全性層級。
組態案例
若要進一步瞭解決定連結庫應用程式是否應該使用角色型安全性,以及連結庫應用程式是否應該未經驗證的影響,請考慮下列案例:
已啟用驗證,並使用角色型安全性。 在此案例中,主機程序會進行安全性檢查,而且某些呼叫方在程序層級遭到拒絕存取。 此外,角色檢查是在程式庫應用程式層級執行,因此在檢查角色成員資格時,一些通過流程層級安全性檢查的呼叫者會被拒絕存取程式庫應用程式。 這是使用角色型安全性之 COM+ 連結庫應用程式的一般案例。
下圖顯示啟用驗證和使用角色檢查的案例。
已啟用驗證,且不會使用角色型安全性。 在此案例中,安全性檢查是在程式層級完成,但不會在連結庫應用層級檢查角色成員資格。 因此,任何通過進程層級安全性檢查的函式庫應用程式呼叫端都會獲得存取權,因為未檢查角色成員資格。 當不使用角色型安全性的 COM 應用程式移轉至 COM+ 連結庫應用程式時,就會存在這種情況。
下圖顯示啟用驗證且未使用角色檢查的案例。
驗證已停用,且會使用角色型安全性。 在此情境中,安全性檢查是在處理層級進行,但程式庫應用程式的呼叫者未經過驗證。 實際上,函式庫應用程式的呼叫者會豁免于處理層級安全性檢查。 因為已啟用角色檢查,因此僅角色成員資格會決定誰獲得連結庫應用程式的存取權。 當託管過程完成的安全性檢查太嚴格,但您需要對函式庫應用程式或特定介面或方法有一些存取限制時,這種情況可能是合適的。 此案例可讓您有效地關閉進程安全性,而且仍然使用角色型安全性進行適當的層級存取檢查。
下圖顯示已停用驗證且正在使用角色檢查的案例。
驗證已停用,且不會使用角色型安全性。 在此案例中,安全性檢查仍會在程式層級完成,但如上述案例所示,連結庫應用程式的呼叫端一律會通過此安全性檢查。 因為角色檢查也已停用,因此不會在連結庫應用層級檢查角色成員資格。 基本上,任何人都可以呼叫連結庫應用程式。 當您的 COM 物件需要接收未驗證的回呼時,應該選擇此案例,例如由 Internet Explorer 裝載的 ActiveX 控制項,或 Microsoft Management Console 嵌入式管理單元的案例。 當然,接收未經驗證的呼叫時,必須信任此 COM 物件才能適當地運作。 例如,它不應該代表其呼叫端存取任意檔案。
下圖顯示停用驗證且未使用角色檢查的案例。
決定要啟用或停用 COM+ 連結庫應用程式的驗證之後,請參閱 啟用連結庫應用程式的驗證,以取得說明如何使用元件服務系統管理工具停用(或啟用)驗證的逐步程式。 如果您的程式庫應用程式將使用基於角色的安全性,請參閱 設定 Role-Based 安全性。
相關主題