Mise en place de l'application single tenant et mapping des données
1. Accéder au portail Azure Entra id
2. Créer un nouvel enregistrement d'application single tenant, attribuer un nom significatif et laisser l'URI de redirection vide
3. Sous Certificats et secrets, ajouter un nouveau secret client. Changer la date d'expiration pour le plus tard possible (24 mois) où selon la recommandation du cégep, la description n'a pas d'importance
Prendre note de la valeur du secret et le copier ailleurs. Le secret ne sera ensuite plus affiché en entièreté dans Azure
Si le secret est perdu, il est toujours possible de recommencer cette étape, elle sera aussi à refaire lors de son expiration
Sous l'onglet Manifeste, ajuster la valeur acceptMappedClaims à true pour autoriser Azure à utiliser des réclamations personnalisés
4. Se diriger dans vue d'ensemble, ouvrir les endpoints et prendre note de l'id d'application et de l'url du document de métadonnée OIDC
5. accéder à l'application géré dans le répertoire local
6. Sous authentification unique, éditer la section attributs et réclamations
7. Ajouter les attributs nécessaires que l'application va envoyer à Koha, le nom de l'attribut est au choix mais doit préférablement être significatif. Les attributs ajoutés doivent obligatoirement avoir les valeurs du numéro de carte, prénom et nom de famille.
Exemple d'une configuration d'attribut complète. À gauche, le nom de l'attribut. À droite, la propriété de l'utilisateur dans Entra id:
8. Pour les établissement dont le numéro de carte Koha n'est pas le même que l'attribut dans Azure, il est possible de transformer l'attribut pour envoyer la valeur que l'on souhaite dans Koha à l'aide de RegexReplace(). Exemple:
Numéro de DA: 123456
Numéro de carte: A00307123456x
la valeur employeeid dans "Regex pattern" s'agit seulement d'une variable et doit être comprise dans le "Replacement pattern" entre accolades. Dans la plupart des cas, le modèle regex sera toujours (?'employeeid'^.*) puisqu'on veut récupérer la valeur au complet de cette propriété (dans cet exemple user.employeeid)
Il est possible de tester la transformation avant de l'ajouter
9. Sous utilisateurs et groupes, assigner les utilisateurs qui auront l'autorisation d'accéder à la plateforme SSO Koha
10. Se connecter à l'intranet, conserver la fenêtre Azure ouverte
Administration Koha > Paramètres divers > Fournisseurs d'identité
11. Créer un nouveau fournisseur d'identité :
Code: la valeur n'a pas d'importance
Description: Nom qui sera affiché au bouton de connexion dans l'OPAC / intranet
Protocole: OIDC
oAuth est également supporté mais ne sera pas utilisé dans cette procédure. Je n'ai pas réussi à le faire fonctionner
Configuration: Appuyer sur configuration OIDC par défaut et remplir les informations par les valeurs récupérés d'Azure plus tôt
Point de concordance: au choix du client, userid n'est pas recommandé
URL de l'icône: l'icône qui s'ajoutera au bouton de connexion OIDC, laisser vide
Domaine: le ou n'importe quel domaine qui aura la permission de se connecter OIDC, ajouter le domaine du tenant azure ou une étoile pour permettre tout le monde
Il sera possible plus tard d'ajouter d'autres domaines pour l'accès à l'opac et/ou l'intranet séparément
Bibliothèque par défaut: La bibliothèque où l'utilisateur sera assigné si la correspondance dans ses propriétés Azure est vide
Catégorie par défaut: La catégorie où l'utilisateur sera assigné si la correspondance dans ses propriétés Azure est vide
Permettre à l'OPAC: faire afficher le bouton SSO dans l'OPAC, il sera nécessaire de l'activer pour poursuivre
Permettre à l'intranet: faire afficher le bouton SSO dans l'intranet
Enregistrement automatique: enregistrer l'utilisateur automatiquement s'il n'existe pas dans Koha
Mettre à jour lors de la connexion: mettre à jour les informations dans Koha automatiquement s'ils les champs de correspondance sont aussi modifiés dans Azure
Exemple d'une configuration complète:
À cette étape, l'équipe d'infrastructure Koha doit être informé de redémarrer les services. Les modifications ne se font pas automatiquement
Le bouton de connexion devrait désormais apparaître dans l'OPAC
12. Faire un click droit sur le/les bouton de connexion SSO, copier l'adresse du lien et en prendre note
13. Retourner dans Entra id > enregistrement d'application
14. Sous Authentification, ajouter une nouvelle plateforme web
15. Ajouter l'URL copié du bouton de connexion OPAC dans l'url de redirection
16. Décocher les jetons d'accès et les ID de jetons s'ils sont activés et sauvegarder
Pour configurer SSO pour l'intranet, il est possible d'utiliser la même application Azure en copiant le Redirect URI à partir du bouton de connexion dans l'intranet. Il est aussi nécessaire d'ajouter l'url de l'instance Koha dans la préférence système staffClientBaseURL
Tester
Modification pouvant être apportées dans Koha
Instructions de connexion
Si des instructions de connexion se trouvent sous les boîtes de connexion, ces instructions sont habituellement placées dans la section OPACLoginInstructions, dans les personnalisations HTML. Cette section apparait sous la boîte de connexion :
Il est donc possible de modifier ces instructions en fonction de la nouvelle procédure de connexion avec le SSO. Pour ce faire, il faut accéder aux Outils, puis Outils supplémentaires et Personnalisations HTML.
Bouton de connexion SSO
Pour faire apparaitre le bouton de connexion pour l'authentification SSO sur l'interface professionnelle et l'OPAC, il faut que les paramètres suivant soient à Permettre :
Ces paramètres se retrouvent dans les configurations du fournisseur d'identité, pas dans les préférences système ! On les retrouve donc dans l'Administration, sous Paramètres divers et Fournisseurs d'identité.
Dans les fournisseurs d'identité, il faudra cliquer sur Gérer les domaines, puis sur Edit.
Le libellé du bouton de connexion va dépendre de ce qui est inscrit dans la description du fournisseur d'identité.
Boîte de connexion Identifiant / Mot de passe
Il se pourrait qu'avec la nouvelle méthode d'authentification SSO, vous n'ayez plus du tout besoin que la boîte de connexion traditionnelle dans Koha soit visible. Si l'ensemble de vos utilisateurs peuvent accéder à Koha par l'authentification SSO, vous pouvez alors cacher l'ancienne boîte de connexion. Pour ce faire, il faudra inscrire le code Javascript suivant dans la préférence système OpacUserJs :
//cacher login manuel
$("#auth div.local-login").hide();