Java HeartBeat中设置钉钉机器人监控提醒

在HeartBeat v3.0.0版本中增加了对钉钉机器人监控提醒功能,具体使用设置如下。

1.以HeartBeat的管理员登录,进入‘提醒设置-钉钉机器人’配置界面


2. 在钉钉中创建一个消息提醒群(也可使用已有的群),以群管理员点击‘群设置’->‘机器人’进入机器人管理。点击‘添加机器人’选择 自定义机器人。


3. 填写机器人名字,如:HB监控提醒,在安全设置中选择‘自定义关键词,内容填写‘HB提醒’,最后点击‘完成’保存数据。

4. 复制Webhook地址,在HeartBeat中填写该webhook地址,并勾选‘启用钉钉机器人’,若需要发送群监控提醒时@具体的成员可填写手机号,若需要@所有人则勾选上@所有人,最后保存。

5. 当实例状态变成异常或从异常恢复正常时,钉钉机器人会发送相应的信息到群里,如下图:


若未正常提醒请检查自定义关键词是否在设置的提醒内容中,或查看钉钉说明文档 https://open.dingtalk.com/document/app/custom-robot-access/title-jfe-yo9-jl2

Java HeartBeat 3.0.0 发布,心跳检测应用服务器(支持协议HTTP/UDP/TCP)微服务应用程序

Java HeartBeat 3.0.0 版本已经发布,带来Socket监控支持(TCP/UDP)。

3.0.0 版本主要更新如下:

  1. 添加Socket (TCP,UDP)的监控
  2. 升级JDK, SpringBoot等基础版本, log升级使用logback框架, thymeleaf替换jsp
  3. 各实例提供分组与查询
  4. 邮件配置界面化,更灵活(不在配置文件中写固定)
  5. 提醒方式增加钉钉机器人(相比邮件即时性更好)
  6. 优化界面部分UI,更直观简洁

HeartBeat 3.0.0 版本访问地址:https://gitee.com/mkk/HeartBeat/tree/3.0.0/

SpringSecurity中OAuth2.1/OIDC1.0升级变化明细

spring-oauth-server v3.0.0版本中,我们全部升级了OAuth协议(从OAuth2.0升级到OAuth2.1)并同步增加了对OIDC1.0的支持落地。这些实现的底层依赖SpringSecurity框架的变化,此文将这些细节一一通过对比来讲解。

每一项是一个变化点,依次罗列出之前,之后(v3.0.0)以及说明。

  • spring security oauth组件

spring-security-oauth2 v2.3.x

spring-security-oauth2-authorization-server v1.1.x

Spring Security官方对旧的不再维护支持而推荐升级替换用新的实现,详见 https://andaily.com/blog/?p=20077

  • grant_type变化
  • authorization_code (包括PKCE)
  • password
  • client_credentials
  • implicit
  • refresh_token
  • authorization_code (包括PKCE)
  • client_credentials
  • refresh_token
  • device_code (urn:ietf:params:oauth:grant-type:device_code)
  • jwt-bearer (urn:ietf:params:oauth:grant-type:jwt-bearer)

grant_type的变化看到安全在不断升级,同时为更好的支持物联网提供协议上的支撑。具体说明详见 https://andaily.com/blog/?p=103

  • scope变化
  • read
  • write
  • trust
  • openid
  • profile
  • email
  • address
  • phone

scope的变化按照OIDC协议的规范来实现的,代码中详见 OidcScopes.java

  • MySQL表结构
  • oauth_client_details
  • oauth_client_token
  • oauth_access_token
  • oauth_refresh_token
  • oauth_code
  • oauth2_registered_client
  • oauth2_authorization
  • oauth2_authorization_consent

表设计变化挺大的,主要由于框架的实现重新设计与实现,新的表结构能更好地满足token全生命周期管控(同时带来一定的性能问题,可通过技术手段解决),有更好的配置项扩展能力(通过将各类配置项通过JSON格式数据存储)

  • token配置项
  • access_token_validity -设置token有效时长(默认12小时)
  • refresh_token_validity -设置refresh_token有效时长(默认30天)
  • authorization_code_time_to_live -设置authorization_code有效时长(默认5分钟)
  • access_token_time_to_live -设置access_token有效时长(默认5分钟)
  • access_token_format -设置access_token的格式,有两选项self-contained(自签即JWT格式,默认) reference(兼容旧的,通过UUID生成随机值)
  • device_code_time_to_live -设置device_code有效时长(默认5分钟)
  • reuse_refresh_token -设置是否复用refresh_token值当刷新token后(默认true复用,设置false时每次刷新后将生成新的refresh_token值)
  • refresh_token_time_to_live -设置refresh_token有效时长(默认60分钟)
  • idtoken_signature_algorithm -设置生成id_token使用的签名算法(默认RS256)

新版本与token配置项相关的请查看 TokenSettings.java 类与数据库表oauth2_registered_client 中的字段 token_settings

  • client配置项
  • trusted -是否授权信任; 适用于grant_type=”authorization_code”的情况,当用户登录成功后,若该值为0,则会跳转到让用户Approve的页面让用户同意授权
  • autoapprove -是否自动跳过用户授权步骤
  • client_secret_expires_at -client_secret过期时间,可设置
  • client_authentication_methods -认证请求时传递client_secret支持的方式(如post, basic)
  • post_logout_redirect_uris -退出时的重定向到client的uri地址
  • require_proof_key -是否强制使用PKCE(默认false)
  • require_authorization_consent -授权时是否要求用户进行确认(默认false)
  • token_endpoint_authentication_signing_algorithm -指定jwt-bearer流程中生成id_token时使用的签名算法(常见如RS256, ES256)
  • client_name -可以给client设置一个有业务意义的名称

