1. 程式人生 > >spring-boot(八) springboot整合shiro-登入認證和許可權管理

spring-boot(八) springboot整合shiro-登入認證和許可權管理

Apache Shiro

What is Apache Shiro?

Apache Shiro是一個功能強大、靈活的,開源的安全框架。它可以乾淨利落地處理身份驗證、授權、企業會話管理和加密。

Apache Shiro的首要目標是易於使用和理解。安全通常很複雜,甚至讓人感到很痛苦,但是Shiro卻不是這樣子的。一個好的安全框架應該遮蔽複雜性,向外暴露簡單、直觀的API,來簡化開發人員實現應用程式安全所花費的時間和精力。

Shiro能做什麼呢?

  • 驗證使用者身份
  • 使用者訪問許可權控制,比如:1、判斷使用者是否分配了一定的安全形色。2、判斷使用者是否被授予完成某個操作的許可權
  • 在非 web 或 EJB 容器的環境下可以任意使用Session API
  • 可以響應認證、訪問控制,或者 Session 生命週期中發生的事件
  • 可將一個或以上使用者安全資料來源資料組合成一個複合的使用者 “view”(檢視)
  • 支援單點登入(SSO)功能
  • 支援提供“Remember Me”服務,獲取使用者關聯資訊而無需登入

等等——都整合到一個有凝聚力的易於使用的API。

Shiro 致力在所有應用環境下實現上述功能,小到命令列應用程式,大到企業應用中,而且不需要藉助第三方框架、容器、應用伺服器等。當然 Shiro 的目的是儘量的融入到這樣的應用環境中去,但也可以在它們之外的任何環境下開箱即用。

Apache Shiro Features 特性

Apache Shiro是一個全面的、蘊含豐富功能的安全框架。下圖為描述Shiro功能的框架圖:

Authentication(認證), Authorization(授權), Session Management(會話管理), Cryptography(加密)被 Shiro 框架的開發團隊稱之為應用安全的四大基石。那麼就讓我們來看看它們吧:

  • Authentication(認證):使用者身份識別,通常被稱為使用者“登入”
  • Authorization(授權):訪問控制。比如某個使用者是否具有某個操作的使用許可權。
  • Session Management(會話管理):特定於使用者的會話管理,甚至在非web 或 EJB 應用程式。
  • Cryptography(加密):在對資料來源使用加密演算法加密的同時,保證易於使用。

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

  • Web支援:Shiro 提供的 web 支援 api ,可以很輕鬆的保護 web 應用程式的安全。
  • 快取:快取是 Apache Shiro 保證安全操作快速、高效的重要手段。
  • 併發:Apache Shiro 支援多執行緒應用程式的併發特性。
  • 測試:支援單元測試和整合測試,確保程式碼和預想的一樣安全。
  • “Run As”:這個功能允許使用者假設另一個使用者的身份(在許可的前提下)。
  • “Remember Me”:跨 session 記錄使用者的身份,只有在強制需要時才需要登入。

注意: Shiro不會去維護使用者、維護許可權,這些需要我們自己去設計/提供,然後通過相應的介面注入給Shiro

High-Level Overview 高階概述

在概念層,Shiro 架構包含三個主要的理念:Subject,SecurityManager和 Realm。下面的圖展示了這些元件如何相互作用,我們將在下面依次對其進行描述。

  • Subject:當前使用者,Subject 可以是一個人,但也可以是第三方服務、守護程序帳戶、時鐘守護任務或者其它–當前和軟體互動的任何事件。
  • SecurityManager:管理所有Subject,SecurityManager 是 Shiro 架構的核心,配合內部安全元件共同組成安全傘。
  • Realms:用於進行許可權資訊的驗證,我們自己實現。Realm 本質上是一個特定的安全 DAO:它封裝與資料來源連線的細節,得到Shiro 所需的相關的資料。在配置 Shiro 的時候,你必須指定至少一個Realm 來實現認證(authentication)和/或授權(authorization)。

我們需要實現Realms的Authentication 和 Authorization。其中 Authentication 是用來驗證使用者身份,Authorization 是授權訪問控制,用於對使用者進行的操作授權,證明該使用者是否允許進行當前操作,如訪問某個連結,某個資原始檔等。

RBAC

RBAC 是基於角色的訪問控制(Role-Based Access Control )在 RBAC 中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理起來很方便。

相關推薦

spring-boot() springboot整合shiro-登入認證許可權管理

Apache Shiro What is Apache Shiro? Apache Shiro是一個功能強大、靈活的,開源的安全框架。它可以乾淨利落地處理身份驗證、授權、企業會話管理和加密。 Apache Shiro的首要目標是易於使用和理解。安全通常很複雜,甚至讓人感到很痛苦,但是Shiro卻不是

springboot(十四):springboot整合shiro-登入認證許可權管理

這篇文章我們來學習如何使用Spring Boot整合Apache Shiro。安全應該是網際網路公司的一道生命線,幾乎任何的公司都會涉及到這方面的需求。在Java領域一般有Spring Security、Apache Shiro等安全框架,但是由於Spring Sec

springboot整合shiro-登入認證許可權管理

這篇文章我們來學習如何使用Spring Boot整合Apache Shiro。安全應該是網際網路公司的一道生命線,幾乎任何的公司都會涉及到這方面的需求。在Java領域一般有Spring Security、Apache Shiro等安全框架,但是由於Spring Securit

SpringBoot整合Shiro登入認證授權(附demo)

SpringBoot整合Shiro登入認證和授權 廢話不多說,直接上程式碼: 程式碼有點多,想直接拿demo的直接拉到底 ps:demo忘了在哪拿的了,在他的基礎上改了一些 步驟一:pom.xml匯入依賴jar包 <dependencies

