PDA

View Full Version : uso dei Role su JBoss


Otaking
16-12-2010, 16:32
Dovrei gestire l'utenza di un'applicazione web che gira su JBoss utilizzando la gestione dei Role che offre l'application server in questione..... non sapendone nulla per ora, ho trovato su internet diverse spiegazioni che sono più o meno simili a questa:

http://www.fusioncube.net/index.php/jboss-role-based-security

Nel mio caso però ho bisogno di un vero e proprio login creato da me...mi sembra di aver capito che per questo bisogna agire sul web.xml e cambiare il tipo di <login-config> con una cosa del genere:

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/fail_login.html</form-error-page>
</form-login-config>
</login-config>

Credo che login.jsp sia la pagina dove si trovi il form di login....mentre l'altra è la pagina dove si viene dirottati in caso di login fallito (se dico castronerie, correggetemi!)

Il form deve essere per forza così:

<form name="loginForm" method="post" action="j_security_check">
User Name
<input type="text" name="j_username">
Password
<input type="password" name="j_password">
<input type="submit" value="login">
</form>

..anche se non mi è chiaro come funzioni la action "j_security_check"... restituisce una stringa come le classiche action??? va beh.....

Nel mio caso il controllo dei dati non viene fatto su delle tabelle a Db ma in dei file .properties da me creati.

Ovviamente non funziona nulla di tutto ciò :dhò:
prima di postarvi il codice dei vari file, volevo chiedere se qualcuno aveva già fatto qualcosa di simile....o se in rete avete trovato qualcosa di più completo (ho trovato diverse guide ma mai esattamente col percorso che devo fare io) ...ecc.... insomma sto seguendo la strada giusta?

gokan
17-12-2010, 20:30
Ciao, la soluzione che hai proposto non è del tutto sbagliata.
La soluzione che hai postato tu per il login da form è quella tipica che si usa su un web container come tomcat (che in realtà dovrebbe proprio essere quello incluso dentro jboss).
Potresti cominciare a provare ad attivare la sicurezza con la configurazione base

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>The Restricted Zone</realm-name>
</login-config>

Questa farà apparire la finestra di login base del tuo browser.
Poi, se non ricordo male, dovresti pure smanettare su un paio di file xml per attivare la possibilità di leggere i ruoli ed utenti direttamente da file di properties.
Domani, vedo se riesco a trovare l'esempio che avevo seguito io!!
Ciao

Otaking
20-12-2010, 09:22
Allora...intanto ti ringrazio per aver risposto ;)
sono riuscito a far funzionare il tutto con la soluzione proposta da te, ovvero la BASIC! Tra l'alltro utilizzando tra le varie cose, come front-end, RichFaces..sono riuscito a utilizzare la componente #{rich:isUserInRole(object) che è una figata pazzesca!

Ovviamente però.....come login-config devo usare la modalità FORM... il problema è che per ora non riesco a farlo andare perchè credo che vada in conflitto con i flitri di RichFaces stesso che sono impostati nel web.xml...... (infatti i browser mi tentano di scaricare la index.xhtml come se fosse un file...è questo problema lo da quanto i framework di front-end si incazzano)

Otaking
20-12-2010, 10:40
Credo di avere soprattutto problemi col giro che dovrebbero fare le pagine..... una cosa non mi è chiara... ma dentro <form-login-page> devo mettere la pagina dove si trova il form di login...o la pagina dove si arriva dopo aver effettuato la login?
perchè se così non fosse...non saprei dove impostare la pagina di arrivo post-login... non posso nemmeno dirottarla di forza perchè non so cosa restituisce la action j_security_check

vorrei semplicemente che la prima pagina dell'applicazione sia quella con il form di login....se logga con successo, entra nell'applicazione vera e propria con i relativi permessi in base al tipo di utenza...altrimenti finisce nella pagina di errore (impostata in <form-error-page> )

help :muro:

gokan
20-12-2010, 19:05
Ciao, la tua
<form-login-page>/login.jsp</form-login-page>
deve essere la pagina dove l'utente inserisce username e password e con il pulsante di submit.
Che errore ottieni esattamente?

Otaking
05-01-2011, 08:48
Alla fine sono riuscito ad effettuare l'autenticazione con la modalità FORM però riutilizzando "JBoss JMX Console" predefinita che funziona alla grande...semplicemente dovete andare a modificare i rispettivi file di properties con gli utenti abilitati.
Se volete maggiorni informazioni resto a disposizione.

Una cosa però ora mi sfugge......sicuramente questi utenti verranno messi in sessione... ma non riesco a risalire a questi dati... sicuramente bisogna utilizzare dei metodi già disponibili (legati appunto all'utilizzo delle componenti di JBoss) ma in giro non sto trovando particolari informazioni..

Voi avete qualche idea?

gokan
05-01-2011, 19:06
Prova ad utilizzare banalmente l'interfaccia HttpServletRequest
Essa mette a disposizione metodi utili come :

Principal getUserPrincipal();
String getRemoteUser();
HttpSession getSession();


La javadoc : http://download.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html