SpringSecurity
文章平均质量分 62
写代码要喊出来
这个作者很懒,什么都没留下…
展开
-
关于Security抛出异常AccessDeniedException: 不允许访问
可以访问,可是一旦我们配置了全局异常处理,并且添加了Exception处理未匹配异常时,异常就会被全局处理器捕获,而到不了Security。这个异常是由@PreAuthorize抛出的,通过我们定义的。直接把这个异常捕获以后继续向上抛出,让Security处理。直接在全局处理器里处理这个异常了。原创 2022-10-24 14:58:35 · 5917 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 十六 ( 基于JJWT 无状态会话管理的【前后端分离】)
之前的项目都是基于session的会话,用户的信息数据储存在session中;但是有两个弊端,1.session不是很安全,2.在分布式项目中session的管理是个问题;所以尝试使用jjwt来解决问题由于security原生支持的是session。所以改jwt我们就需要手动完成框架自动完成的部分;手动加入过滤器,拦截请求进行token认证;手动调用登录请求调用loadUser,进行登录认证;手动完成用户Conext的创建,并设进线程域对象;至于用户信息的管理:直接在载荷里存入用户信息原创 2021-08-26 18:15:01 · 2397 阅读 · 1 评论 -
前后端分离版的oauth2.0第三方登录,做个总结
场景搭建过程adv向授权服务器发送申请授权码请求授权和资源授权服务器SecurityConfigAuthorizationServerConfigCustomJwtTokenFilter资源服务器SecurityConfigResourceServerConfig一些当前场景的奇怪自定义配置UserLoadCustomJwtTokenEncoder执行流程获取授权码授权码兑换access_token授权码访问资源场景1.提供登录服务的平台adv2.第三方app生成state通过拉起adv传输客户端i.原创 2022-01-27 14:28:00 · 6661 阅读 · 3 评论 -
复习oauth2.0后续
之前使用的时候跑偏了;被我给弄成了错误的流程;爱现在打算重新改造一下目前:服务A:授权+资源服务服务B:开放平台服务服务C:第三方服务;目前已有:直接在A服务登录,获取授权码直接返回;用自定义的方式在A服务登录,获取授权码返回;C从B获取特殊的Token到A建立登录状态,获取授权码直接返回;错误:错误的把授权服务当成了登录的目标,至少这里不该这样,,,目前的情况是:B是一个现有平台,使用jwt维持登录状态,现在需要添加一个使用B平台登录的情况,为了减小对原来的项目的干涉,不引原创 2022-01-25 23:20:39 · 3029 阅读 · 0 评论 -
重温一次oath2.0的配置
准备工作针对资源和认证服务器分别进行不同的配置授权服务器配置资源服务器配置基本依赖准备工作首先需要实现UserDetailsService接口,完成用户的加载;注意这里的密码需要加密,如果数据库是明文则需要加密以后设置进去再者需要实现一个UserDetails接口,在里面完成用户信息的对外输出;再者需要实现一个GrantedAuthority接口,在里面完成用户权限的对外输出;创建一个@bean返回PasswordEncode的加解密实现类,推荐使用现成的BCryptPasswordEncode.原创 2022-01-24 15:37:38 · 2501 阅读 · 0 评论 -
记录一个Security的设置错误BUG
原代码.antMatchers("/*/k2").permitAll().antMatchers("/auth/login").permitAll().antMatchers("/auth/sign-up").permitAll().antMatchers("/auth/refresh-token").permitAll().antMatchers("/users/{id}/photo").permitAll().antMatchers("/auth/logout").permitAll().a原创 2021-09-22 15:11:18 · 195 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 十五 (基于【session&coockie】会话管理的【前后端分离】配置)
基于session的前后端分离配置登录校验逻辑配置:实现的效果就是登录不通过访问内置页面也能实现登录首先我们需要一个类SecurityWebConfig实现接口WebSecurityConfigurerAdapter;重写方法configure(AuthenticationManagerBuilder auth)进行配置这里的目的是配置加密方法以及将我们配置好的用户管理类注入进去 auth.userDetailsService(memberDetailService) /** * 管理员用原创 2021-08-24 18:28:03 · 193 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 十 四(SpringSecurityOAuth2整合SSO单点登录)
首先准备一个新项目,这个项目是想要通过我们之前配置的oauth认证服务器进行单点登录的;导入maven坐标:基本坐标:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version>原创 2021-08-21 19:23:59 · 983 阅读 · 4 评论 -
SpringSecurity学习笔记之 入门 十 三(刷新令牌)[待修正]
在配置商家信息的地方.配置;因为这个本身就是针对不同商家有不同的配置,在授权模式中新增 "fefresh_token" 这样这个商家在验证通过以后就会在原token的基础上额外追加获得一个refresh_token;可以使用.accessTokenValiditySeconds();配置令牌失效时间可以使用.refreshTokenValiditySeconds();配置刷新令牌的失效时间,当我们token失效的时候就可以把刷新令牌当作密码来获取新的token,就和常规用密码或者授权码申请token.原创 2021-08-20 17:15:20 · 333 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 十 二(oauth2.0整合整合jwt)[待修正]
我们这里要实现的是替换原来的token方式使用jwt进行token的分发和验证;这里依然使用密码模式进行示范整体流程:在验证模式(测试的密码模式),中使用.tokenStore()配置toekn管理;这里传入的必须是我们自己重新配置的jwttokenstore创建配置类JwtTokenConfig创建beanJwtTokenStore和JwtAccessTokenConverter返回(这里配置盐),同时在类中需要将JwtAccessTokenConverter()传入给JwtTokenStor原创 2021-08-19 17:57:26 · 179 阅读 · 0 评论 -
神马是JJWT【不是手抽多按了一个J】
实现:依赖:<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId></dependency>创建token构建方法:加密:方法:Jwts.builder()实际中需要传入必要参数进行加密/** * 生成jwt-token * @return */public String jwtBuilder(.原创 2021-08-14 18:44:15 · 127 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 十 二(什么是JWT-JsonWebToken)
头部分:加密方式,类型body部分:信息,载荷尾部:头+body+盐=>加密,token=head(base64).body(base64).【body+盐】(hs256)原创 2021-08-14 17:13:18 · 91 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 十 (oauth2.0整合 密码模式)
密码模式在配置类认证服务器配置中配置重写参数为AuthorizationServerEndpointsConfigurer的方法@Override//授权服务器端点配置 public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { }在其中注入用户详情类(继承UserDetailService的类);再注入授权管理器->这个需要我们在配置权限管理的类原创 2021-08-13 18:19:39 · 303 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 九 (记住我RememberMe&退出登录LoginOut实现)
依赖在配置类中配置http将我们定义好的用户加载类注入进来交给他同时创建一个Bean=》PersistentTokenRepository,把哪个红色下划线的空格给填了;他是一个接口我们找他的实现类。他有两个实现,一个基于内存一个基于jdbc;我们使用jdbc,创建出来Jdbc那种形式也可以返回,注意一定要使用JdbcTokenRepositorImpl这个实现类,才能找到我们需要的方法第一次运行之后回来注释掉创建表。如果你不想手动创建数据表的话前端部分添加一个记住我功能;重要:re原创 2021-08-10 18:51:55 · 509 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 八 (Access表达式权限控制&注解权限控制)
uri通过传参导入请求数据以及权限信息,导出数据进行逻辑判断。原创 2021-08-10 17:26:59 · 1088 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 七 (oauth2.0整合【Security实现oauth2.0】)
授权码模式:1.需要提供appid和app密码2.配置回调地址3.验证token接口实现流程:1.引入必要依赖:security<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>oauth2<dep.原创 2021-08-06 19:15:50 · 271 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 五 (项目中的动态权限配置)
修改配置类中权限配置写死的部分现在我们就可以把配置类中对于权限部分的配置通过查询db或者redis的方法进行配置;原来我们的写法是这样的http.authorizeRequests().antMatchers("/add").hasAnyAuthority("add") .antMatchers("/update").hasAnyAuthority("update") .antMatchers("/del").hasAnyAuthorit原创 2021-08-05 20:41:07 · 397 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 三 (前后端一体,的自定义页面403和login,,以及拦截策略的配置)
自定义403:首先需要自定义异常/** * 自定义springboot错误处理异常 */@Configurationpublic class WebSeverErrorConfig { //出现异常以后就会访问后面指定的路径 @Bean public ConfigurableServletWebServerFactory webServerFactory(){ TomcatServletWebServerFactory factory =new Tom原创 2021-08-04 21:08:19 · 442 阅读 · 0 评论 -
SpringSecurity学习笔记之 入门 二 (From表单验证方式【比较少用】,跨域问题)
适合没有前后端分离的传统项目;【少见少见】配置拦截认证规则的时候设置为form表单模式:// 配置拦截规则,认证方式的方法 @Override protected void configure(HttpSecurity http) throws Exception { // 配置所有路径都需要验证,并且 and指定 使用 httpbasic 验证 http.authorizeRequests().antMatchers("/**").fullyAuthe原创 2021-08-04 20:01:12 · 269 阅读 · 0 评论