13 Configuration de SAML avec Okta
Cette section fournit des recommandations pour configurer Okta afin d’activer l’authentification SAML 2.0 et le provisionnement des utilisateurs pour Zabbix.
Configuration d'Okta
1. Accédez à https://developer.okta.com/signup/ et inscrivez-vous/connectez-vous à votre compte.
2. Dans l'interface web d'Okta, accédez à Applications → Applications.
3. Cliquez sur Create App Integration.

Sélectionnez "SAML 2.0" comme méthode de connexion, puis cliquez sur Next.
4. Dans les paramètres généraux, renseignez le nom de l'application, puis cliquez sur Next.
5. Dans la configuration SAML, saisissez les valeurs indiquées ci-dessous, puis cliquez sur Next.

-
Dans General, ajoutez :
- Single sign-on URL :
http://<your-zabbix-url>/zabbix/index_sso.php?acs
Notez l'utilisation de "http", et non de "https", afin que le paramètreacsne soit pas supprimé dans la requête. La case Use this for Recipient URL and Destination URL doit également être cochée. - Audience URI (SP Entity ID) :
zabbix
Notez que cette valeur sera utilisée dans l'assertion SAML comme identifiant unique du fournisseur de services (si elle ne correspond pas, l'opération sera rejetée). Il est possible de spécifier une URL ou toute chaîne de données dans ce champ. - Default RelayState :
Laissez ce champ vide ; si une redirection personnalisée est requise, elle peut être ajoutée dans Zabbix dans les paramètres Users > Users. - Renseignez les autres champs selon vos préférences.
- Single sign-on URL :
-
Dans Attribute Statements/Group Attribute Statements, ajoutez :

Ces déclarations d'attributs sont insérées dans les assertions SAML partagées avec Zabbix.
Les noms d'attribut utilisés ici sont des exemples arbitraires. Vous pouvez utiliser des noms d'attribut différents ; toutefois, il est nécessaire qu'ils correspondent à la valeur du champ respectif dans les paramètres SAML de Zabbix.
Si vous souhaitez configurer la connexion SAML à Zabbix sans provisionnement d'utilisateurs JIT, seul l'attribut d'adresse e-mail est requis.
Si vous prévoyez d'utiliser une connexion chiffrée, générez les certificats de chiffrement privé et public, puis téléversez le certificat public dans Okta. Le formulaire de téléversement du certificat apparaît lorsque Assertion Encryption est défini sur "Encrypted" (cliquez sur Show Advanced Settings pour trouver ce paramètre).
6. Dans l'onglet suivant, sélectionnez "I'm a software vendor. I'd like to integrate my app with Okta", puis cliquez sur Finish.
7. Accédez à l'onglet "Assignments" de l'application nouvellement créée et cliquez sur le bouton Assign, puis sélectionnez "Assign to People" dans la liste déroulante.

8. Dans la fenêtre contextuelle qui s'affiche, assignez l'application aux personnes qui utiliseront SAML 2.0 pour s'authentifier dans Zabbix, puis cliquez sur Save and go back.
9. Téléchargez le certificat IdP. Définissez les permissions 644 en exécutant :
chmod 644 idp.crt
10. Accédez à l'onglet "Sign On" et cliquez sur le bouton View Setup Instructions.
Les instructions de configuration s'ouvriront dans un nouvel onglet ; laissez cet onglet ouvert pendant la configuration de Zabbix.
Configuration de Zabbix
1. Dans Zabbix, accédez aux paramètres SAML et renseignez les options de configuration en vous basant sur les instructions de configuration d’Okta :

