/** * Create a java {@link javax.security.auth.Subject} from this subject. * * @return an instance of Subject */ public javax.security.auth.Subject toJavaSubject() { Set<java.security.Principal> principals = new LinkedHashSet<>(this.principals); for (String key : attributes.abacAttributeNames()) { OptionalHelper.from(attributes.abacAttribute(key)) .stream() .filter(prop -> prop instanceof Principal) .map(Principal.class::cast) .forEach(principals::add); } principals.addAll(grants); Set<Object> pubCredentials = new HashSet<>(publicCredentials.values()); Set<Object> privCredentials = new HashSet<>(privateCredentials.values()); return new javax.security.auth.Subject( true, principals, pubCredentials, privCredentials ); }