WSO2 APIM如何移除api.log日志中的Authorization请求头
WSO2 APIM API_LOG中Bearer令牌脱敏解决方案
问题根源
你之前的配置失败主要有三个原因:
- 正则表达式未匹配日志里
"authorization=Bearer xxx"的完整格式,原正则authorization:[^,]*抓不住带引号的字段结尾 - 替换字符串格式和原日志不匹配,且没处理好引号的转义
- 错误使用了
apim.message属性,API_LOG的日志格式得通过日志appender的layout来配置
正确配置方案
方案1:修改log4j.properties(直接调整日志输出格式)
找到<APIM_HOME>/repository/conf/log4j.properties,定位到API_LOG相关配置,替换成以下内容:
# API_LOG 基础配置 logger.API_LOG.name = API_LOG logger.API_LOG.level = INFO logger.API_LOG.appenderRef.API_LOG_APPENDER.ref = API_LOG_APPENDER logger.API_LOG.additivity = false # API_LOG 输出appender配置 appender.API_LOG_APPENDER.type = RollingFile appender.API_LOG_APPENDER.name = API_LOG_APPENDER appender.API_LOG_APPENDER.fileName = ${sys:carbon.home}/repository/logs/api.log appender.API_LOG_APPENDER.filePattern = ${sys:carbon.home}/repository/logs/api-%d{MM-dd-yyyy}.log appender.API_LOG_APPENDER.layout.type = PatternLayout # 核心:添加%replace规则脱敏Bearer令牌 appender.API_LOG_APPENDER.layout.pattern = [%d] %5p {%c} %replace{%m}{"authorization=Bearer [^"]*"}{"authorization=Bearer ***"}%n
方案2:用APIM内置掩码配置(更简洁,无需修改log4j)
直接在<APIM_HOME>/repository/conf/deployment.toml里添加以下配置:
[apim.logging] # 指定要掩码的请求头 mask.headers = ["Authorization"] # 定义掩码规则:匹配Bearer后的令牌,替换为*** mask.patterns = [{"pattern":"Bearer (.*)","replacement":"Bearer ***"}]
验证步骤
- 重启WSO2 APIM服务
- 调用带Bearer令牌的API接口
- 打开
api.log检查,确认authorization字段已变成"authorization=Bearer ***"
内容的提问来源于stack exchange,提问作者Javier Decena Castillo
相关产品推荐
相关产品推荐

