Client-Jaas Anmeldung am JBossSoll 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. |