Spring Security OAuth2.0
文章平均质量分 60
Spring Security OAuth2.0
九宫格输入法
正在码代码ing
展开
-
19.SpringSecurity存在的问题及解决方案
一般情况下 ,Spring Security 应用在一个单体项目中,此时只存在一个独立的项目,你访问一个资源,需要输入用户名和密码就行了随着软件环境和需求的变化,软件的架构通常都会由单体结构演变成具有分布式架构的分布式系统。而分布式系统的每个服务都会有认证、授权的需求。如果每个服务都实现一套认证逻辑,就会非常冗余并且不现实。而针对分布式系统的特点,一般就会需要一套独立的第三方系统来提供统一的授权认证服务。原创 2022-09-14 18:26:01 · 1155 阅读 · 0 评论 -
18.SpringSecurity-web权限方案-CSRF功能
CSRF 理解 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。 跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些原创 2022-05-07 17:11:04 · 396 阅读 · 0 评论 -
17.SpringSecurity-web权限方案-自动登录(功能实现)
创建数据库表CREATE TABLE `persistent_logins` ( `username` varchar(64) NOT NULL, `series` varchar(64) NOT NULL, `token` varchar(64) NOT NULL, `last_used` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`series`)) ENG原创 2022-04-26 10:48:10 · 939 阅读 · 0 评论 -
16.SpringSecurity-web权限方案-自动登录(原理分析)
实现原理 1.首次登录游览器保存cookie加密串Token,数据库保存cookie加密串及用户信息; 2.再次访问,通过游览器中保存的cookie加密串获取数据库中的用户信息,并进行认证登录;具体流程源码 之前有讲过UsernamePasswordAuthenticationFilter是过滤器链中的其中之一,其作用是对/login 的 POST 请求做拦截,校验表单中用户名,密码。 attemptAuthentication方法就是其具体的实现,重点不是这里,是校验之后的逻辑,所原创 2022-04-26 10:36:43 · 414 阅读 · 0 评论 -
15.SpringSecurity-web权限方案-用户注销
success.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><h1>登录成功!</h1><a href="/api/auth/logout">退出</a></body>&原创 2022-04-24 22:05:31 · 285 阅读 · 0 评论 -
14.SpringSecurity-web权限方案-用户授权(注解使用)
@Secured 判断是否具有角色,另外需要注意的是这里匹配的字符串需要添加前缀ROLE_; 使用注解先要开启注解功能,在配置类或者启动类,一般在启动类上@MapperScan({"net.master.security.app.masterspringsecurity.dao"})@SpringBootApplication@EnableGlobalMethodSecurity(securedEnabled=true)public class App { public stati原创 2022-04-24 22:01:38 · 476 阅读 · 0 评论 -
13.SpringSecurity-web权限方案-用户授权(基于角色访问控制)
hasRole方法 如果用户具备给定角色就允许访问,否则出现 403。 如果当前主体具有指定的角色,则返回 true。 1.在WebSecurityConfig.configure(HttpSecurity http)方法中,增加如下配置://当前登录用户,只有具备sale角色才可以访问这个路径.antMatchers("/test/index").hasRole("sale") 看源码,是将给定的值增加了一个前缀,变成了ROLE_saleprivate static String原创 2022-04-11 23:43:25 · 326 阅读 · 0 评论 -
12.SpringSecurity-web权限方案-用户授权(基于权限访问控制)
hasAuthority方法 如果当前的主体具有指定的权限,则返回 true,否则返回 false; 1.在WebSecurityConfig.configure(HttpSecurity http)方法中,增加如下配置://当前登录用户,只有具备admins权限才可以访问这个路径.antMatchers("/test/index").hasAuthority("admins") 2.在UserDetailsService的实现类中赋予admins权限//权限List<Grant原创 2022-04-11 23:40:51 · 354 阅读 · 0 评论 -
11.SpringSecurity-web权限方案-用户认证(自定义用户登录页面)
WebSecurityConfig配置/** * anyRequest | 匹配所有请求路径 * access | SpringEl表达式结果为true时可以访问 * anonymous | 匿名可以访问 * denyAll | 用户不能访问 * fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录) * hasAnyAuthority原创 2022-04-11 23:37:50 · 427 阅读 · 0 评论 -
10.SpringSecurity-web权限方案-用户认证(查询数据库完成认证)
pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven原创 2022-04-11 23:34:36 · 538 阅读 · 0 评论 -
9.SpringSecurity-web权限方案-用户认证(设置用户名密码)
方式一,在 application.propertiesspring.security.user.name=userspring.security.user.password=123321方式二,编写实现类继承WebSecurityConfigurerAdapter 类图如下: 简单案例(不实用,只是举个例子):@Configurationpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {原创 2022-04-11 23:30:06 · 463 阅读 · 0 评论 -
8.SpringSecurity-UserDetailsService、PasswordEncoder
UserDetailsService接口讲解 当什么也没有配置的时候,账号和密码是由 Spring Security 定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。 所以我们要通过自定义逻辑控制认证逻辑。 如何做呢? 在过滤器链中有一个UsernamePasswordAuthenticationFilter过滤器是专门校验表单中用户名,密码的,但是这个是默认的。 所以我们需要创建一个类继承然后重写它的attemptAuthentication方法,来获取传递进来的用户名和密.原创 2022-03-30 22:36:13 · 1288 阅读 · 0 评论 -
7.SpringSecurity-基本原理(过滤器加载过程)
使用SpringSecurity配置过滤器DelegatingFilterProxy; 本质上来说DelegatingFilterProxy就是一个Filter,其间接实现了Filter接口,但是在doFilter中其实调用的从Spring 容器中获取到的代理Filter的实现类delegate。DelegatingFilterProxy原理 DelegatingFilterProxy根据targetBeanName从Spring 容器中获取被注入到Spring 容器的Filter实现类,在原创 2022-03-30 22:09:39 · 772 阅读 · 0 评论 -
6.SpringSecurity-基本原理(过滤器链)
SpringSecurity 本质是一个过滤器链: 从启动是可以获取到过滤器链:org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilterorg.springframework.security.web.context.SecurityContextPersistenceFilterorg.springframework.security.web.header.HeaderWr原创 2022-03-30 21:55:37 · 287 阅读 · 0 评论 -
5.spring security-入门案例
创建案例 pom:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd原创 2022-03-30 21:50:01 · 432 阅读 · 0 评论 -
4.spring security-框架概述
概要 Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。 正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分,这两点也是 Spring Security 重要核心功能。原创 2022-03-30 21:44:54 · 2089 阅读 · 0 评论 -
3.基本概念-RBAC
基于角色的访问控制 RBAC基于角色的访问控制(Role-Based Access Control)是按角色进行授权,比如:主体的角色为总经理可以查询企业运营报表,查询员工工资信息等,访问控制流程如下: 根据上图中的判断逻辑,授权代码可表示如下:if(主体.hasRole("总经理角色id")){查询工资} 如果上图中查询工资所需要的角色变化为总经理和部门经理,此时就需要修改判断逻辑为“判断用户的角色是否是总经理或部门经理”,修改代码如下:if(主体.hasRole("总经理角色id原创 2022-03-29 22:15:52 · 258 阅读 · 0 评论 -
2.基本概念-授权的数据模型
授权的数据模型 如何进行授权即如何对用户访问资源进行控制,首先需要学习授权相关的数据模型。 授权可简单理解为Who对What(which)进行How操作,包括如下: Who,即主体(Subject),主体一般是指用户,也可以是程序,需要访问系统中的资源。 What,即资源(Resource),如系统菜单、页面、按钮、代码方法、系统商品信息、系统订单信息等。系统菜单、页面、按钮、代码方法都属于系统功能资源,对于web系统每个功能资源通常对应一个URL;系统商品信息、系统订单信息都属于实体资源(原创 2022-03-29 22:12:19 · 227 阅读 · 0 评论 -
1.基本概念-认证授权会话
什么是认证 进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。 系统为什么要认证? 认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。 认证 :用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式原创 2022-03-29 22:09:40 · 187 阅读 · 0 评论