天天看點

Spring Boot(九):SpringBoot整合Shiro做登入認證和權限管理

 Shiro 是一個功能強大、靈活的,開源的安全架構。它可以幹淨利落地處理身份驗證、授權、企業會話管理和加密。Shiro 的首要目标是易于使用和了解。安全通常很複雜,甚至讓人感到很痛苦,但是 Shiro 卻不是這樣子的。一個好的安全架構應該屏蔽複雜性,向外暴露簡單、直覺的 API,來簡化開發人員實作應用程式安全所花費的時間和精力。

Shiro 能做什麼呢?

  1. 驗證使用者身份
  2. 使用者通路權限控制,比如:1、判斷使用者是否配置設定了一定的安全角色。2、判斷使用者是否被授予完成某個操作的權限
  3. 在非 Web 或 EJB 容器的環境下可以任意使用 Session API
  4. 可以響應認證、通路控制,或者 Session 生命周期中發生的事件
  5. 可将一個或以上使用者安全資料源資料組合成一個複合的使用者 "view"(視圖)
  6. 支援單點登入(SSO)功能
  7. 支援提供“Remember Me”服務,擷取使用者關聯資訊而無需登入

      …

等等——都內建到一個有凝聚力的易于使用的 API。

Shiro的架構圖:

Authentication(認證), Authorization(授權), Session Management(會話管理), Cryptography(加密)被 Shiro 架構的開發團隊稱之為應用安全的四大基石。

Spring Boot(九):SpringBoot整合Shiro做登入認證和權限管理
  1. Authentication(認證):使用者身份識别,通常被稱為使用者“登入”
  2. Authorization(授權):通路控制。比如某個使用者是否具有某個操作的使用權限。
  3. Session Management(會話管理):特定于使用者的會話管理,甚至在非web 或 EJB 應用程式。
  4. Cryptography(加密):在對資料源使用加密算法加密的同時,保證易于使用。

還有其他的功能來支援和加強這些不同應用環境下安全領域的關注點。特别是對以下的功能支援:

  • Web支援:Shiro 提供的 Web 支援 api ,可以很輕松的保護 Web 應用程式的安全。
  • 緩存:緩存是 Apache Shiro 保證安全操作快速、高效的重要手段。
  • "Remember Me":跨 session 記錄使用者的身份,隻有在強制需要時才需要登入。
  • "Run As":這個功能允許使用者假設另一個使用者的身份(在許可的前提下)。
  • 測試:支援單元測試和內建測試,確定代碼和預想的一樣安全。
  • 并發:Apache Shiro 支援多線程應用程式的并發特性。
注意: Shiro 不會去維護使用者、維護權限,這些需要我們自己去設計/提供,然後通過相應的接口注入給 Shiro

繼續閱讀