Spring Security
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Spring Security OAuth2 自定义 token Exception
https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/spring-security-OAuth208.png1. 前言在使用Spring Security Oauth2登录和鉴权失败时,默认返回的异常信息如下{ "error": "unauthorized", "error_description": "Full authentication is required to原创 2020-06-02 01:09:22 · 861 阅读 · 0 评论 -
Spring Security OAuth2 permitAll() 方法小记
1. 前言在使用spring-security-oauth2时,虽然配置了.antMatchers("/permitAll").permitAll(),但如果在header中 携带Authorization Bearer xxxx,OAuth2AuthenticationProcessingFilter还是会去校验Token的正确性,如果Token合法,可以正常访问,否则,请求失败。他的需求是当配置.permitAll()时,即使携带Token,也可以直接访问。2. 解决思路根据Spring..原创 2020-06-02 00:56:01 · 1235 阅读 · 0 评论 -
Spring Boot 安全框架 Spring Security 入门
1. 概述基本上,在所有的开发的系统中,都必须做认证(authentication)和授权(authorization),以保证系统的安全性。???? 考虑到很多胖友对认证和授权有点分不清楚,艿艿这里引用一个网上有趣的例子:FROM《认证 (authentication) 和授权 (authorization) 的区别》authentication [ɔ,θɛntɪ'keʃən] 认证...原创 2020-04-30 02:19:15 · 4985 阅读 · 2 评论 -
Spring Security 源码分析十六:Spring Security 项目实战
1. 前言本章是根据前面Spring Security系列实现一个基于角色的权限管理系统。1.1 技术栈Spring Boot Spring Security Spring Social(需配置host127.0.0.1 www.merryyou.cn) Spring Data JPA Freemarker Mysql Redis 前端miniui(非开源)1.2 效果图1.3 部分代码$.ajax({ url: "${re.contextPat原创 2020-06-02 00:37:45 · 150 阅读 · 0 评论 -
Spring Security 源码分析十五:Spring Security 页面权限控制
1. 前言在Spring Security源码分析十三:Spring Security 基于表达式的权限控制中,我们只是在后台增加了权限控制,并未在页面做任何处理,与之对应的按钮和链接还是会显示在页面上,用户体验较差。本章使用Spring Security标签库来包裹需要保护的内容。1.1 freemarker中使用security标签1.1.1 增加security标签库依赖<dependency> <groupId>javax.servlet</g原创 2020-06-02 00:29:57 · 200 阅读 · 0 评论 -
Spring Security 源码分析十四:Spring Social 绑定与解绑
1. 前言在之前的Spring Social系列中,我们只是实现了使用服务提供商账号登录到业务系统中,但没有与业务系统中的账号进行关联。本章承接之前社交系列来实现社交账号与业务系统账号的绑定与解绑。Spring-Security源码分析三-Spring-Social社交登录过程 Spring-Security源码分析四-Spring-Social社交登录过程 Spring-Security源码分析六-Spring-Social社交登录源码解析1.1 UserConnectioncreat原创 2020-06-02 00:23:21 · 198 阅读 · 0 评论 -
Spring Security 源码分析十三:Spring Security 权限控制
1. 前言spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。1.1 常见的表达式Spring Security可用表达式对象的基类是SecurityExpressionRoot。表达式 描述 hasRole([role]) 用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去除参考Remove the ROLE_ hasAnyRole([ro.原创 2020-06-02 00:12:37 · 244 阅读 · 0 评论 -
Spring Security 源码分析十二:Spring Security OAuth2 基于JWT 实现单点登录
单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指,只需要单一的注销动作,就可以结束对于多个系统的访问权限。1. Security OAuth2 单点登录流程.原创 2020-06-02 00:05:52 · 176 阅读 · 0 评论 -
Spring Security 源码分析十一:Spring Security OAuth2 整合 JWT
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。1. JWT组成eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.原创 2020-06-02 00:01:53 · 991 阅读 · 0 评论 -
Spring Security 源码分析十:初识 Spring Security OAuth2
OAuth 是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而不需要将用户名和密码提供给第三方应用。OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站在特定的时段内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息。更多OAuth2请参考理解OAuth 2.01. 项目准备添加依赖<dependency> .原创 2020-06-02 00:01:27 · 260 阅读 · 0 评论 -
Spring Security 源码分析九:Spring Security Session 管理
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。1. Session管理本文.原创 2020-06-02 00:01:06 · 242 阅读 · 0 评论 -
Spring Security 源码分析八:Spring Security 退出
1. 退出原理清除Cookie 清除当前用户的remember-me记录 使当前session失效 清空当前的SecurityContext 重定向到登录界面Spring Security的退出请求(默认为/logout)由LogoutFilter过滤器拦截处理。1.1 退出的实现主页中添加退出链接<a href="/signOut">退出</a>配置MerryyouSecurityConfig...... .and() .原创 2020-06-01 00:31:57 · 269 阅读 · 0 评论 -
Spring Security 源码分析七:Spring Security 记住我
有这样一个场景——有个用户初访并登录了你的网站,然而第二天他又来了,却必须再次登录。于是就有了“记住我”这样的功能来方便用户使用,然而有一件不言自明的事情,那就是这种认证状态的”旷日持久“早已超出了用户原本所需要的使用范围。这意味着,他们可以关闭浏览器,然后再关闭电脑,下周或者下个月,乃至更久以后再回来,只要这间隔时间不要太离谱,该网站总会知道谁是谁,并一如既往的为他们提供所有相同的功能和服务——与许久前他们离开的时候别无二致。1. 记住我基本原理用户认证成功之后调用RemeberMeSer.原创 2020-06-01 00:22:15 · 136 阅读 · 0 评论 -
Spring Security 源码分析六:Spring Social 社交登录源码解析
1. 引言OAuth2是一种授权协议,简单理解就是它可以让用户在不将用户名密码交给第三方应用的情况下,第三方应用有权访问用户存在服务提供商上面的数据。1.1 Spring Social 基本原理访问第三方应用 将用户请求导向服务提供商 用户同意授权 携带授权码返回第三方莹莹 第三方应用携带授权码到服务提供商申请令牌 服务提供商返回令牌 获取用户基本信息 根据用户信息构建Authentication放入SecurityContext中如果在SecurityContext中放入一.原创 2020-06-01 00:04:45 · 220 阅读 · 0 评论 -
Spring Security 源码分析五:Spring Security 短信登录
1. 概述在Spring Security源码分析一:Spring Security认证过程和Spring Security源码分析二:Spring Security授权过程两章中。我们已经详细解读过Spring Security如何处理用户名和密码登录。(其实就是过滤器链)本章我们将仿照用户名密码来显示短信登录。1.1 目录结构1.2 SmsCodeAuthenticationFilterSmsCodeAuthenticationFilter对应用户名密码登录的UsernamePass原创 2020-06-01 00:04:26 · 232 阅读 · 0 评论 -
Spring Security 源码分析四:Spring Social 实现微信社交登录
1. 前言在上一章Spring-Security源码分析三-Spring-Social社交登录过程中,我们已经实现了使用Spring Social+Security的QQ社交登录。本章我们将实现微信的社交登录。(微信和QQ登录的大体流程相同,但存在一些细节上的差异,下面我们来简单实现一下)1.1 准备工作熟悉OAuth2.0协议标准,微信登录是基于OAuth2.0中的authorization_code模式的授权登录; 微信开放平台申请网站应用开发,获取appid和appsecret 熟读网原创 2020-06-01 00:04:13 · 220 阅读 · 0 评论 -
Spring Security 源码分析三:Spring Social 实现 QQ 社交登录
社交登录又称作社会化登录(Social Login),是指网站的用户可以使用腾讯QQ、人人网、开心网、新浪微博、搜狐微博、腾讯微博、淘宝、豆瓣、MSN、Google等社会化媒体账号登录该网站。1. OAuth2.0的认证流程示意图请求第三方应用 第三方应用将用户请求导向服务提供商 用户同意授权 服务提供商返回code client根据code去服务提供商换取令牌 返回令牌 获取用户信息在标准的OAuth2协议中,1-6步都是固定,只有最后一步,不通的服务提供商返回的用户信息是不.原创 2020-06-01 00:04:00 · 360 阅读 · 0 评论 -
Spring Security 源码分析二:Spring Security 授权过程
1. 前言本文是接上一章Spring Security源码分析一:Spring Security认证过程进一步分析Spring Security用户名密码登录授权是如何实现得;2. 类图3. 调试过程使用debug方式启动https://github.com/longfeizheng/logback该项目,浏览器输入http://localhost:8080/persons,用户名随意,密码123456即可;4. 源码分析如图所示,显示了登录认证过程中的filters相关的调..原创 2020-06-01 00:03:46 · 155 阅读 · 0 评论 -
Spring Security 源码分析一:Spring Security 认证过程
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。1. 类图为了方便理解Spring Security认证流程.原创 2020-05-15 00:38:40 · 223 阅读 · 0 评论