summaryrefslogtreecommitdiffstats
path: root/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/ClientPrincipal.java
diff options
context:
space:
mode:
Diffstat (limited to 'jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/ClientPrincipal.java')
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/ClientPrincipal.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/ClientPrincipal.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/ClientPrincipal.java
new file mode 100644
index 00000000000..ea627b49d5d
--- /dev/null
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/ClientPrincipal.java
@@ -0,0 +1,31 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.jdisc.http.filter.security.cloud;
+
+import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+
+import java.security.Principal;
+import java.util.Set;
+import java.util.logging.Logger;
+
+/**
+ * @author bjorncs
+ */
+record ClientPrincipal(Set<String> ids, Set<Permission> permissions) implements Principal {
+
+ private static final Logger log = Logger.getLogger(ClientPrincipal.class.getName());
+
+ ClientPrincipal { ids = Set.copyOf(ids); permissions = Set.copyOf(permissions); }
+ @Override public String getName() {
+ return "ids=%s,permissions=%s".formatted(ids, permissions.stream().map(Permission::asString).toList());
+ }
+
+ static ClientPrincipal createForRequest(DiscFilterRequest req, Set<String> ids, Set<Permission> permissions) {
+ var p = new ClientPrincipal(ids, permissions);
+ req.setUserPrincipal(p);
+ log.fine(() -> "Client with ids=%s, permissions=%s"
+ .formatted(ids, permissions.stream().map(Permission::asString).toList()));
+ return p;
+ }
+}
+