Skip to content

Commit

Permalink
Merge pull request #601 from quarkiverse/azure-openai-logger
Browse files Browse the repository at this point in the history
Fix bearer pattern for logging Azure requests
  • Loading branch information
geoand committed May 20, 2024
2 parents 326d11b + 4f73d48 commit 3cd2bd5
Showing 1 changed file with 6 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import jakarta.annotation.Priority;
import jakarta.ws.rs.BeanParam;
Expand Down Expand Up @@ -300,8 +298,6 @@ public void aroundWriteTo(WriterInterceptorContext context) throws IOException,
class OpenAiClientLogger implements ClientLogger {
private static final Logger log = Logger.getLogger(OpenAiClientLogger.class);

private static final Pattern BEARER_PATTERN = Pattern.compile("(Bearer\\s*sk-)(\\w{2})(\\w+)(\\w{2})");

private final boolean logRequests;
private final boolean logResponses;

Expand Down Expand Up @@ -365,36 +361,17 @@ private String inOneLine(MultiMap headers) {
.map(header -> {
String headerKey = header.getKey();
String headerValue = header.getValue();
if (headerKey.equals("Authorization")) {
headerValue = maskAuthorizationHeaderValue(headerValue);
} else if (headerKey.equals("api-key")) {
headerValue = maskApiKeyHeaderValue(headerValue);
} else if (headerKey.equals("Set-Cookie")) {
headerValue = maskCookieHeaderValue(headerValue);
}
headerValue = switch (headerKey) {
case "Authorization", "api-key" -> maskHeaderValue(headerValue);
case "Set-Cookie" -> maskCookieHeaderValue(headerValue);
default -> headerValue;
};
return String.format("[%s: %s]", headerKey, headerValue);
})
.collect(joining(", "));
}

private static String maskAuthorizationHeaderValue(String authorizationHeaderValue) {
try {

Matcher matcher = BEARER_PATTERN.matcher(authorizationHeaderValue);

StringBuilder sb = new StringBuilder();
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1) + matcher.group(2) + "..." + matcher.group(4));
}
matcher.appendTail(sb);

return sb.toString();
} catch (Exception e) {
return "Failed to mask the API key.";
}
}

private static String maskApiKeyHeaderValue(String apiKeyHeaderValue) {
private static String maskHeaderValue(String apiKeyHeaderValue) {
try {
if (apiKeyHeaderValue.length() <= 4) {
return apiKeyHeaderValue;
Expand Down

0 comments on commit 3cd2bd5

Please sign in to comment.