java/sql-java-prihlasovani/src/cz/frantovo/jaas/sql/SQLRealm.java
author František Kučera <franta-hg@frantovo.cz>
Thu, 21 Jul 2011 23:40:45 +0200
changeset 4 c7d713d71ad3
parent 3 f08e57ab4480
child 6 aff44e80f418
permissions -rw-r--r--
Jde to zkompilovat a spustit. Umí přihlásit i nepřihlásit uživatele. K databázi se zatím nepřipojuje.
     1 package cz.frantovo.jaas.sql;
     2 
     3 import com.sun.appserv.security.AppservRealm;
     4 import com.sun.enterprise.security.auth.realm.BadRealmException;
     5 import com.sun.enterprise.security.auth.realm.NoSuchRealmException;
     6 import com.sun.enterprise.security.auth.realm.NoSuchUserException;
     7 import java.util.Enumeration;
     8 import java.util.Properties;
     9 import java.util.logging.Level;
    10 import java.util.logging.Logger;
    11 import javax.security.auth.login.LoginException;
    12 
    13 /**
    14  * Bezpečnostní doména. 
    15  * Uživatelé jsou uloženi v SQL databázi.
    16  * @author fiki
    17  */
    18 public class SQLRealm extends AppservRealm {
    19 
    20 	private static final String AUTH_TYPE = "Ověřuje uživatele proti SQL databázi.";
    21 	private static final Logger log = Logger.getLogger(SQLRealm.class.getName());
    22 
    23 	@Override
    24 	public void init(Properties parametry) throws BadRealmException, NoSuchRealmException {
    25 		super.init(parametry);
    26 
    27 		String jaasContext = parametry.getProperty(JAAS_CONTEXT_PARAM, SQLLoginModul.VÝCHOZÍ_JAAS_KONTEXT);
    28 		setProperty(JAAS_CONTEXT_PARAM, jaasContext);
    29 
    30 		log.log(Level.INFO, "SQLRealm úspěšně vytvořen. JaasContext: {0}", jaasContext);
    31 	}
    32 
    33 	@Override
    34 	public String getAuthType() {
    35 		return AUTH_TYPE;
    36 	}
    37 
    38 	/**
    39 	 * @param uživatel přihlašovací jméno uživatele
    40 	 * @return seznam skupin, ve kterých se daný uživatel nachází
    41 	 * @throws NoSuchUserException když uživatel s tímto jménem neexistuje.
    42 	 */
    43 	@Override
    44 	public Enumeration getGroupNames(String uživatel) throws NoSuchUserException {
    45 		throw new NoSuchUserException("Metoda zatím není implementována. Uživatel: " + uživatel);
    46 	}
    47 
    48 	/**
    49 	 * 
    50 	 * @param jméno uživatelské jméno
    51 	 * @param heslo heslo
    52 	 * @return seznam skupin, do kterých uživatel patří
    53 	 */
    54 	public String[] ověřUživatele(String jméno, char[] heslo) throws LoginException {
    55 
    56 		// TODO: skutečně ověřovat heslo proti databázi
    57 
    58 		if (heslo != null && heslo.length == 3) {
    59 			return new String[]{"bezny"};
    60 		} else {
    61 			throw new LoginException("Heslo musí mít tři znaky :-P");
    62 		}
    63 	}
    64 }