domenica 29 aprile 2012

openshift: non esiste +$OPENSHIFT_APP_DIR

modificare script post_deplo!!
da $OPENSHIFT_APP_DIR/ a $OPENSHIFT_HOMEDIR/$OPENSHIFT_APP_NAME/

openshift: remove file with git

Remember this:


git rm -rf src/ pom.xml
git commit -a -m "removing default files"

domenica 15 aprile 2012

picketlink social: come creare un meccanismo di autenticazione+autorizzazione ibrido

Scenario: sito web con registrazione utenti per fornire servizi personalizzati
autenticazione + autorizzazione: come gestirle?

Tecnologia prescelta: jee6 + jboss (su openshift) + mysql

Soluzioni possibili:
 - tutto interno
 - autenticazione esterna + autorizzazione interna
 - entrambe le soluzioni insieme

Ragioniamo...
Oggi quasi tutti hanno un account su facebook o su google, perchè non utilizzare il sistema di autenticazione offerto da questi provider, gestendo internamente il processo di autorizzazione?

Nulla toglie la possibilità di registrare un utente internamente per il processo di autenticazione + autorizzazione..

Soluzione: usare due domini di sicurezza a cascata.

Indizi:
usare facebbok + google per autenticazione:
http://server.dzone.com/articles/jbossas7-making-your-web

Multiple login modules can be chained together in a stack, with each login module providing both the authentication and authorization components. This works for many use cases, but sometimes authentication and authorization are split across multiple user management stores.
http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/5/html/Security_Guide/ch12.html#sect-Password_Stacking

Abilitare l'audit del processo di autenticazione:
http://middlewaremagic.com/jboss/?p=453

Gestione dei domini in standalone.xml:

<security-domain cache-type="default" name="external_auth">
            <authentication>
                <login-module code="org.picketlink.social.auth.ExternalAuthLoginModule" flag="required">
                    <module-option name="password-stacking" value="useFirstPass">
                </module-option></login-module>
                 <login-module code="Database" flag="required">
                    <module-option name="dsJndiName" value="java:jboss/datasources/MysqlDS">
                    <module-option name="principalsQuery" value="select A.password from UserAuth as A where A.username=?">
                    <module-option name="rolesQuery" value="SELECT B.roleName,'Roles' FROM UserRole as B left join UserAuth as A on (A.id =B.userAuth_id) where A.username = ?">
                    <module-option name="password-stacking" value="useFirstPass">                   
                </module-option></module-option></module-option></module-option></login-module>
            </authentication>
        </security-domain>


Questo è solo l'inizio...