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;
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;
14 * Bezpečnostní doména.
15 * Uživatelé jsou uloženi v SQL databázi.
18 public class SQLRealm extends AppservRealm {
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());
24 public void init(Properties parametry) throws BadRealmException, NoSuchRealmException {
25 super.init(parametry);
27 String jaasContext = parametry.getProperty(JAAS_CONTEXT_PARAM, SQLLoginModul.VÝCHOZÍ_JAAS_KONTEXT);
28 setProperty(JAAS_CONTEXT_PARAM, jaasContext);
30 log.log(Level.INFO, "SQLRealm úspěšně vytvořen. JaasContext: {0}", jaasContext);
34 public String getAuthType() {
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.
44 public Enumeration getGroupNames(String uživatel) throws NoSuchUserException {
45 throw new NoSuchUserException("Metoda zatím není implementována. Uživatel: " + uživatel);
50 * @param jméno uživatelské jméno
52 * @return seznam skupin, do kterých uživatel patří
54 public String[] ověřUživatele(String jméno, char[] heslo) throws LoginException {
56 // TODO: skutečně ověřovat heslo proti databázi
58 if (heslo != null && heslo.length == 3) {
59 return new String[]{"bezny"};
61 throw new LoginException("Heslo musí mít tři znaky :-P");