- 博客(9)
- 收藏
- 关注
原创 Spring Oauth2 最新授权端点,新旧授权端点对照
另外传参方式也有所不同,在最新版本(1.3.x)中要求通过x-www-form-urlencoded传递授权参数,而不是body。如果url携带参数,它会把url参数全部移除。而我记得在1.2.x版本中参数可以放在url里。在spring-security-oauth2-authorization-server 1.2.x 及以上版本,Oauth2的授权端点明显有改变。
2025-01-12 19:23:13
376
原创 SpringSecurity BCryptPasswordEncoder 相同明文加密后密文不一样?
问题描述SpringSecuity BCryptPasswordEncoder 相同明文加密后明文不一样。原理探究BCryptPasswordEncoder其实不算加密器,它是不可逆加密,本质是哈希操作,密文无法还原为明文。BCryptPasswordEncoder加密原理是,每次加密时加密器会随机生成一个盐值,然后用盐值和明文结合根据Blowfish算法生成最终哈希值。既然每次的盐值都是随机生成的,那么相同的明文加密后得到的哈希肯定不一样。那么如何验证明文和密文是否相等?已加密的密文哈希值中包含
2025-01-12 18:34:08
360
原创 SpringSecurity猥琐扩展短信验证码登录
项目登录框架用的是SpringSecurity,现要求扩展短信验证码模式,常规方法是实现AbstractAuthenticationProcessingFilter,AuthenticationProvider,AbstractAuthenticationToken。注意OncePasswordEncoderProxy的创建传入的被代理BCryptPasswordEncoder,你原来用的是什么就用什么,不然已有用户是无法完成密码校对的!关于AccountType,这是我封装的类。
2025-01-03 18:37:12
1647
原创 Oauth2扩展授权信息 token Redis存储
由于认证中心是多实例部署,这是后用内存存储(InMemoryOAuth2AuthorizationService)那么不透明token就无法完成分布式核验,如果用数据库存储(JdbcOAuth2AuthorizationService), 显然不满足高性能要求。所以不得不暴力扩展.1.也可以用代理+缓存的方式实现,但是findIdByToken的逻辑比较复杂,用缓存删除授权信息比较麻烦。2.本文的实现用了HashOperations#entries(), 这是个糟糕的使用方式,可以进一步优化。
2025-01-03 15:37:54
874
原创 SpringSecurity报错: does not have a registered order
只有规定的那几类过滤器可以被添加到Security框架中。代码中OncePasswordAuthenticationFilter.class改为org.springframework.security.config.annotation.web.builders.FilterOrderRegistration中构造函数内指定的那几个,且你的类要实现对于的Filter.1.spring-security 为6.3版本。
2025-01-03 15:06:34
433
原创 授权码模式获取token报错: is not in the allowlist. If you believe this class is safe to deserialize
而最后一个参数类RowMapper用的是JdbcOAuth2AuthorizationService#getAuthorizationRowMapper(), 默认情况下显然不会包括你自定义用户的ObjectMapper, 所以无法反序列化。查找授权信息,这是后如果用的是JdbcOAuth2AuthorizationService,那么就会调用JdbcOperations#query(String, PreparedStatementSetter, RowMapper),
2024-12-28 03:10:07
314
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人