| Champ Zabbix | Champ de configuration dans Okta | Valeur d’exemple |
|---|---|---|
| ID d’entité IdP | Émetteur du fournisseur d’identité | |
| URL du service SSO | URL de connexion unique du fournisseur d’identité | |
| Attribut du nom d’utilisateur | Nom de l’attribut | usrEmail |
| ID d’entité SP | URI d’audience | zabbix |
| Attribut du nom du groupe | Nom de l’attribut | groups |
| Attribut du prénom de l’utilisateur | Nom de l’attribut | user_name |
| Attribut du nom de famille de l’utilisateur | Nom de l’attribut | user_lastname |
Il est également nécessaire de configurer le mappage des groupes d’utilisateurs et des médias.
2. Ajoutez le certificat Base64 fourni dans les instructions de configuration SAML d’Okta.
Si $SSO['CERT_STORAGE'] = 'database' est défini dans zabbix.conf.php, vous pouvez coller le texte du certificat ou téléverser le fichier du certificat dans l’interface web pendant la configuration SAML — aucun fichier n’est requis sur le système de fichiers.
Si $SSO['CERT_STORAGE'] = 'file' est défini dans zabbix.conf.php, le certificat doit être disponible sur le système de fichiers (par défaut dans ui/conf/certs ou dans le chemin configuré dans zabbix.conf.php) et l’interface web ne stockera pas les certificats dans la base de données.
Notez que si $SSO['CERT_STORAGE'] n’est pas défini ou est commenté, le stockage dans des fichiers est supposé et les certificats sont lus depuis ui/conf/certs.
3. Si Assertion Encryption a été défini sur "Encrypted" dans Okta, la case "Assertions" du paramètre Encrypt doit également être cochée dans Zabbix.
4. Cliquez sur le bouton Update pour enregistrer ces paramètres.
Provisionnement SCIM
1. Pour activer le provisionnement SCIM, accédez à « General » -> « App Settings » de l’application dans Okta.
Cochez la case Enable SCIM provisioning. Par conséquent, un nouvel onglet Provisioning apparaît.
2. Accédez à l’onglet « Provisioning » pour configurer une connexion SCIM :
- Dans SCIM connector base URL, indiquez le chemin vers le frontend Zabbix et ajoutez-y
api_scim.php, par exemple :
https://<your-zabbix-url>/zabbix/api_scim.php - Unique identifier field for users :
email - Authentication mode :
HTTP header - Dans Authorization, saisissez un jeton d’API valide avec les droits Super admin

Si vous rencontrez des problèmes d’authentification, consultez Authorization header forwarding.
3. Cliquez sur Test Connector Configuration pour tester la connexion. Si tout est correct, un message de réussite s’affichera.
4. Dans « Provisioning » -> « To App », assurez-vous de cocher les cases suivantes :
- Create Users
- Update User Attributes
- Deactivate Users
Cela garantit que ces types de requêtes seront envoyés à Zabbix.
5. Assurez-vous que tous les attributs définis dans SAML sont également définis dans SCIM. Vous pouvez accéder à l’éditeur de profil de votre application dans « Provisioning » -> « To App », en cliquant sur Go to Profile Editor.
Cliquez sur Add Attribute.
Renseignez les valeurs de Display name, Variable name et External name avec le nom de l’attribut SAML, par exemple user_name.

External namespace doit être identique au schéma utilisateur : urn:ietf:params:scim:schemas:core:2.0:User
6. Accédez à « Provisioning » -> « To App » -> « Attribute Mappings » de votre application. Cliquez sur Show Unmapped Attributes en bas de la page. Les attributs nouvellement ajoutés apparaissent.
7. Mappez chaque attribut ajouté.

8. Ajoutez des utilisateurs dans l’onglet « Assignments ». Les utilisateurs doivent d’abord être ajoutés dans Directory -> People. Toutes ces affectations seront envoyées sous forme de requêtes à Zabbix.
9. Ajoutez des groupes dans l’onglet « Push Groups ». Le modèle de mappage des groupes d’utilisateurs dans les paramètres SAML de Zabbix doit correspondre à un groupe spécifié ici. S’il n’y a aucune correspondance, l’utilisateur ne peut pas être créé dans Zabbix.
Les informations sur les membres des groupes sont envoyées à chaque modification.