在嘗試保護你的應用時,你是否有過挫敗感?是否覺得現有的Java安全解決方案難以使用,只會讓你更糊涂?本文介紹的Apache Shiro,是一個不同尋常的Java安全框架,為保護應用提供了簡單而強大的方法。本文還解釋了Apache Shiro的項目目標、架構理念以及如何使用Shiro為應用安全保駕護航。
什么是Apache Shiro?Apache Shiro(發音為“shee-roh”,日語“堡壘(Castle)”的意思)是一個強大易用的Java安全框架,提供了認證、授權、加密和會話管理功能,可為任何應用提供安全保障 - 從命令行應用、移動應用到大型網絡及企業應用。
Shiro為解決下列問題(我喜歡稱它們為應用安全的四要素)提供了保護應用的API:
相關廠商內容
Windows Azure在中國正式開啟在線直付 率先在國內落地的全球化云服務,深度了解Windows Azure 利用開發測試云實現精益創業、快速迭代 Windows Azure自管理服務實現近乎零停機維護 Windows Azure專區上線,全面了解云服務 相關贊助商
Windows Azure專區上線,全面了解云服務精彩呈現!
•認證 - 用戶身份識別,常被稱為用戶“登錄”;
•授權 - 訪問控制;
•密碼加密 - 保護或隱藏數據防止被偷窺;
•會話管理 - 每用戶相關的時間敏感的狀態。
Shiro還支持一些輔助特性,如Web應用安全、單元測試和多線程,它們的存在強化了上面提到的四個要素。
為何要創建Apache Shiro?
對于一個框架來講,使其有存在價值的最好例證就是有讓你去用它的原因,它應該能完成一些別人無法做到的事情。要理解這一點,需要了解Shiro的歷史以及創建它時的其他替代方法。
在2008年加入Apache軟件基金會之前,Shiro已經5歲了,之前它被稱為JSecurity項目,始于2003年初。當時,對于Java應用開發人員而言,沒有太多的通用安全替代方案 - 我們被Java認證/授權服務(或稱為JAAS)緊緊套牢了。JAAS有太多的缺點 - 盡管它的認證功能尚可忍受,但授權方面卻顯得拙劣,用起來令人沮喪。此外,JAAS跟虛擬機層面的安全問題關系非常緊密,如判斷JVM中是否允許裝入一個類。作為應用開發者,我更關心應用最終用戶能做什么,而不是我的代碼在JVM中能做什么。
由于當時正從事應用開發,我也需要一個干凈、容器無關的會話機制。在當時,“這場游戲”中唯一可用的會話是HttpSessions,它需要Web容器;或是EJB 2.1里的有狀態會話Bean,這又要EJB容器。而我想要的一個與容器脫鉤、可用于任何我選擇的環境中的會話。
最后就是加密問題。有時,我們需要保證數據安全,但是Java密碼架構(Java Cryptography Architecture)讓人難以理解,除非你是密碼學專家。API里到處都是Checked Exception,用起來很麻煩。我需要一個干凈、開箱即用的解決方案,可以在需要時方便地對數據加密/解密。
新聞熱點
疑難解答