Spring Boot的Security安全控制
在Web項目開發中,安全控制是非常重要的,不同的人配置不同的權限,這樣的系統才安全。最常見的權限框架有Shiro和Spring Security。Shiro偏向于權限控制,而Spring Security能實現權限控制和安全控制,是一個非常全面的安全框架,在項目開發中有非常廣泛的用途。本章重點介紹SpringSecurity框架的相關知識。
認識Spring Security
Spring Security是一個為Spring企業應用系統提供聲明式安全訪問控制解決方案的安全框架,它是由Spring團隊提供的。Spring Security提供一組可以在Spring應用上下文中配置的Bean,能充分地利用Spring的IoC、DI和AOP的功能為項目提供聲明式安全訪問控制功能,減少因安全控制而需要編寫大量重復代碼的工作,從而提升項目代碼的質量。
Spring Security框架有以下4大特性:
全面且可擴展地支持身份驗證和授權;
防御會話固定、單機劫持和跨站請求偽造等攻擊;
支持Servlet API集成;
支持與Spring Web MVC集成。
Spring Security框架支持以下兩種Web應用的安全認證。
1. 用戶認證(Authentication)
用戶認證指的是驗證某個用戶是否為系統的合法用戶,確認用戶能否訪問該系統。用戶認證一般要求用戶提供用戶名、密碼和驗證碼。SpringSecurity通過校驗用戶名、密碼和驗證碼來完成認證的過程。
2. 用戶授權(Authorization)
用戶授權指的是驗證來自Web的某個用戶是否有權限執行某個操作。在一個完整的系統中,不同級別的用戶具有不同的權限。例如,對于一個文件來說,有的用戶只能讀取,而有的用戶可以修改和刪除。一般而言,系統中的權限模塊會為不同的用戶分配不同的角色,且每個角色有不同的權限,每個用戶都有不同的角色。
Spring Security的執行流程如下:首先用戶在登錄時輸入登錄信息,登錄驗證器會完成登錄認證并將當前用戶的登錄認證信息存儲到請求上下文中,再調用其他業務,如訪問接口和調用方法時,可以隨時從上下文中獲取用戶的登錄信息和用戶的基本信息,再根據認證信息獲取權限信息,通過權限信息和特定的授權策略決定是否授權,從而達到認證和授權的目的。