I’m writing an event listener spi that records some custom content of httprequest header, e.g. traceid, etc when some event occurred. Yet while referring to code in JBossLoggingEventListenerProvider as below, I found the value of http headers are always null when I did some operation whether in postman or in keycloak admin console page, e.g. calling token endpoint in postman or login/logout in admin page.
Is there configuration that control the http headers from KeycloakContext? Anyone would help this? thanks in advance.
-----sample snippet in JBossLoggingEventListenerProvider------
private void setKeycloakContext(StringBuilder sb) {
KeycloakContext context = session.getContext();
UriInfo uriInfo = context.getUri();
**HttpHeaders headers = context.getRequestHeaders();**
if (uriInfo != null) {
sb.append(", requestUri=");
sb.append(uriInfo.getRequestUri().toString());
}
if (headers != null) {
sb.append(", cookies=[");
boolean f = true;
for (Map.Entry<String, Cookie> e : headers.getCookies().entrySet()) {
if (f) {
f = false;
} else {
sb.append(", ");
}
sb.append(e.getValue().toString());
}
sb.append("]");
}
-------here is my code-----------
final KeycloakContext context = session.getContext();
logger.info("CCC-----" + context);
final HttpHeaders requestHeaders = context.getRequestHeaders();
logger.info("AAA-----" + requestHeaders);
String traceId = null;
String callerContextId = null;
if(requestHeaders != null){
logger.info("000-----");
final MultivaluedMap<String, String> reqHeader = requestHeaders.getRequestHeaders();
logger.info("111-----" + reqHeader.toString());
final List<String> reqList = requestHeaders.getRequestHeader(Constants.RequestHeader.TRACE_ID);
logger.info("222-----"+reqList);
traceId = requestHeaders.getHeaderString(Constants.RequestHeader.TRACE_ID);
callerContextId = requestHeaders.getHeaderString(Constants.RequestHeader.CONTEXT_ID);
}
if (traceId==null || traceId.isEmpty()){
traceId = generateRandomString(10);
logger.warn("request header trace_id is empty. Generated random trace_id :" + traceId);
}