undertow/src/main/java/org/wildfly/extension/undertow/security/JAASIdentityManagerImpl.java
private Principal getPrincipal(Subject subject) {
        Principal principal = null;
        Principal callerPrincipal = null;
        if (subject != null) {
            Set<Principal> principals = subject.getPrincipals();
            if (principals != null && !principals.isEmpty()) {
                for (Principal p : principals) {
                    if (!(p instanceof Group) && principal == null) {
                        principal = p;
                    }
                    if (p instanceof Group) {
                        Group g = Group.class.cast(p);
                        if (g.getName().equals(SecurityConstants.CALLER_PRINCIPAL_GROUP) && callerPrincipal == null) {
                            Enumeration<? extends Principal> e = g.members();
                            if (e.hasMoreElements())
                                callerPrincipal = e.nextElement();
                        }
                    }
                }
            }
        }
        return callerPrincipal == null ? principal : callerPrincipal;
    }
private Principal getPrincipal(Subject subject) {
        Principal principal = null;
        Principal callerPrincipal = null;
        if (subject != null) {
            Set<Principal> principals = subject.getPrincipals();
            if (principals != null && !principals.isEmpty()) {
                for (Principal p : principals) {
                    if (!(p instanceof Group) && principal == null) {
                        principal = p;
                    }
                    if (p instanceof Group) {
                        Group g = Group.class.cast(p);
                        if (g.getName().equals(SecurityConstants.CALLER_PRINCIPAL_GROUP) && callerPrincipal == null) {
                            Enumeration<? extends Principal> e = g.members();
                            if (e.hasMoreElements())
                                callerPrincipal = e.nextElement();
                        }
                    }
                }
            }
        }
        return callerPrincipal == null ? principal : callerPrincipal;
    }
private Principal getPrincipal ( Subject subject ) { Principal principal = null ; Principal callerPrincipal = null ; if ( subject != null ) { Set < Principal > principals = subject . getPrincipals ( ) ; if ( principals != null && ! principals . isEmpty ( ) ) { for ( Principal p : principals ) { if ( ! ( p instanceof Group ) && principal == null ) { principal = p ; } if ( p instanceof Group ) { Group g = Group . class . cast ( p ) ; if ( g . getName ( ) . equals ( SecurityConstants . CALLER_PRINCIPAL_GROUP ) && callerPrincipal == null ) { Enumeration < ? extends Principal > e = g . members ( ) ; if ( e . hasMoreElements ( ) ) callerPrincipal = e . nextElement ( ) ; } } } } } return callerPrincipal == null ? principal : callerPrincipal ; }
Get the Principal given the authenticated Subject. Currently the first principal that is not of type {@code Group} is
considered or the single principal inside the CallerPrincipal group.

@param subject
@return the authenticated principal
Get the Principal given the authenticated Subject . Currently the first principal that is not of type { @code Group } is considered or the single principal inside the CallerPrincipal group .