Work on authentication
[lgpl/argeo-commons.git] / org.argeo.security.core / src / org / argeo / security / SecurityUtils.java
index b3b0f37f3687d7f66fea691e46083f3617e909b4..e1f7899a5f52227515f0e24b3157e64e7c32446d 100644 (file)
@@ -26,6 +26,7 @@ import javax.security.auth.Subject;
 import javax.security.auth.x500.X500Principal;
 
 import org.argeo.ArgeoException;
+import org.osgi.service.useradmin.Authorization;
 
 /** Static utilities */
 public final class SecurityUtils {
@@ -42,13 +43,16 @@ public final class SecurityUtils {
         *         anonymous
         */
        public static String getCurrentThreadUsername() {
-               return getUsername();
-       }
-
-       public final static String getUsername() {
                Subject subject = Subject.getSubject(AccessController.getContext());
                if (subject == null)
                        return null;
+               return getUsername(subject);
+       }
+
+       public final static String getUsername(Subject subject) {
+               // Subject subject = Subject.getSubject(AccessController.getContext());
+               // if (subject == null)
+               // return null;
                if (subject.getPrincipals(X500Principal.class).size() != 1)
                        return null;
                Principal principal = subject.getPrincipals(X500Principal.class)
@@ -57,6 +61,15 @@ public final class SecurityUtils {
 
        }
 
+       public final static String getDisplayName(Subject subject) {
+               return getAuthorization(subject).toString();
+       }
+
+       public final static Authorization getAuthorization(Subject subject) {
+               return subject.getPrivateCredentials(Authorization.class).iterator()
+                               .next();
+       }
+
        public final static Set<String> roles() {
                Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
                Subject subject = Subject.getSubject(AccessController.getContext());