Apache Shiro(讀作“sheeroh”,即日語“城”)是一個開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。
Shiro的前身是JSecurity。
2004年,Les Hazlewood和Jeremy Haile創辦了Jsecurity。當時他們找不到適用於應用程序級別的合適Java安全框架,同時又對JAAS非常失望。2004年到2008年期間,JSecurity託管在SourceForge上,貢獻者包括Peter Ledbrook、Alan Ditzel和Tim Veil。
2008年,JSecurity項目貢獻給了Apache軟件基金會(ASF),並被接納成為Apache Incubator項目,由導師管理,目標是成為一個頂級Apache項目。期間,Jsecurity曾短暫更名為Ki(讀作“Key”),隨後因商標問題被社群更名為“Shiro”。
隨後項目持續在Apache Incubator中孵化,並增加了貢獻者Kalle Korhonen。2010年7月,Shiro社區發佈了1.0版,隨後社區創建了其項目管理委員會,並選舉Les Hazlewood為主席。2010年9月22日,Shrio成為Apache軟件基金會的頂級項目
Shiro認證:
創建SecurityManager--主動提交認證--SecurityManager認證--Authenticator認證--Realm認證
示例:創建一個maven項目並引入shior核心jar
認證流程code:
測試:
輸入錯誤的用戶名或者密碼 再次測試:
這是登陸之後測試結果,如果我們退出登陸狀態,再次測試:
創建SecurityManager--主動授權--SecurityManager授權--Authorizer授權--Realm獲取授權數據
基本代碼不變,就是為用戶添加一個管理員身份的標識(可以擁有多個身份標識)
測試:
多角色權限的驗證:
關於自定義Realm
內置Realm
iniRealm身份示例:
resouces目錄下創建自定義ini文件:(maven創建的項目,classpath指的就是resources目錄)
代碼:
權限管理示例:
關於JDBCRealm示例:
引入相關的mysql 與數據源依賴
測試代碼
JDBCRealm源碼:
這種默認的驗證表名是固定的,實際開放過程中,一般不會與之相同
自定義身份驗證
權限查詢設置
自定義realm(創建一個類繼承AuthorizingRealm)
關於shiro加密
創建MD5加密算法
在自定義realm設置算法
算出123456 加密後的值(實際上密碼保存到數據庫的時候,應該是被加密的,為了方便,直接省略這個過程)
然後這樣加密感覺力度還是不夠,我們給密碼加鹽
密碼加密時使用salt
設置salt
這樣就完成了,shiro做加密的話,總的來說過程還是蠻簡單的。
閱讀更多 十二說IT 的文章