Home arrow BPM & Open Source arrow Tipps & Tricks arrow Client-Jaas Anmeldung am JBoss
Client-Jaas Anmeldung am JBoss Drucken
Geschrieben von Bernd Rücker   

Client-Jaas Anmeldung am JBoss

Soll sich eine Anwendung über JAAS beim JBoss anmelden, sollte normalerweise eine jaas.conf existieren, mit etwa folgendem Inhalt:

ccs {  
org.jboss.security.ClientLoginModule required;
};

Dies ist aber meist problematisch, da z.B. bei Webstart oder größeren Client-Installationen die Datei nicht über verschiedene Rechner verteilt werden soll. Dies kann nun aber auch programmatisch geschehen

package com.camunda.commons.ejb;

import java.util.HashMap;

import javax.security.auth.login.AppConfigurationEntry;
import javax.security.auth.login.Configuration;
import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;

public class JaasJbossConfiguration extends Configuration {

private static AppConfigurationEntry jbossEntry = new AppConfigurationEntry(
"org.jboss.security.ClientLoginModule",
LoginModuleControlFlag.REQUIRED,
new HashMap());

public static void activateConfiguration() {
Configuration.setConfiguration( new JaasJbossConfiguration() );
}

@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
return new AppConfigurationEntry[] { jbossEntry };
}

@Override
public void refresh() {
}
}

Somit kann eine Anmeldung ganz einfach geschehen

     ...
JaasJbossConfiguration.activateConfiguration();

UsernamePasswordHandler handler = new UsernamePasswordHandler("ruecker", "xx");
LoginContext lc = new LoginContext("ccs", handler);
lc.login();
...

Der Name, der dem LoginContext übergeben wird entspricht dem in der JAAS-Konfiguration im JBoss. Soll sich eine Webanmeldung innerhalb des selben JBoss anmelden, braucht das "JaasJbossConfiguration.activateConfiguration();" nicht ausgeführt werden.