補一篇shiro相關的概念
shiro是一個強大靈活的開源安全框架,可以乾淨利落的處理認證、授權、企業會話管理和加密。
shiro的首要目標是簡單和易於理解。安全有時候是非常複雜令人頭疼的問題,shiro隱藏了複雜
的細節,暴露了簡介直觀的API來簡化開發者使他們的應用程序更安全的努力。
shiro可以做一下事情:
進行用戶認證
執行訪問控制
單點登錄
Remember Me服務
安全的一些概念:身份認證、授權、會話管理、加密被認爲是構成應用安全的基礎要素。
身份認證,就是驗證用戶身份,典型的“登錄”過程就是身份認證的過程。
授權:也就是訪問控制(ac),也即某用戶可以可以使用應用的哪些功能?
會議管理:管理用戶特定的會話,即使在非Web或EJB應用。
加密:保持數據的安全使用的加密算法,同時仍然易於使用。
對於Session,在WEB應用中它基於HttpSession,而一般應用中默認使用企業會話管理。shiro的Session
用起來和HttpSession差不多,並且使用它不需要Http環境。
在最高的層次上講,shiro主要有三個主要的概念,它們分別是Subject、SecurityManager和Realms。
shiro使用Subject這一概念來描述當前用戶,‘User’這個詞通常隱含的指一個人,但是Subject可以是一個
人也可以代表第三方服務,守護賬戶,定時作業,或者其他類似的與軟件交互的事物。
所有Subject實例都與一個SecurityManager綁定,當你和一個Subject交互時,所有交互都會通過SecurityManager
轉換爲特定Subject的交互。
SecurityManager是shiro架構的核心,它扮演‘保護傘’對象的角色,與其他內部安全組件一起構成對象圖的核心。
SecurityManager及其內貿部對象圖一旦被應用配置,它基本上就被放在一邊不再被程序員使用了,
開發人員基本上總是在與Subject的相關API打交道。它在幕後支持Subject的安全操作。
Realms在shiro與你的應用程序的安全數據之間充當着橋樑或者說是連接器的作用。
從這種意義上講,Reaml就是一個特定的安全DAO,它爲shiro提供所需的數據。
在配置shiro時,你必須爲認證、授權指定至少一個可用的Realm。
shiro提供了現成的Realm連接到LDAP、關係數據庫(JDBC)、ini和properties文件等。
用戶可以使用自己的Realm
shiro的[urls]規則,例如
[urls]
/index.html = anon
/user/** = authc
/admin/** = authc, roles[administrator]
上面的3個URL分別表示根目錄下的index.html可以匿名訪問,user目錄下的所有資源
都需要經過認證後纔可訪問,admin目錄下的所有資源必須經過認證,並且需要管理員角色
才能訪問。