Utilisation du SSO

Bonjour,

Afin de ne pas multiplier les user/password j’aurai aimé utilisé BM pour l’authentification dans d’autre application.

Est-il possible d’utilisé le service SSO de blue-mind pour d’autre application (sur un autre serveur)?

Si oui, avez-vous de la doc sur la maniéré de le mettre en oeuvre ? installer juste le paquet “BM-HPS” ? comment le configurer ?

Merci d’avance,
Nicolas

C’est possible. Par défaut hps prend sa configuration à l’intérieur d’un de ces jars, mais si l’équivalent est présent dans /etc/bm-hps, il utilise ça en priorité.

Pour ça il faut recopier depuis notre git les fichiers plugins/net.bluemind.proxy.http/config/* dans /etc/bm-hps/

Vous devriez avoir une arborescence qui ressemble à ça :

root@bm1:~# find /etc/bm-hps/
/etc/bm-hps/
/etc/bm-hps/bm_sso.xml
/etc/bm-hps/forwards
/etc/bm-hps/forwards/cal.xml
/etc/bm-hps/forwards/settings.xml
/etc/bm-hps/forwards/titi.xml
/etc/bm-hps/forwards/ac.xml
/etc/bm-hps/forwards/root.xml
/etc/bm-hps/forwards/contact.xml
/etc/bm-hps/forwards/roundcube.xml
/etc/bm-hps/forwards/setup.xml
/etc/bm-hps/forwards/templates.xml

Je modifie le fichier bm_sso.xml pour remplacer config/forwards par forwards (le chemin dans le jar est un peu différent de celui sur disque).

Ensuite je me crée un fichier forwards/titi.xml pour ma nouvelle application, un petit moteur de recherche :

<?xml version="1.0" encoding="utf-8"?> <forwards> <forward path="/titi" target="http://www.google.com"> <auth kind="BLUEMIND_CORE" /> <whitelist> <wl uri="/appcache.jsp"/> </whitelist> </forward> </forwards>

Je modifie la conf de nginx pour lui dire que /titi est proxyfié et protégé par hps :

  location /titi/ {
    proxy_pass http://127.0.0.1:8079/titi/;
  }

Je restart hps et nginx et je me rend sur https://<mon_url>/titi/
J’ai bien la page de login BM. Je m’authentifie et j’obtiens une réponse de google :
400. That’s an error.

Your client has issued a malformed or illegal request. That’s all we know.

Mais mon url est bien https://<mon_url>/titi/bluemind_sso_security

Tout ça parce que google n’a pas adapté son application pour accepter les headers HTTP de hps, une honte !

Côté applicatif, l’application reçoit toute une série de headers http, dont BMUserLogin avec le login@mondoma.ine et BMSessionId un token de session utilisable entre autre comme mot de passe imap et mot de passe bluemind core pour toute la durée de la session.

Voir BMCAuthProvider#decorate() pour la liste exhaustive des headers transmis par HPS.
Voir HPSFilter pour un exemple de filtre J2EE qui traite ces headers et les ré-injecte dans nos JSP d’accueil dans une variable json pour que nos javascript puissent s’en servir.

Pour le single sign out, un simple lien vers une url finissant par /bluemind_sso_logout est intercepté par notre filtre (HPSFilter). Il met fin à la session sur blue mind core, en profite pour invalider la session de l’appli courante puis redirige vers /. Le serveur de MQ notifie hps que la session est invalide et refuse alors l’accès aux autres applications.

Juste pour ma culture, c’est quoi hps ?

bm-hps c’est Blue Mind Http Proxy Server. Le composant qui assure la couche single sign on (et out) transparente entre nos applications.

Merci pour les infos je vais me faire quelque test :smiley:

bonjour, nous souhaiterions également utiliser votre sso afin d’identifier nos utilisateur dans d’autres applications, avez-vous une doc sur ce sujet ?

Pas grand chose de plus que les informations données ci-dessus qui sont toujours d’actualité.

Le hic c’est quenous receptionnons bien les headers dans notre application, mais nous ne savons pas ce qu’il faut renvoyer afin de ne pas avoir une erreur 504 Gateway Time-out