import java.security.AccessController;
import java.security.Principal;
+import java.security.acl.Group;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.security.auth.Subject;
+import javax.security.auth.x500.X500Principal;
import org.argeo.ArgeoException;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
/**
* Retrieves information about the current user. Not an API, can change without
Subject subject = getSubject();
if (subject == null)
return null;
- Principal principal = subject.getPrincipals().iterator().next();
+ Principal principal = subject.getPrincipals(X500Principal.class)
+ .iterator().next();
return principal.getName();
}
public final static Set<String> roles() {
Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
- Authentication authentication = getAuthentication();
- for (GrantedAuthority ga : authentication.getAuthorities()) {
- roles.add(ga.getAuthority());
+ // roles.add("ROLE_USER");
+ Subject subject = getSubject();
+ X500Principal userPrincipal = subject
+ .getPrincipals(X500Principal.class).iterator().next();
+ roles.add(userPrincipal.getName());
+ for (Principal group : subject.getPrincipals(Group.class)) {
+ roles.add(group.getName());
}
- return Collections.unmodifiableSet(roles);
+ return roles;
}
- public final static Authentication getAuthentication() {
- Set<Authentication> authens = getSubject().getPrincipals(
- Authentication.class);
- if (authens != null && !authens.isEmpty()) {
- Principal principal = authens.iterator().next();
- Authentication authentication = (Authentication) principal;
- return authentication;
- }
- throw new ArgeoException("No authentication found");
- }
+ // public final static String getUsername() {
+ // return getAuthentication().getName();
+ // }
+
+ // public final static Set<String> roles() {
+ // Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
+ // Authentication authentication = getAuthentication();
+ // for (GrantedAuthority ga : authentication.getAuthorities()) {
+ // roles.add(ga.getAuthority());
+ // }
+ // return Collections.unmodifiableSet(roles);
+ // }
+ //
+ // public final static Authentication getAuthentication() {
+ // return SecurityContextHolder.getContext().getAuthentication();
+ // }
+
+ // public final static Authentication getAuthentication() {
+ // Set<Authentication> authens = getSubject().getPrincipals(
+ // Authentication.class);
+ // if (authens != null && !authens.isEmpty()) {
+ // Principal principal = authens.iterator().next();
+ // Authentication authentication = (Authentication) principal;
+ // return authentication;
+ // }
+ // throw new ArgeoException("No authentication found");
+ // }
public final static Subject getSubject() {
Subject subject = Subject.getSubject(AccessController.getContext());