Intégration d'un système d'authentification unifié
JMap supporte l'authentification unifiée (single sign-on ou SSO) et une implémentation fonctionnant avec Active Directory a été développée dans JMap 4.0.3. Dans le but de permettre aux développeurs d'intégrer de nouveaux systèmes d'authentification externalisés, certains ajouts ont été faits dans le SDK de JMap pour faciliter la tâche de développement. Cet article a pour but d'expliquer l'architecture et le fonctionnement de l'authentification unifiée dans JMap afin de permettre l'intégration d'un système externe d'authentification.
Étapes de l'authentification unifiée
Voici un diagramme de séquences système démontrant le flot de messages entre les trois composants impliqués dans le processus de l'authentification unifiée.
Partie serveur
Le développement qui doit être effectué dans la partie serveur est en charge de valider les jetons qui sont soumis par les applications JMap. L'intégration dans JMap Server doit se faire via un gestionnaire d'utilisateur personnalisé (sous-classe de UserManager) qui implémente l'interface ExternalAuthenticationService. Pour simplifier la tâche, il est possible de créer une sous-classe d'un gestionnaire d'utilisateur existant et d'implémenter l'interface ExternalAuthenticationService afin de créer un nouveau service d'authentification unifiée.
Cette interface doit être implémentée par un UserManager pour prendre en charge les requêtes d'authentification vers un système externe. Celle-ci a deux rôles :
Retourner une instance de ExternalAuthenticatorInfo qui sera utilisée du côté client pour obtenir le jeton d'authentification courant.
Faire la validation des jetons d'authentification provenant des applications JMap.
Cette interface a pour but de transporter le nom de la classe qui implémente l'interface ExternalAuthenticator, et qui sera utilisée du côté client dans le processus d'authentification externe.
Voici un diagramme de séquences démontrant le flot de messages entre les composants impliqués dans le processus de l'authentification unifiée du côté serveur (JMap Server).
Partie cliente
Le développement qui doit être effectué dans la partie cliente est en charge de récupérer l'identifiant ou le jeton provenant du service d'authentification externe ciblé. Avant d'effectuer l'authentification, l'application JMap va récupérer le jeton d'authentification via l'interface ExternalAuthenticator. Si un jeton est disponible, l'application JMap encrypte celui-ci et le transfère à JMap Server afin pour procéder à la validation du jeton et à l'ouverture de session. Si le jeton est valide, une nouvelle session JMap est ouverte et l'identifiant de la session JMap est retourné à l'application JMap.
Cette interface a pour but de retourner une instance de AuthenticationToken avec laquelle l'application JMap devra s'authentifier auprès du service externe.
Cette interface a pour but de stocker le nom de l'utilisateur courant ainsi que le jeton d'authentification avec lesquels l'authentification sera effectuée.
Voici un diagramme de séquences démontrant le flot de messages entre les composants impliqués dans le processus de l'authentification unifiée du côté client (JMap Pro).
English version
Step-by-step guide