- 前言
- 一、授權概述
- 二、使用者許可權
- 三、使用者授權流程
- 三、Spring Security授權方式
- 1、請求級別授權
- 2、方法級別授權
前言
本文介紹什麼是授權,Spring Security的授權配置有哪些,配合以下內容觀看效果更佳!!!
- 什麼是授權,授權有哪些流程,Spring Security的授權配置有幾種?請檢視九、Spring Boot整合Spring Security之授權概述
- HTTP請求授權的實現原理是什麼,如何配置HTTP請求授權?請檢視十、Spring Boot整合Spring Security之HTTP請求授權
- 方法授權的實現原理是什麼,如何配置方法授權?請檢視十一、Spring Boot整合Spring Security之方法授權
- 如何實現基於RBAC模型的授權方式?請檢視十二、Spring Boot整合Spring Security之基於RBAC模型的授權
一、授權概述
授權簡單來說就是判斷某個使用者能不能訪問某個介面,可以訪問時授權成功,不能訪問時授權失敗;使用者包括已登入的使用者和未登入的使用者即匿名使用者,介面包括介面地址和介面的請求型別,介面對於系統使用者來說可以簡單理解為選單按鈕。
目前最流行的許可權模型是RBAC許可權模型,這種模型的思想是將選單/介面/許可權按照完成某項任務的最小許可權進行分組,分出來的組即為角色,再按照使用者的職責授予相應的角色。其中選單/介面/許可權和角色之間為多對多的關係,即一項任務可能需要多個操作或者多項任務可能需要同一個操作;使用者與角色之間也是多對多的關係,即一個使用者可能需要完成多項任務或者不同使用者可能需要完成相同的任務。
Spring Security的授權還包括對認證結果、介面請求引數、介面返回值等更細粒度的處理。
二、使用者許可權
Spring Security中使用者的許可權介面為GrantedAuthority,並提供預設實現SimpleGrantedAuthority,SimpleGrantedAuthority有一個String屬性role,role用於判斷使用者是否允許訪問介面。
在配置介面許可權時還有兩個許可權的概念role(hasXxxRole)和authority(hasXxxAuthority),role和authority最終都會轉化為SimpleGrantedAuthority的role屬性,並和使用者的許可權作對比,以判斷使用者是否允許訪問介面,唯一的區別是role轉為SimpleGrantedAuthority的role屬性時會預設新增ROLE_
字首,而authority會直接轉化為SimpleGrantedAuthority的role屬性,即ROLE_{role}={authority}=simpleGrantedAuthority.role。
三、使用者授權流程
- 認證時設定使用者許可權
- 授權時獲取介面及其需要的許可權
- 校驗使用者許可權和介面許可權是否有交集
- 有交集時校驗成功呼叫介面
- 沒有交集時校驗失敗丟擲異常
三、Spring Security授權方式
1、請求級別授權
- 實現方式:過濾器
- 適用場景
- 基於URL的訪問控制
- 統一的安全策略
- 簡單地許可權控制
2、方法級別授權
- 實現方式:AOP(攔截器)
- 適用場景
- 細粒度的訪問控制
- 動態許可權檢查
- 基於業務邏輯的許可權控制