diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-10-22 11:25:31 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-10-22 11:25:31 +0200 |
commit | 27fc28471a66090c8c3c054f2ab5db3ad65cdf1f (patch) | |
tree | e1e9364ebe5011f4351043bcf3837346cde8d774 /jdisc_http_service | |
parent | 586bd37f9e063edb69a3323720ec83039094c7a3 (diff) |
Add metric dimension for client authentication
Diffstat (limited to 'jdisc_http_service')
2 files changed, 11 insertions, 4 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java index f82b51804a9..df1929ce297 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java @@ -72,11 +72,13 @@ class JDiscServerConnector extends ServerConnector { public Metric.Context getRequestMetricContext(HttpServletRequest request) { String method = request.getMethod(); String scheme = request.getScheme(); - var requestDimensions = new RequestDimensions(method, scheme); + boolean clientAuthenticated = request.getAttribute(com.yahoo.jdisc.http.servlet.ServletRequest.SERVLET_REQUEST_X509CERT) != null; + var requestDimensions = new RequestDimensions(method, scheme, clientAuthenticated); return requestMetricContextCache.computeIfAbsent(requestDimensions, ignored -> { Map<String, Object> dimensions = createConnectorDimensions(listenPort, connectorName); dimensions.put(MetricDefinitions.METHOD_DIMENSION, method); dimensions.put(MetricDefinitions.SCHEME_DIMENSION, scheme); + dimensions.put(MetricDefinitions.CLIENT_AUTHENTICATED_DIMENSION, Boolean.toString(clientAuthenticated)); return metric.createContext(dimensions); }); } @@ -103,10 +105,12 @@ class JDiscServerConnector extends ServerConnector { private static class RequestDimensions { final String method; final String scheme; + final boolean clientAuthenticated; - RequestDimensions(String method, String scheme) { + RequestDimensions(String method, String scheme, boolean clientAuthenticated) { this.method = method; this.scheme = scheme; + this.clientAuthenticated = clientAuthenticated; } @Override @@ -114,12 +118,14 @@ class JDiscServerConnector extends ServerConnector { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; RequestDimensions that = (RequestDimensions) o; - return Objects.equals(method, that.method) && Objects.equals(scheme, that.scheme); + return clientAuthenticated == that.clientAuthenticated && + Objects.equals(method, that.method) && + Objects.equals(scheme, that.scheme); } @Override public int hashCode() { - return Objects.hash(method, scheme); + return Objects.hash(method, scheme, clientAuthenticated); } } diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java index a55a6e8a734..17eb0768e71 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java @@ -13,6 +13,7 @@ class MetricDefinitions { static final String SCHEME_DIMENSION = "scheme"; static final String REQUEST_TYPE_DIMENSION = "requestType"; static final String CLIENT_IP_DIMENSION = "clientIp"; + static final String CLIENT_AUTHENTICATED_DIMENSION = "clientAuthenticated"; static final String NUM_OPEN_CONNECTIONS = "serverNumOpenConnections"; static final String NUM_CONNECTIONS_OPEN_MAX = "serverConnectionsOpenMax"; |