从报告门户的日志中排除敏感信息

问题描述 投票:0回答:1

我们有一个 Java TAF,用于记录测试运行。我们使用 Allure 和 Report Portal(两者)。对于 API 调用,我们使用 RestAssured。

有必要隐藏敏感数据。在请求中,我们不应记录标头“授权”。

这是当前的解决方案:

public static RequestSpecification prepareRequest() {

        return given()
                .filters(
                        new ReportPortalRestAssuredLoggingFilter(42, LogLevel.INFO)
                                .setBodyTypeMap(BODY_TYPE_MAP)
                                .setContentPrettiers(MY_PRETTIERS),
                        new AllureRestAssured())
                .config(RestAssuredConfig.config().logConfig(LogConfig.logConfig().blacklistHeader("Authorization")));
}

它帮助我们屏蔽 Allure 报告中的“授权”标题。但它们仍然存在于报告门户中。请告知如何从日志中屏蔽/隐藏/删除标题“授权”(或者,如果报告门户不允许隐藏,则可以从日志中删除所有标题)。

其他发现:

在文档(https://github.com/reportportal/logger-java-rest-assured/blob/develop/CHANGELOG.md)中,他们引入了方法 ReportPortalRestAssuredLoggingFilter.addRequestFilter() 用于跳过某些请求日志记录。但我不明白如何用它准备代码。请帮忙解决问题。

java automation rest-assured reportportal
1个回答
0
投票

Report Portal 提供了一个解决方案:在

ReportPortalRestAssuredLoggingFilter
的实例化中,我们可以使用
SanitizingHttpHeaderConverter.INSTANCE
(随意查看实现,您可以用自己的变体替换它)

public static RequestSpecification prepareRequest() {

        return given()
                .filters(
                        new ReportPortalRestAssuredLoggingFilter(42, LogLevel.INFO,
                                SanitizingHttpHeaderConverter.INSTANCE,
                                DefaultHttpHeaderConverter.INSTANCE)
                                .setBodyTypeMap(BODY_TYPE_MAP)
                                .setContentPrettiers(MY_PRETTIERS),
                        new AllureRestAssured())
                .config(RestAssuredConfig.config().logConfig(LogConfig.logConfig().blacklistHeader("Authorization")));
}

代码的结果: removed Authorization header from logs in Report Portal

对于cookie也可以做同样的事情,请参阅官方自述文件中的详细信息:https://github.com/reportportal/logger-java-rest-assured?tab=readme-ov-file#sanitize-request--response-数据

© www.soinside.com 2019 - 2024. All rights reserved.