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]