Napravio sam nekakav mehanizam ali i dalje imam isti problem.
Evo šta sam napravio :
CallbackHandler za sada vraća zakucane vrednosti (za login i password) postojećeg usera iz moje baze :
Code:
public void handle(Callback[] callbacks) throws IOException {
((NameCallback)callbacks[0]).setName("slavica");
((PasswordCallback)callbacks[1]).setPassword(HashUtils.sha("slavica").toCharArray());
}
U config fajlu (koji nije xml, nego po sintaksi iz javadoca za klasu Configuration) sam definisao DatabaseServerLoginModule (ustvari napravio sam njegovog naslednika) koji čita podatke iz moje baze.
U primeru koji sam pokupio iz knjige i adaptirao, LoginContext se inicijalizuje iz config fajla (a prosleđujem mu i callbackHandlera) :
Code:
System.setProperty("java.security.auth.login.config", "d:\\tag notes\\client.config"); // ok, ovo ću upristojiti, samo dok mi sve proradi
/* Authenticate via JAAS */
LoginContext loginContext = new LoginContext("HelloClient", new TestCallbackHandler());
loginContext.login();
...i obzirom da okida metode getUsersPassword() i getRoleSets() iz mog loginModula (traceovao sam, dobije korektne parametre iz callbackHandlera, i upiti vrate vrednosti koje očekujem), rekao bih da to šljaka.
E, onda pristupim Vanjinom sessionEjb-u iz primera sa prethodne strane :
Code:
SessionEJB ejb = (SessionEJB)UtilCli.getEjb("com.tagws.core.dbbroker.SessionEJBBean");
/* Call a business method, propagating the security context */
String result;
try {
result = ejb.radi();
}
catch (javax.ejb.EJBException e) {
result = e.getCausedByException().getMessage();
}
U metodi
ejb.radi ponovo pukne poziv
ctx.getCallerPrincipal() i ponovo baci IllegalStateException sa getMessage() == null.
A ja imam utisak da sam napravio sve što treba jer ova metoda taman može da vrati jedan element niza koji vraća metoda getRoleSets() iz LoginModula.
Evo šta nisam napravio :
ejb-jar.xml iz Hylovog primera sa prethodne strane. Koliko kapiram, metoda koju ja pokušavam da okinem se ne oslanja na njega. Ili grešim ?
[Ovu poruku je menjao zmau dana 03.02.2007. u 21:13 GMT+1]
it works on my machine