Auth me on Jabber

CAS est un service très populaire permettant de mettre en place le Single Sign On, avec des librairies clientes pour la plupart des langages.

On peut facilement rajouter des handlers d’authentification.

En voici un très rapide, permettant de s’authentifier sur un service Jabber.

Installation :

Uniquement compatible CAS v3.

Installez ce bout de xml dans le deployerConfigContext, dans la liste des AuthHandlers :


<bean class="com.ohmforce.cas.JabberAuthenticationHandler">
 <property name="jabberHostname" value="DOMAIN"/>
</bean>

Copiez jabber-cas.jar.zip et la jar de Smack, relancez la webapp CAS et c’est tout.

Pour se logger sur vos applications CASifiées, vos utilisateurs utiliserons leur compte défini dans sur le domaine indiqué par jabberHostname, le mal nommé.

Le code

Y en a tellement peu que ca tient ici.


package com.ohmforce.cas;
import org.jasig.cas.authentication.handler.AuthenticationException;
import org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler;
import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;

final public class JabberAuthenticationHandler extends
        AbstractUsernamePasswordAuthenticationHandler {
    private String jabberHostname;
    @Override
    protected boolean authenticateUsernamePasswordInternal(
            UsernamePasswordCredentials credentials)
            throws AuthenticationException {
        XMPPConnection conn = new XMPPConnection(jabberHostname);
        try {
            conn.connect();
            conn.login(credentials.getUsername(), credentials.getPassword());
        } catch (XMPPException e) {
            log.error("Failed", e);
            return false;
        }
        finally{
            conn.disconnect();
        }
        return true;
    }

public void setJabberHostname(String server)
{
    jabberHostname=server;
}
public String getJabberHostname()
{
    return jabberHostname;
}

}

%d bloggers like this: