code: public java.security.Principal getUserPrincipal()
      {
          if (WCCustomProperties.CHECK_REQUEST_OBJECT_IN_USE){
              checkRequestObjectInUse();
          }
          IWebAppSecurityCollaborator webAppSec=null;
          if (getDispatchContext()!=null && getDispatchContext().getWebApp() != null) {
              webAppSec = CollaboratorHelperImpl.getCurrentSecurityCollaborator(getDispatchContext().getWebApp());
          } else {
              webAppSec = CollaboratorHelperImpl.getCurrentSecurityCollaborator();           
          } 
              
          if (webAppSec != null) {
              if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)){  //306998.15
                  logger.logp(Level.FINE, CLASS_NAME,"getUserPrincipal", "calling getUserPrincipal on " + webAppSec.getClass().getName());
              }
              return webAppSec.getUserPrincipal();
          } else {
              if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)){  //306998.15
                  logger.logp(Level.FINE, CLASS_NAME,"getUserPrincipal", "returning null");
              }
              // No IWebAppSecurityCollaborator means no security, so no Principal 
              return null;
          }
      }
docs: {@inheritDoc} Returns the user Principal if authenticated, null otherwise.
  This logic is delegatd to the registered IWebAppSecurityCollaborator.