Spring Cloud之路:(七)SpringBoot+Shiro實現登入認證許可權管理

一、Shiro介紹 1、Shiro是什麼? Shiro是Apache下的一個開源專案,我們稱之為Apache Shiro。它是一個很易用與Java專案的的安全框架,提供了認證、授權、加密、會話管理,與 Spring Security 一樣都是做一個許可權的安全框架,但是與Spri

SpringBoot學習筆記(六):SpringBoot實現Shiro登入控制許可權控制

登入模組:在登入時必須呼叫 授權模組:不是一登入就調動,而是當角色許可權控制時才會呼叫 登入控制 環境搭建在上一篇。 資料庫表 表名:role 欄位:id rolename 表名:user 欄位:id username sex roleid 在程式碼中簡歷資料庫表對應的實

shiro實現APP、web統一登入認證許可權管理

轉自:http://www.cnblogs.com/sunshine-2015/p/5515429.html 先說下背景,專案包含一個管理系統(web)和入口網站(web),還有一個手機APP(包括Android和IOS),三個系統共用一個後端,在後端使用shiro進行

Spring Boot 2.X(十):整合 Spring Security-登入認證許可權控制

前言 在企業專案開發中,對系統的安全和許可權控制往往是必需的,常見的安全框架有 Spring Security、Apache Shiro 等。本文主要簡單介紹一下 Spring Security,再通過 Spring Boot 整合開一個簡單的示例。 Spring Security 什麼是 Spring Se

SpringBoot+shiro整合學習之登入認證許可權控制

學習任務目標 使用者必須要登陸之後才能訪問定義連結,否則跳轉到登入頁面。 對連結進行許可權控制,只有噹噹前登入使用者有這個連結訪問許可權才可以訪問,否則跳轉到指定頁面。 輸入錯誤密碼使用者名稱或則使用者被設定為靜止登入,返回相應json串資訊 匯

springboot整合shiro-登入失敗次數限制()

這次講講如何限制使用者登入嘗試次數,防止壞人多次嘗試,惡意暴力破解密碼的情況出現,要限制使用者登入嘗試次數,必然要對使用者名稱密碼驗證失敗做記錄,Shiro中使用者名稱密碼的驗證交給了CredentialsMatcher 所以在CredentialsMatc

Spring Boot 整合 Shiro實現認證及授權管理

Spring Boot Shiro 本示例要內容 基於RBAC,授權、認證 加密、解密 統一異常處理 redis session支援 介紹 Apache Shiro 是一個功能強大且易於使用的Java安全框架,可執行身份驗證,授權,加密和會話管理。藉助Shiro易於理解的API,您可以快速輕鬆地保護任何應

springboot整合shiro認證出現報錯(Submitted credentials for token...)

springboot整合shiro時認證出現報錯無非就是密碼不匹配 可能發生的原因: 前端傳的密碼是明文,而後臺儲存的是hash值,導致先後臺不匹配報錯 如果資料庫儲存的密碼是加密的 那麼要 從前端獲取密碼後,在Java裡將其轉換成hash值 如果jav

spring boot 整合shiro(使用者授權許可權控制)

(1) pom.xml中新增Shiro依賴 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId>

SpringBoot整合Shiro 實現動態載入許可權

一、前言 本文小編將基於 SpringBoot 整合 Shiro 實現動態uri許可權,由前端vue在頁面配置uri,Java後端動態重新整理許可權,不用重啟專案,以及在頁面分配給使用者 角色 、 按鈕 、uri 許可權後,後端動態分配許可權,使用者無需在頁面重新登入才能獲取最新許可權,一切許可權動態載入,靈

Laravel-使用中介軟體做使用者認證許可權管理

Laravel 中介軟體提供了一種方便的機制來過濾進入應用的 HTTP請求,例如,Laravel包含驗證使用者身份許可權的中介軟體。如果使用者沒有通過身份驗證,中介軟體會重定向到登入頁,引導使用者登入。反之,中介軟體將允許該請求繼續傳遞到應用程式。 當然,除了身份驗證以外

如何使用Google作為認證方配置Spring Boot 2 Security5整合的OAuth2登入我們自己的工程專案------範例1

Google客戶端授權生成client-id和client-secret我們需要登入以下地址 https://console.developers.google.com 第1部分: 範例工程專案結構如下: Enabling OAuth 2 login Supp

Spring Boot 整合Shiro實現登陸認證許可權控制

我在做畢設的時候,使用了Shiro作為專案中的登陸認證和許可權控制。 下面是我專案中如何實現整合shiro的學習記錄。 匯入shiro依賴包到pom.xml <!-- Shiro依賴 --> <dependency>

SpringBoot(十四):springboot整合shiro-登錄認證權限管理

sets man throws 將不 匹配 跳轉 ida 管理員 領域 原文出處: 純潔的微笑 這篇文章我們來學習如何使用Spring Boot集成Apache Shiro。安全應該是互聯網公司的一道生命線,幾乎任何的公司都會涉及到這方面的需求。在Java領域一般有Spri

SpringBoot整合Shiro、JWT 進行請求認證鑑權

什麼是JWT? JSON Web Token(JWT)是一個開放標準(RFC 7519),它定義了一種緊湊且獨立的方式,可以在各方之間作為JSON物件安全地傳輸資訊。此資訊可以通過數字簽名進行驗證和信任。JWT可以使用祕密(使用HMAC演算法)或使用RSA或ECDSA的公鑰/私鑰對進

springboot整合shiro認證時"username"更改為"account"或自定義的ShiroConfig配置

springboot整合shiro認證時"username"更改為"account"或自定義的配置package com.sxt.zhy.springboot.config; import java.util.HashMap; import java.util.Linked