summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java')
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
index dca3576827..77886e9030 100755
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
@@ -34,6 +34,7 @@ import org.apache.qpid.server.security.access.ObjectProperties;
import org.apache.qpid.server.security.access.ObjectType;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.security.access.OperationLoggingDetails;
+import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
import org.apache.qpid.server.security.auth.TaskPrincipal;
import javax.security.auth.Subject;
@@ -64,6 +65,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
public class SecurityManager implements ConfigurationChangeListener
@@ -183,6 +185,29 @@ public class SecurityManager implements ConfigurationChangeListener
return !(subject == null || subject.getPrincipals(SystemPrincipal.class).isEmpty());
}
+ public static AuthenticatedPrincipal getCurrentUser()
+ {
+ Subject subject = Subject.getSubject(AccessController.getContext());
+ final AuthenticatedPrincipal user;
+ if(subject != null)
+ {
+ Set<AuthenticatedPrincipal> principals = subject.getPrincipals(AuthenticatedPrincipal.class);
+ if(principals != null && !principals.isEmpty())
+ {
+ user = principals.iterator().next();
+ }
+ else
+ {
+ user = null;
+ }
+ }
+ else
+ {
+ user = null;
+ }
+ return user;
+ }
+
private static final class SystemPrincipal implements Principal
{
private SystemPrincipal()