Diky moc,
konecne muzu napsat: FUNGUJE MI TO :)
Sice to trvalo 6 dni, ale snad mam spravny zpusob.
Jen sepisi co a jak:
1. Zkousel jsem vytvorit vlastni login module a pripojovat se pomoci "LoginContext", zde bohuzel bez uspechu Nejprve jsem zkousel implementovat LoginModule a pak extendovat tridu "AppservPasswordLoginModule" (pro glassfish), ani jedno nefunguje.

2. Pak jsem zkousel pouziti "JDBCRealm", ale take bez uspechu. Toto funguje asi jen na serveru (pro web aplikace)

3. No a konecne (na vasi radu) jsem pouzil "JdbcAuthModule.jar <http://jroller.com/resources/b/brviking/JdbcAuthModule.jar>" nastavil podle navodu. Pote jsem vytvoril DB, kde mam uzivatele a uzivatele_role (zde je trosku problem, protoze v tabulce s rolemi, musi byt sloupec "role" jako prvni). Navic jsem zde nenasel moznost kodovaneho hesla (md5, sha-1) jako v pripade JDBCRealm, ale to uz me tolik netrapi, protoze na server poslu heslo uz kodovane.
Pote konfigurace:
U enterprise projektu v application.xml:
 <security-role>
<role-name>alesak</role-name> </security-role>
 <security-role>
<role-name>admin</role-name> </security-role>

Dale jsem vytvoril testovaci beanu:
@Stateless
@RolesAllowed({"alesak", "admin"})
@DeclareRoles({"alesak", "admin"})
public class TestBean implements TestRemote {
   public String getPozdrav() {
       try {
System.out.println((ctx.isCallerInRole("alesak") ? "ANO" : "NE")); System.out.println((ctx.isCallerInRole("admin") ? "ANO" : "NE"));
       } catch (Exception e) {
           System.err.println(e.getMessage());
       }
       return ctx.getCallerPrincipal().getName();
   }
}


No a nyni klient:
System.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory"); System.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming"); System.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); System.setProperty("org.omg.CORBA.ORBInitialHost", "127.0.0.1"); System.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); System.setProperty("java.security.auth.login.config", Main.class.getResource("/irminsul/login.conf").toString());
           ProgrammaticLogin login = new ProgrammaticLogin();
           login.login("ales", HashUtil.SHA1AsString("heslo"));
           Context c = new InitialContext();
           TestRemote tr = (TestRemote) c.lookup("TestRemote");
           System.out.println(tr.getPozdrav());
           login.logout(true);

Vysledkem je vypis do konsole na serveru: ANO, NE
Na klientovi: "ales", coz je vraceno z EJB Beany "return String"

Ted uz se s tim tak nejak poperu. Jedna vec me ale zarazila, ze neexistuje nejaka prima implementace jiz od dodavatele AS ci jako standard J2EE. Jeste jedna drobna vec: V cele tehle "aplikaci" se nikde nehraje na "GROUP", coz by se melo mapovat pres ejb.xml. Jde mi o to, jestli nebudu miti problemy, kdyz pozdeji budu na ejb-projekt stavet i webovou aplikaci. Nevim jestli je to umysl, nebo nedostatecne rozsireni: "org.nbcommunity.glassfish.jdbcAuthModule.JdbcLoginModule"

Jeste jednou diky vsem za pomoc.


________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Servers.
http://www.eset.com

Odpovedet emailem