标题解释

  • 用 Spring Security 实现认证和授权
  • OAuth 2.0 一种协议,支持第三方认证(分布式)

下一篇:https://lawsssscat.blog.csdn.net/article/details/105067494

人生苦短,及时行乐。
[x] shiro
[√] spring Security
[x] cas Server
[√] OAuth2.0
.
使用情况(下图),shiro 更多,这是由于shiro相对轻量级,想用就用。而 spring security 需要依托于 spring。
但,随着 springboot 脚手架的发展,想在spring 环境中使用 security 也是非常方便的
(不需要太多配置即可使用)

且,spring security 和 分布式、微服务、spring cloud系列的结合非常“丝滑”。
因此,<mark>从长远角度,spring security 更强大</mark>。

二者区别

  • Spring Security: 重量 级、功能丰富、spring 社区支持
  • Apache Shiro: 轻量 级、apache 社区支持

Spring Security 的核心功能

  • Authentication:认证,用户登录的验证 (你是谁)
  • 安全防护,防止跨域请求,session 攻击等(你在哪)
  • Authorization:授权,授权资源的访问权限(你能干什么)

登录认证核心技术

  • 同时支持多种认证方式(qq、weixin、github)
  • 同时支持多种前端渠道(手机、pc、)
  • 支持集群环境,跨应用工作,SESSION控制,控制用户权限,防护与认证相关的攻击

目标
可重用、企业级、认证和授权模块


技术点

【归档】:基本(fei)概念(hua)

认证方式

  • (单体应用)基于 session 的认证方式
    <mark>客户端:要求把授权信息放在cookie里</mark>
    <mark>服务端:登录信息存 session</mark>
  • 基于 token 的认证方式
    <mark>不指定授权信息的存储位置</mark> (如:cookie、localStorage)

授权的数据模型

  • 主体:Subject
  • 资源:Resource
    》功能资源:菜单、页面、按钮
    》数据资源(实体资源):商品信息、订单信息
  • 权限/许可:Permission

为了方便权限管理,我们通常会 添加 <mark>角色</mark>(对权限的打包)

因此,实际开发 <mark>一个模块</mark> 通常会分为以下 5 张表。

RBAC

  • 基于角色的访问控制(Role-Based Access Control) 【x】
    【可扩展性差:当角色权限发生变化,需要编码层面进行修改】

  • 基于资源的访问控制(Resource-Based Access Control)

End


任何身份认证,本质上都是基于对请求方的不信任所产生的。

协议角色和流程

  • 资源所有者(resource owner)
  • 资源服务器(client)
  • 授权服务器(authorization server)
  • 客户端/第三方协议(resource owner)