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
Si vous activez l'enregistrement automatique et/ou la mise à jour lors de la connexion, il est important que les données importées dans Koha (souvent par fichiers XML ou CSV) et dans Azure concordent. Par exemple, si la concordance est sur le numéro de carte et que le courriel dans Koha est un courriel personnel alors que dans Azure c'est le courriel institutionnel, celui-ci sera changé à chaque import de fichier XML et à chaque connexion, ce qui créera de la confusion.
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
Il ne faut pas oublier que les éléments de connexion sont doublées dans l'OPAC. Il y a effectivement la possibilité de se connecter sur la page d'accueil :
Ou à partir de la fenêtre qui s'ouvre lorsqu'on clique sur Se connecter :
Le code Javascript pour atteindre la page d'accueil et le code pour attendre la fenêtre n'est pas le même. C'est pourquoi les modifications ci-dessous proposent toujours deux codes, un pour la page d'accueil et un pour la fenêtre, pour que toutes les informations soient les mêmes partout.
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 manuelle :
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.
Connexion SSO
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 > Paramètres divers > Fournisseurs d'identité. Il faut 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é et aura la forme Se connecter avec + Description, en prenant compte de la casse. Donc, dans l'exemple, la description est Connexion SSO et le bouton indique [Se connecter avec Connexion SSO].
Texte sous la boîte de connexion SSO
Par défaut, en faisant afficher le bouton de connexion SSO, par les paramètres précédemment mentionnés, le texte suivant s'affiche sous le bouton :
Ce texte peut être caché par le code Javascript suivant :
//cacher texte sous bouton de connexion SSO page d'accueil
$("#auth > fieldset > p:nth-child(4)").hide();
//cacher texte sous bouton de connexion SSO fenêtre Se connecter
$("#modalAuth > div > p:nth-child(3)").hide();
Il peut également être modifié avec le code suivant :
//Modifier texte sous bouton de connexion SSO page d'accueil
$("#auth > fieldset > p:nth-child(4)").text('TEXTE_DÉSIRÉ');
//Modifier texte sous bouton de connexion SSO fenêtre Se connecter
$("#modalAuth > div > p:nth-child(3)").text('TEXTE_DÉSIRÉ');
Les codes doivent être inscrits dans la Préférence OPACUserJS.
Boîte de connexion manuelle (Identifiant / Mot de passe)
Cacher entièrement le pavé de connexion manuelle
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 manuelle 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 utiliser le code Javascript suivant :
//cacher login manuel page d'accueil
$("#auth div.local-login").hide();
//cacher login manuel fenêtre Se connecter
$("div.modal-content div.local-login").hide();
Modifier le texte du bouton de connexion manuelle
Le bouton de connexion manuelle indique par défaut le texte "Se connecter".
Il est possible de modifier le texte pour le libellé voulu avec du code Javascript :
//Bouton se connecter sur la page d'accueil
$('#auth fieldset div.local-login fieldset input').text("TEXTE_DÉSIRÉ");
//Bouton se connecter fenêtre Se connecter
$('#modalAuth div fieldset div.local-login fieldset input').text("TEXTE_DÉSIRÉ");
Modifier la couleur du bouton de connexion Microsoft
Le code suivant doit être intégré à la préférence système OPACUserCSS
/*couleur bouton microsoft*/
#provider_Azure {
color: #FFF;
background-color: #0972D6;
}
L'élément doit être adapté en fonction du code source de la page. Dans le code ci-dessus, l'élément se nomme #provider_Azure.
La ligne "color" correspond à la couleur de la police et la ligne "background-color" correspond à la couleur de l'arrière-plan du bouton. Le code de couleur correspond à un code RBG et peut être changé pour la couleur désirée.