当前位置: 首页 > 知识库问答 >
问题:

为审计目的重载MessageHistory对象

公西培
2023-03-14

我需要审计通过spring-integration流程传递的每一条消息,这是非常基本的。

应用程序从int redis:queue入站通道适配器读取,并写入int http:outbound网关。

输出网关有一个回复通道,以便接收超文本传输协议方法的响应,就是在这个确切的时刻,当我想注册de审核信息时,包括初始消息和超文本传输协议响应。

如果http方法失败,消息将转到errorHandler,我可以获得带有时间戳和有效负载的history对象,这非常适合审计。

但是,如果 http 方法有效(代码 200,201 ...),我会收到一条消息,其中包含带有状态代码的 ResponseEntity 对象,但我没有来自 redis 的初始有效负载。

那么,有没有办法将这两条消息(在向外发送超文本传输协议之前和超文本传输协议响应之后)关联起来,以便获得用于审计的完整信息?

提前感谢!

以下是集成流程:

<int:message-history/>

<int:channel id="responseChannel"/>

<int:channel id="responseError"/>

<int:logging-channel-adapter channel="responseChannel" level="INFO" 
   expression="@messageHandlerSpel.handle( #this )" id="logger"/>

<int:logging-channel-adapter channel="responseError"
    level="ERROR" expression="@errorHandlerSpel.handle( #this )"
    id="LogingERROR"/>

<int-redis:queue-inbound-channel-adapter id="inputRedis" connection-factory="redisCF" 
   channel="redisInput" queue="redis-input" serializer="" error-channel="responseError"/>

<int:channel id="redisInput" />

<int-http:outbound-gateway id="HttpOutbound" request-channel="redisInput" 
   url="http://{server}:{port}/{index}/{type}/{id}" 
   http-method="PUT" extract-request-payload="true" charset="UTF-8" 
   reply-channel="responseChannel" request-factory="requestFactory"/>

以及处理程序类:

@Component
public class MessageHandlerSpel {
    public String handle(Message<byte[]> message) {
        MessageHeaders msgH = message.getHeaders();
        MessageHistory msgHistory = 
            message.getHeaders().get(MessageHistory.HEADER_NAME, MessageHistory.class);
        ... // Do whatever
    return "";
}

共有1个答案

郎宣
2023-03-14

一个技巧是在执行HTTP请求之前将请求有效负载存储在自定义标头中。

收到响应后,请求标头将与该响应负载合并。因此,在下游,您将同时拥有两者:标头中的请求和有效负载中的回复。

消息历史保持不变,没有理由以某种方式破解那里。

另一种方法基于

通过以下方式简单地复制/粘贴到标题:

<header-enricher>
    <header name="requestPayload" expressio="payload"/>
</header-enricher>

应该够你用了。

 类似资料:
  • 您可以从Burp 仪表板(dashboard)中打开任务详细信息窗口(task details)来访问扫描任务中含有审计的具体项目。 该栏显示了每个项目的以下详细信息: 项目的编号。 目标主机的协议,Host和URL。 该项的当前状态。 针对被动,主动或是JS分析的各个审计阶段已完成进度。 该项按严重性分类后已确定的问题问题数量。 审计时发出的请求数。请注意,这不是针对插入点数量的线性函数 - 观

  • 我的项目中有几个类是由Hibernate处理的,有些是由Envers审核的,有些则不是。现在,当我试图保存某个未经审计的实体时,我得到了以下信息: 有些人可能认为我的数据库中没有审计表,但是Envers甚至不应该试图寻找这个表,因为实体没有被审计。我的类看起来像这样: 因此,每个类都包含一个子类列表,其中包含对其父类的引用。这些类都没有用-注释标记,但它们引用了一些已审核的实体。然而,每个引用都用

  • 一旦Spring Security发挥作用,Spring Boot Actuator就有一个灵活的审计框架,可以发布事件(默认情况下,“身份验证成功”,“失败”和“访问被拒绝”例外)。 此功能对于报告和基于身份验证失败实施锁定策略非常有用。 要自定义已发布的安全事件,您可以提供自己的AbstractAuthenticationAuditListener和AbstractAuthorizationA

  • 不是每个问题都有技术性的答案。我曾经诊断过一台服务器,它对 ping、SSH 或控制台连接均无响应。 我不能确定这到底是硬件故障还是软件故障。 当我电话询问主机所在位置的站点客服时,奥秘最终被揭开了。他们告诉我: 先期抵达的两名不明身份的男子,进入大厦直奔服务器机房,拔下了机器,并轻易地将机器带出了大厦。 后来我们发现,在机房所在的地区(Missouri,M.O.)曾发生过一连串的电脑失窃案。 从

  • 日志审计支持查看平台上的所有操作日志以及公有云的操作日志等。 操作日志 操作日志用于显示系统中所有操作信息。 云上日志 将公有云操作日志同步到云联壹云平台上统一查看。

  • 该账号及其子账号的所有操作记录和登录日志,便于在发生问题时用户及时查看。 操作日志 登录历史 操作日志 记录用户及其子用户在页面的所有操作行为,可对操作行为进行追溯,并按照功能模块、操作行为等进行查询。 登录历史 记录用户及其子用户的所有登录行为,包括登录时间、登录IP、用户名、浏览器版本、登录方式等。