In the IS admin guide, section:
Basic Authentication (User Names and Passwords)
you can see: If the client doesn’t provide username/password, the server will “proceeds using the Default user account”.
You mentioned it’s random that some session are Default, that means some client just start the connection without present username/password.
If you allow the Anonymous access to your service (in which you are doing getUser()), you will get Default.
If you doesn’t expect client to access your service anonymously, change the ACL setting to avoid the Default user have access to your service.
That way, only the value user (with valid account) will reach your service, and you will alway get a real username using getUser()
#Integration-Server-and-ESB#webMethods#Flow-and-Java-services