Author: kwall
Date: Fri Jul 15 10:07:58 2016
New Revision: 1752811

URL: http://svn.apache.org/viewvc?rev=1752811&view=rev
Log:
QPID-7303: [Java Broker] Add Broker operations returning the current 
authenticated princiapl and groups to which the user belongs.

Modified:
    
qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java

Modified: 
qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java?rev=1752811&r1=1752810&r2=1752811&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java
 (original)
+++ 
qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/validation/AttributeAnnotationValidator.java
 Fri Jul 15 10:07:58 2016
@@ -401,6 +401,11 @@ public class AttributeAnnotationValidato
             return true;
         }
 
+        
if(typeUtils.isSameType(type,elementUtils.getTypeElement("java.security.Principal").asType()))
+        {
+            return true;
+        }
+
         TypeMirror erasedType = typeUtils.erasure(type);
         if(typeUtils.isSameType(erasedType, getErasure(processingEnv, 
"java.util.List"))
                 || typeUtils.isSameType(erasedType, getErasure(processingEnv, 
"java.util.Set"))

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1752811&r1=1752810&r2=1752811&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
 Fri Jul 15 10:07:58 2016
@@ -20,8 +20,10 @@
  */
 package org.apache.qpid.server.model;
 
+import java.security.Principal;
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
@@ -239,6 +241,12 @@ public interface Broker<X extends Broker
                                         description = "Regular expression to 
find threads with names containing matching characters")
                                  String threadNameFindExpression);
 
+    @ManagedOperation(nonModifying = true, description = "Returns the 
principal of the currently authenticated user")
+    Principal getUser();
+
+    @ManagedOperation(nonModifying = true, description = "Returns the groups 
to which the currently authenticated user belongs")
+    Set<Principal> getGroups();
+
     //children
     Collection<VirtualHostNode<?>> getVirtualHostNodes();
 

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1752811&r1=1752810&r2=1752811&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
 Fri Jul 15 10:07:58 2016
@@ -34,6 +34,8 @@ import java.lang.reflect.InvocationTarge
 import java.lang.reflect.Method;
 import java.nio.charset.Charset;
 import java.security.AccessControlException;
+import java.security.AccessController;
+import java.security.Principal;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -68,6 +70,7 @@ import org.apache.qpid.server.security.C
 import org.apache.qpid.server.security.Result;
 import org.apache.qpid.server.security.SecurityToken;
 import org.apache.qpid.server.security.access.Operation;
+import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
 import org.apache.qpid.server.store.preferences.PreferenceRecord;
 import org.apache.qpid.server.store.preferences.PreferenceStore;
 import org.apache.qpid.server.store.preferences.PreferencesRoot;
@@ -1288,6 +1291,25 @@ public class BrokerAdapter extends Abstr
         return new ThreadStackContent(threadDump.toString());
     }
 
+    @Override
+    public Principal getUser()
+    {
+        return AuthenticatedPrincipal.getCurrentUser();
+    }
+
+    @Override
+    public Set<Principal> getGroups()
+    {
+        Subject currentSubject = 
Subject.getSubject(AccessController.getContext());
+        if (currentSubject == null)
+        {
+            return Collections.emptySet();
+        }
+
+        final Set<Principal> currentPrincipals = 
Collections.<Principal>unmodifiableSet(currentSubject.getPrincipals(java.security.acl.Group.class));
+        return currentPrincipals;
+    }
+
     private String getThreadStackTraces(final ThreadInfo threadInfo)
     {
         String lineSeparator = System.lineSeparator();



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to