summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2020-10-22 11:25:31 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2020-10-22 11:25:31 +0200
commit27fc28471a66090c8c3c054f2ab5db3ad65cdf1f (patch)
treee1e9364ebe5011f4351043bcf3837346cde8d774 /jdisc_http_service
parent586bd37f9e063edb69a3323720ec83039094c7a3 (diff)
Add metric dimension for client authentication
Diffstat (limited to 'jdisc_http_service')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java14
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java1
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";