一、认识认证、授权、鉴权和权限控制
认证、授权、鉴权和权限控制 全面的介绍认证、授权、鉴权和权限控制的概念
下面对本文讨论的四个概念用一个表格进行小结,
定义 | 英文 | 实现方式 | |
---|---|---|---|
认证 | 确认声明者的身份 | identification | 根据声明者独特的识别信息 |
授权 | 获取用户的委派权限 | authorization | 颁发一个授信媒介,不可被篡改,不可伪造,受保护 |
鉴权 | 对所声明的权限真实性进行鉴别的过程权限是一个抽象的逻辑概念,定义和配置可执行的操作,而控制是具体的实现方式,通过一定的方式控制操作的允许和禁止 | authentication | 鉴权和授权是一一对应关系,解析授信媒介,确认其合法性、有效性 |
权限控制 | 权限是一个抽象的逻辑概念,定义和配置可执行的操作,而控制是具体的实现方式,通过一定的方式控制操作的允许和禁止 | access/permission control | 实现方式多样,根据具体情况来实现。 |
二、为什么需要权限管理
参考资料:为什么需要权限管理?
安全性:误操作,认为破坏,数据泄露等
数据隔离:不同的权限能看到及操作不同的数据
明确的职责:运营,客服等不同角色,leader和dev等不同级别。
权限管理核心:
用户-权限:人员少,功能固定,或者特别简单的系统
RBAC(Role-Based Access Control)
用户-角色-权限,都适用
理想中的权限管理:
能实现角色级权限:RBAC
能实现功能级,数据级权限
简单,易操作,能够应对各种操作。
相关操作界面:
权限管理界面。角色管理界面,用户管理界面。
角色和权限关系维护界面,用户和角色关系维护界面
开源权限管理项目:
SpringSecurity
Apache shiiro
三、权限管理的方案
Shiro和Security对比
Shiro和Security的对比
Shiro简单灵活
Spring Security有更好的社区支持,功能比Shiro更加丰富
Shiro依赖性低,不需要任何框架和容器,可以独立运行,而Spring Security依赖Spring容器
Shiro
Shiro简介;Shiro与Spring Security区别;Spring Boot集成Shiro
Security
参考资料:
Spring Security 详解 从原理到源码,较全面,有配套视频。
SpringBoot+SpringSecurity集成Swagger3与Knife4j Swagger白名单配置
权限认证方案-第三方鉴权+token续期 比较了shiro
和spring security oauth2
。 介绍了token续期,细粒度鉴权和第三方鉴权。给对应第三方颁发appId
、和appSecret
,第三方通过拼接参数后利用指定加密算法进行加密访问
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
WebSecurityConfigurerAdapter过期处理
spring security简单的demo-适合萌新 pring security整合oauth2---oauth2 模板项目较全面,有源码。
微服务授权 springsecurity+auth2基本入门
SpringSecurity的简单使用 简单介绍了基于权限和基于角色的鉴权
@Inner使用及原理 https://www.yuque.com/pig4cloud/pig/hz5ppn
1、权限设计
权限系统的设计一般分为:权限设计 = 功能权限 + 数据权限
那么对于pigx的功能权限:
我们把请求按来源分为:外部请求和内部请求,其中外部请求分为登录请求和非登录请求
按目标资源分为:无注解、@Inner注解(仅内部请求)、@PreAuthorize注解(带权限控制)
单点登录SSO(single sign on)模式(单点登录+权限认证)
JJWT是一个提供端到端的JWT创建和验证的Java库。永远免费和开源(Apache License,版本2.0),JJW很容易使用和理解。它被设计成一个以建筑为中心的流畅界面,隐藏了它的大部分复杂性。
OAuth2 主要可以解决什么问题?
(1)开放系统间授权
微服务下前后端分离的统一认证授权服务,基于Spring Security OAuth2 + Spring Cloud Gateway实现单点登录
Spring Security 基于 Spring 框架,提供了一套Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。
单点登录
单点登录系统原理与实现,图文并茂 http无状态协议,多系统为什么要用单点登录,演化