Posts

2024-01-10| Java审计框架inspektr

今天做了什么:

1、Java Lambda 增强 https://github.com/jOOQ/jOOLhttps://github.com/vavr-io/vavr ,jOOL 在 jdk8 下存在编译错误,计划,整合这两个项目,创建一个新的项目,只引入自己需要的一些类。 2、https://www.pac4j.org/ 一个安全框架 3、https://github.com/apereo/inspektr 一个轻量级的 Java 审计框架。这个是在看 CAS 源码的过程中,发现的。 在 CAS 的源码中,有一些比较不错的代码,引入到自己的项目中,另外,打算仿照这个 inspektr 框架,重写公司微服务项目中的日志记录模块。 4、分享一个安全相关的 wiki 网站:https://wukong-doc.redhtc.com/security

2024-01-05|Nginx、正向代理和反向代理

今天做了什么:

  • Nginx、正向代理和反向代理

Nginx 介绍

Nginx(发音为"engine-x")是一个高性能的开源Web服务器和反向代理服务器。它专注于高并发、低内存消耗和高度模块化的架构,因此被广泛用于构建性能出色的网站、应用程序和服务。

以下是一些关于 Nginx 的关键特点:

2024-01-04|GitHub Actions

今天做了什么:

  • 修改个人联系方式
  • 注销亚马逊账号
  • 利用GitHub Actions自动优雅地为项目构建Releases
  • 利用GitHub Actions自动构建项目的docker镜像并发布到DockerHub

修改个人联系方式

使用 ichensoul 注册了新的 Gmail、163 邮箱,并将各种网站绑定的邮箱修改到新的 gmail 邮箱。自此,gmail、github、推特、微信、163 的账号都保持为一致,都是 ichensoul。

2024-01-02|雪崩问题、Spring Cloud微服务集成 Sentinel

今天做了什么:

  • 雪崩问题
  • Spring Cloud微服务集成 Sentinel
  • 扩展 Sentinel 集成 OpenFeign,实现自动降级

雪崩问题

1、什么是雪崩问题? 雪崩问题(Avalanche Effect)是指在分布式系统中,当一个节点或服务出现故障或不可用时,其影响会扩散到其他节点或服务,导致级联故障的现象。这种现象类似于雪崩,一旦开始,会不断放大和蔓延,最终导致整个系统崩溃。 雪崩问题的主要原因是系统中的节点或服务之间存在过度依赖、高度耦合,以及缺乏容错机制。当一个节点或服务出现故障时,由于其他节点或服务无法及时处理或适应,故障会不断传播,最终导致整个系统的崩溃。

2023-12-28|今天做了什么

今天做了什么:

  • 重构微服务项目中使用 spring-security-oauth2 搭建 OAuth2 认证服务和资源服务的代码,减少其他模块对此的耦合度。计划将 spring-security-oauth2 迁移到 spring-security-oauth2-authorization-server 上,即使用 OAuth2.1 授权和认证。Spring Authorization Server 相关文档,可以参考 https://blog.51cto.com/u_15268610/category2
  • xuxiaowei-cloud master 分支源代码,整理 /login 登陆逻辑,参数:username、password、tenantId、clientId

登陆成功

2023-12-27|今天做了什么

今天做了什么:

  • 微服务项目中认证服务器配置授权码模式,并测试通过
    • 扩展 RedisAuthorizationCodeServices ,支持设置过期时间。
      • 注意:OAuth2Authentication 无法从 json 反序列化,故无法使用 JSON 反序列化类,只能使用 JDK 反序列化类。
    • 扩展 BearerTokenExtractor,支持从 request 请求的 header 中读取 access_token
    • 配置 JWK token 使用时
      • 扩展 JwtAccessTokenConverter ,用于解析 jwks 接口返回的 json,相关说明参考 creating-the-jwk-set-endpoint
      • JwkDefinitionSource 类中获取 jwkSetUrls 时,不支持 url 中配置服务名称,即不支持负载均衡。故,重写该类以支持通过 RestTemplate (可以注入一个支持负载均衡的 RestTemplate) 解析 jwkSetUrls 返回的 json 类型的字符串;创建了一个支持负载均衡的 TokenStore。
  • 运行 xuxiaowei-cloud 项目时
    • 提示 Rollup failed to resolve import "@vue/shared",原因:这个错误是由于无法解析到 @vue/shared 这个包导致的。@vue/shared 是 Vue 内部使用的一个共享工具库。解决方案:将 @vue/shared 添加到项目的依赖中。
      npm install --save @vue/shared
      
    • Controller 的方法上添加注解判断是否有权限,例子: @PreAuthorize("hasAuthority('manage_user_authority') or #oauth2.hasScope('manage_user_authority')")
    • Principal 中的用户对象,即 UserDetails 对象不添加额外字段,只有 username,如果想获取用户信息,需要通过用户服务去查询。

关于 OAuth2 的参考资料: