主要功能
三個核心組件:Subject, SecurityManager 和 Realms.
Subject:即“當前操作用戶”。但是,在Shiro中,Subject這一概念並不僅僅指人,也可以是第三方進程、後台帳戶(Daemon Account)或其他類似事物。它僅僅意味著“當前跟軟體互動的東西”。但考慮到大多數目的和用途,你可以把它認為是Shiro的“用戶”概念。
Subject代表了當前用戶的安全操作,SecurityManager則管理所有用戶的安全操作。
SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通過SecurityManager來管理內部組件實例,並通過它來提供安全管理的各種服務。
Realm: Realm充當了Shiro與套用安全數據間的“橋樑”或者“連線器”。也就是說,當對用戶執行認證(登錄)和授權(訪問控制)驗證時,Shiro會從套用配置的Realm中查找用戶及其許可權信息。
從這個意義上講,Realm實質上是一個安全相關的DAO:它封裝了數據源的連線細節,並在需要時將相關數據提供給Shiro。當配置Shiro時,你必須至少指定一個Realm,用於認證和(或)授權。配置多個Realm是可以的,但是至少需要一個。
Shiro內置了可以連線大量安全數據源(又名目錄)的Realm,如LDAP、關係資料庫(JDBC)、類似INI的文本配置資源以及屬性檔案等。如果預設的Realm不能滿足需求,你還可以插入代表自定義數據源的自己的Realm實現。