博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Security oAuth2
阅读量:3926 次
发布时间:2019-05-23

本文共 1906 字,大约阅读时间需要 6 分钟。

什么是oauth

oauth协议为用户资源的授权提供了一个安全的简易的标准,与以往授权不同的是oauth的授权不会使第三方触及到用户的账号信息,第三方不需要使用用户的用户名和密码就可以申请该用户的资源
名词解释
第三方应用程序:客户端
http服务提供商:我们的云笔记产品以及 QQ、微信等都可以称之为“服务提供商”。
资源所有者:用户
用户代理:浏览器
认证服务器:服务提供商专门用来处理认证的服务器,
资源服务器:即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。简单点说就是资源的访问入口,比如上节中提到的“云笔记服务”和“云相册服务”都可以称之为资源服务器

什么是spring security

spring security是spring的一个安全框架,前身为acegi security,可以为spring企业应用系统提供声明式的安全访问控制,spring security基于servlet过滤器,ioc,aop,为web请求和方法调用提供身份确认和授权处理,避免代码的耦合

令牌的访问与刷新

Access Token 是客户端访问资源服务器的令牌。拥有这个令牌代表着得到用户的授权。然而,这个授权应该是 临时 的,有一定有效期。这是因为,Access Token 在使用的过程中 可能会泄露。给 Access Token 限定一个 较短的有效期 可以降低因 Access Token 泄露而带来的风险。 然而引入了有效期之后,客户端使用起来就不那么方便了。每当 Access Token 过期,客户端就必须重新向用户索要授权。这样用户可能每隔几天,甚至每天都需要进行授权操作。这是一件非常影响用户体验的事情。希望有一种方法,可以避免这种情况。 于是 oAuth2.0 引入了 Refresh Token 机制
Refresh Token
Refresh Token 的作用是用来刷新 Access Token。认证服务器提供一个刷新接口,例如: http://www.funtl.com/refresh?refresh_token=&client_id=
传入 refresh_token 和 client_id,认证服务器验证通过后,返回一个新的 Access Token。为了安全,oAuth2.0 引入了两个措施: oAuth2.0 要求,Refresh Token 一定是保存在客户端的服务器上 ,而绝不能存放在狭义的客户端(例如 App、PC 端软件)上。调用 refresh 接口的时候,一定是从服务器到服务器的访问。 oAuth2.0 引入了 client_secret 机制。即每一个 client_id 都对应一个 client_secret。这个 client_secret 会在客户端申请 client_id 时,随 client_id 一起分配给客户端。客户端必须把 client_secret 妥善保管在服务器上,决不能泄露。刷新 Access Token 时,需要验证这个 client_secret。
客户端授权模式
implicit 简化模式
authorization 授权码模式
resource owner password credentail 密码模式
client credentials 客户端模式

RBAC 基于角色的权限控制

RBAC(Role-Based Access
Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般是多对多的关系

目的

在我们的 oAuth2 系统中,我们需要对系统的所有资源进行权限控制,
系统中的资源包括: 静态资源(对象资源):功能操作、数据列
动态资源(数据资源):数据

系统的目的就是对应用系统的所有对象资源和数据资源进行权限控制,比如:功能菜单、界面按钮、数据显示的列、各种行级数据进行权限的操控 #

对象关系
权限
系统的所有权限信息。权限具有上下级关系,是一个树状的结构
用户
系统的具体操作者,可以归属于一个或多个角色,它与角色的关系是多对多的关系
角色
为了对许多拥有相似权限的用户进行分类管理,定义了角色的概念,例如系统管理员、管理员、用户、访客等角色。角色具有上下级关系,可以形成树状视图,父级角色的权限是自身及它的所有子角色的权限的综合。父级角色的用户、父级角色的组同理可推。

转载地址:http://bikgn.baihongyu.com/

你可能感兴趣的文章
poj 2352 Stars(简单树状数组)此题也可以用线段树来做
查看>>
树状数组详细解释
查看>>
hdu 1596 find the safest road(最短路求最大值的题目,有两种稍微不同的处理方式)
查看>>
poj 1195 Mobile phones(二维的树状数组)得好好看。。。
查看>>
poj 2481 Cows(树状数组)题目有陷阱,转换后与stars类似
查看>>
poj 3067 Japan(树状数组,注意题目向树状数组的转换)
查看>>
A. On Segment's Own Points
查看>>
codeforces 397B. On Corruption and Numbers
查看>>
问题 E : 坤哥的难题 (题目本来觉得很难,但是数据很水,居然简单的for就AC)
查看>>
问题 F : 8 (做了这道题目,我才发现原来汉语的题目是如此的难懂)
查看>>
SqlMapConfig.xml中的setting属性设置
查看>>
hdu 3172 Virtual Friends(简单并查集)
查看>>
find the most comfortable road(并查集加贪心)
查看>>
Junk-Mail Filter(并查集,删除结点,虚父节点)
查看>>
A Bug's Life (并查集,同性恋问题,注意处理性别)
查看>>
True Liars (并查集+dp,待续、、)
查看>>
选美大赛(线段树)
查看>>
超级玛丽(简单模拟超时)
查看>>
括号东东(dp+字符串)
查看>>
hdu 1558 Segment set(并查集+计算几何线段相交)
查看>>