X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2FOsAuthenticationToken.java;h=8ba3f9fbca9dad3f8d74f6398a216e63b43f5414;hb=72c5c4c7e5348ad96a451ef866a1e231db976dc7;hp=9fba6f054aa482fc52dcfee7435a5f50f862d4f6;hpb=149023e5969377045847bbecf24b0898b18a67a9;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/OsAuthenticationToken.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/OsAuthenticationToken.java index 9fba6f054..8ba3f9fbc 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/OsAuthenticationToken.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/OsAuthenticationToken.java @@ -4,7 +4,6 @@ import java.security.AccessController; import java.security.Principal; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Set; @@ -72,10 +71,18 @@ public class OsAuthenticationToken implements Authentication { this(null); } + /** @return the name, or null if not yet logged */ public String getName() { + Subject subject = Subject.getSubject(AccessController.getContext()); + if (subject == null) + return null; return getUser().getName(); } + /** + * Should not be called during authentication since group IDs are not yet + * available {@link Subject} has been set + */ public GrantedAuthority[] getAuthorities() { // grantedAuthorities should not be null at this stage List gas = new ArrayList( @@ -121,7 +128,7 @@ public class OsAuthenticationToken implements Authentication { } public Principal getUser() { - Subject subject = Subject.getSubject(AccessController.getContext()); + Subject subject = getSubject(); Set userPrincipals = subject .getPrincipals(osUserPrincipalClass); if (userPrincipals == null || userPrincipals.size() == 0) @@ -133,7 +140,7 @@ public class OsAuthenticationToken implements Authentication { } public Principal getUserId() { - Subject subject = Subject.getSubject(AccessController.getContext()); + Subject subject = getSubject(); Set userIdsPrincipals = subject .getPrincipals(osUserIdPrincipalClass); if (userIdsPrincipals == null || userIdsPrincipals.size() == 0) @@ -145,11 +152,19 @@ public class OsAuthenticationToken implements Authentication { } public Set getGroupsIds() { - Subject subject = Subject.getSubject(AccessController.getContext()); + Subject subject = getSubject(); return (Set) subject .getPrincipals(osGroupIdPrincipalClass); } + /** @return the subject always non null */ + protected Subject getSubject() { + Subject subject = Subject.getSubject(AccessController.getContext()); + if (subject == null) + throw new ArgeoException("No subject in JAAS context"); + return subject; + } + public Object getCredentials() { return ""; }