新版本与client配置项相关的请查看 ClientSettings.java 类与数据库表 oauth2_registered_client 中的字段 client_settings

  • java版本

java 8

java 17+(openJDK)

从JVM层面做安全升级,同时提升性能与稳定性

  • token全生命周期管控API
  • /oauth/token -通过认证生成token
  • /oauth/check_token -检查token状态
  • /oauth/error -响应HTML异常信息
  • /oauth2/token -通过认证生成token
  • /userinfo -获取用户信息,OIDC协议中定义
  • /oauth2/revoke -吊销已签发的token
  • /oauth2/introspect -审查token状态(包括是否存活等)
  • /connect/logout -退出并销毁token,浏览器上调用

新版本的token全生命周期管控完整性更好,也是协议更新版本的优势所在

通过各明细对比,能更清晰理解与把控各项安全细节。

spring-oauth-client v2.0.0发布,OAuth2.1客户端参考实现

spring-oauth-client 发布了v2.0.0版本,全面支持OAuth2.1协议的各类grant_type(如 device_code),对应不久前发布的 sping-oauth-server v3.0.0版本功能。

此版本升级更新的主要内容如下:

  1. 底层安全架构升级:jdk 升级 17 (相比 jdk8 性能与稳定性有大提升), spring6.x, springboot3.x, thymeleaf 替换 servlet/jsp
  2. 增加支持OAuth2.1协议中的 device_code 与 jwt-bearer 两种实现(同时弃用了旧的grant_type,如password),并提供相应的工具类
  3. 构建产物由war换成jar,更便捷
  4. 界面使用说明按OAuth2.1协议进行更新,更友好理解
  5. 日志框架升级,由logback替换旧的log4j

v2.0.0版本链接:https://gitee.com/mkk/spring-oauth-client/tree/2.0.0/

spring-oauth-server v3.0.0 大版本发布,升级到OAuth2.1 & OIDC1.0

在spring-oauth-serverg开源10周来之际,我们发布了全新的大版本v3.0.0,从底层架构到整体的协议支持都做了大范围的升级与更新,更好的满足业务需要与跟上技术演进。

此版本升级更新的主要内容如下:

  1. 底层安全架构升级:jdk升级17(相比jdk8性能与稳定性有大提升), spring6.x, springboot3.x, thymeleaf替换servlet/jsp
  2. 全面升级支持 OAuth2.1协议与 OIDC1.0协议(同时弃用了旧的grant_type, 如 password模式)
  3. 构建包由war换成jar, SQL相应调整
  4. 用spring-security-oauth2-authorization-server升级替换spring-security-oauth2, 详见背景说明
  5. 界面使用说明按OAuth2.1进行友好设计并更新各提示语句
  6. 增加spring-restdocs文档支持, 自动生成API相关文档

v3.0.0 版本链接:https://gitee.com/shengzhao/spring-oauth-server/tree/3.0.0/

oauth2-shiro 2.0.0版本发布,安全大升级

oauth2-shiro v2.0.0版本正式发布,在距上一次发布7年后,更新了大版本,对安全漏洞等问题进行大升级。

该版本主要更新内容:

  1. 升级使用springboot,调整工程结构,打包由war换成jar,使用thymeleaf替换servlet/jsp;spring大版本升级到5.3提升安全性。
  2. JDK由1.7升级到1.8,日志框架使用logback替换log4j(处理掉log4j安全漏洞)。
  3. 升级shiro版本到v1.11.0,解决相应的shiro版本漏洞。
  4. 密码存储算法由MD5替换为SHA-256,并支持盐(salt),让密码存储更安全可靠(通过配置参数authz.store.credentials.alg来控制与向下兼容)。
  5. OAuth token支持使用JWT格式(通过配置参数authz.token.generator.type来控制与向下兼容)。
  6. 对初始的账户密码与client secret使用更加安全的密码策略:包括大小写字母,数字与特殊符号,长度至少10位。

v2.0.0版本链接:https://gitee.com/mkk/oauth2-shiro/tree/2.0.0/

【推荐升级】

spring-dynamic-job v1.1发布;基础架构升级

spring-dynamic-job 创建以后(2014年开始)最大的版本发布v1.1,对基础架构升级满足新技术迭代需要,并增加更友好文档说明。

spring-dynamic-job 是 Spring与Quartz整合示例,有固定Job与动态Job实现示例,并提供相关工具类。

v1.1版本主要更新内容:

  1. 工程结构由传统的web工程变为SpringBoot架构,升级Spring,Quartz等版本解决各类历史漏洞等问题。
  2. Java版本升级使用openjdk 17,更好的支持java新特性与性能提升。
  3. 旧的XML配置全变更为 java config配置
  4. 日志组件由log4j更换为logback(解决log4j相关漏洞)
  5. 优化:使用文档重新调整目录结构,更新说明内容

v1.1版本链接:https://gitee.com/mkk/spring-dynamic-job/tree/1.1/

MyOIDC v1.1.2 发布,基于OIDC协议的参考实现

MyOIDC  — 基于OIDC协议的参考实现,根据各类库提供实现参考 。正式版本v1.1.2发布,此版本主要是安全升级,更新内容:

1.为了处理CVE安全漏洞,对以下依赖库进行了升级:

  • spring-boot升级到v2.5.9;
  • spring-security-oauth2升级到v2.3.8.RELEASE
  • guava升级到v31.0-jre

2.增加了banner.txt,更新README.md让使用者更易上手

3.修复已知的各类bug

v1.1.2 tag:https://gitee.com/mkk/MyOIDC/tree/v1.1.2