Apache Shiro簡介

做者:var dump
連接:https://zhuanlan.zhihu.com/p/23300328

最近要作一個基於Java C/S架構的項目,主要涉及權限管理這方面的東西。瞭解到Apache Shiro適合作這個。其官網上教程寫的很好,打算把這些教程翻譯成英文,這是第一篇。web

Apache shiro是什麼?

Apache Shiro是一款強大、靈活的開源安全管理框架,以十分優雅的方式處理authentication(身份驗證)、authorization(受權)、enterprise session(企業會話?)和cryptography()加密。算法

譯者:一些在Shiro中的專用名詞將不會譯爲中文,但譯者會根據本身的理解在括號中給出中文釋義。緩存

Apache Shiro的首要目標就是易於上手和容易理解。在軟件中,安全管理有時會很是複雜、痛苦,但Apache Shiro會讓它變得很是簡單。下面是Apache Shiro能夠作的事:安全

  • 鑑別用戶身份
  • 管理用戶權限,例如:判斷用戶是否有某一角色或用戶是否被容許作某一操做
  • 即便沒有web或EJB容器,也可使用session API
  • 在鑑別用戶身份時、權限管理時或session生命週期內進行一些操做
  • 能夠聚合一個或多個用戶權限數據源而且以用戶視圖的形式統一表現出來
  • 實現了單點登陸功能(SSO)
  • 無需登陸即可實現「記住我」這一功能
    ...

那麼Shiro能夠用在哪些類型的應用中呢?小到命令行程序,大到企業級應用,Shiro幾乎能夠用在任何場景中。session

Apache Shiro的特點

Apache Shiro是一款應用普遍的安全管理框架,有不少特點。下圖展現了Shiro的總體架構,本系列教程也會以此爲根據組織順序。多線程

 Shiro的目標是作好Authentication(身份鑑別)、Authorization(權限管理)、Session Management(會話管理)、Cryptography(加密)四個方面(這是軟件安全的四大基石)。架構

  • Authentication(身份鑑別):有時指登陸,鑑別用戶的身份
  • Authorization(權限管理):決定用戶是否有權訪問某物
  • Session Management(會話管理):即便不是web應用也不是EJB應用,仍然能夠管理具備明確用戶的session(會話)
  • Cryptography(加密):利用加密算法保證數據安全

爲了支持更多的應用場景,Shrio還具備其餘特點:併發

    • 支持web應用
    • 緩存:保證了安全管理的速度和效率
    • 併發:支持多線程應用
    • 測試:能夠經過單元測試和集成測試驗證程序的安全性
    • 「Run As」:容許用戶將某一身份賦予另外一用戶(在一些行政管理軟件中經常使用)
    • 「Remember Me」:在Session(會話)期間記住用戶身份,當只有強制要求登陸是才須要用戶登陸