public String getAnonymousUser() {
final Domain domain = InjectedValues.getInstance().getHabitat().getService(Domain.class);
final List<Config> configs = domain.getConfigs().getConfig();
// find the ADMIN_REALM
AuthRealm adminFileAuthRealm = null;
for( final Config config : configs )
{
if ( config.getSecurityService() == null ) continue;
for( final AuthRealm auth : config.getSecurityService().getAuthRealm() )
{
if ( auth.getName().equals(ADMIN_REALM) )
{
adminFileAuthRealm = auth;
break;
}
}
}
if (adminFileAuthRealm == null) {
// There must always be an admin realm
throw new IllegalStateException( "Cannot find admin realm" );
}
// Get FileRealm class name
final String fileRealmClassName = adminFileAuthRealm.getClassname();
if (fileRealmClassName != null && ! fileRealmClassName.equals(FILE_REALM_CLASSNAME)) {
// This condition can arise if admin-realm is not a File realm. Then the API to extract
// the anonymous user should be integrated for the logic below this line of code. for now,
// we treat this as an error and instead of throwing exception return false;
return null;
}
Property keyfileProp = adminFileAuthRealm.getProperty("file");
if ( keyfileProp == null ) {
throw new IllegalStateException( "Cannot find property 'file'" );
}
final String keyFile = keyfileProp.getValue();
if (keyFile == null) {
throw new IllegalStateException( "Cannot find key file" );
}
//System.out.println( "############### keyFile: " + keyFile);
String user = null;
final String[] usernames = getUserNames(adminFileAuthRealm.getName());
if (usernames.length == 1)
{
try
{
InjectedValues.getInstance().getHabitat().getService(com.sun.enterprise.security.SecurityLifecycle.class);