franta-hg@2: package cz.frantovo.jaas.sql; franta-hg@2: franta-hg@2: import com.sun.appserv.security.AppservRealm; franta-hg@4: import com.sun.enterprise.security.auth.realm.BadRealmException; franta-hg@4: import com.sun.enterprise.security.auth.realm.NoSuchRealmException; franta-hg@2: import com.sun.enterprise.security.auth.realm.NoSuchUserException; franta-hg@2: import java.util.Enumeration; franta-hg@4: import java.util.Properties; franta-hg@4: import java.util.logging.Level; franta-hg@4: import java.util.logging.Logger; franta-hg@4: import javax.security.auth.login.LoginException; franta-hg@2: franta-hg@2: /** franta-hg@4: * Bezpečnostní doména. franta-hg@4: * Uživatelé jsou uloženi v SQL databázi. franta-hg@2: * @author fiki franta-hg@2: */ franta-hg@2: public class SQLRealm extends AppservRealm { franta-hg@2: franta-hg@4: private static final String AUTH_TYPE = "Ověřuje uživatele proti SQL databázi."; franta-hg@4: private static final Logger log = Logger.getLogger(SQLRealm.class.getName()); franta-hg@4: franta-hg@2: @Override franta-hg@4: public void init(Properties parametry) throws BadRealmException, NoSuchRealmException { franta-hg@4: super.init(parametry); franta-hg@4: franta-hg@4: String jaasContext = parametry.getProperty(JAAS_CONTEXT_PARAM, SQLLoginModul.VÝCHOZÍ_JAAS_KONTEXT); franta-hg@4: setProperty(JAAS_CONTEXT_PARAM, jaasContext); franta-hg@4: franta-hg@4: log.log(Level.INFO, "SQLRealm úspěšně vytvořen. JaasContext: {0}", jaasContext); franta-hg@2: } franta-hg@2: franta-hg@2: @Override franta-hg@4: public String getAuthType() { franta-hg@4: return AUTH_TYPE; franta-hg@4: } franta-hg@4: franta-hg@4: /** franta-hg@4: * @param uživatel přihlašovací jméno uživatele franta-hg@4: * @return seznam skupin, ve kterých se daný uživatel nachází franta-hg@4: * @throws NoSuchUserException když uživatel s tímto jménem neexistuje. franta-hg@4: */ franta-hg@4: @Override franta-hg@4: public Enumeration getGroupNames(String uživatel) throws NoSuchUserException { franta-hg@4: throw new NoSuchUserException("Metoda zatím není implementována. Uživatel: " + uživatel); franta-hg@4: } franta-hg@4: franta-hg@4: /** franta-hg@4: * franta-hg@4: * @param jméno uživatelské jméno franta-hg@4: * @param heslo heslo franta-hg@4: * @return seznam skupin, do kterých uživatel patří franta-hg@4: */ franta-hg@4: public String[] ověřUživatele(String jméno, char[] heslo) throws LoginException { franta-hg@4: franta-hg@4: // TODO: skutečně ověřovat heslo proti databázi franta-hg@4: franta-hg@4: if (heslo != null && heslo.length == 3) { franta-hg@4: return new String[]{"bezny"}; franta-hg@4: } else { franta-hg@4: throw new LoginException("Heslo musí mít tři znaky :-P"); franta-hg@4: } franta-hg@2: } franta-hg@2: }