Configurer une authentification par OpenId Connect
Centreon est compatible avec l'authentification OAuth 2.0/OpenId Connect.
Il est possible d'utiliser un fournisseur d'identité (IdP) tel que Microsoft Azure AD, Okta, Keycloak, LemonLDAP::NG ou tout autre IdP compatible avec le flux d'autorisation via un code (Authorization Code Grant).
Configurer l'authentification OpenID Connect
L'authentification se paramètre à la page Administration > Authentification > Configuration OpenId Connect.
Étape 1 : Activer l'authentification
Activez l'authentification OpenID Connect :
- Activer l'authentification OpenID Connect : active/désactive l'authentification OpenId Connect.
- Mode d'authentification : indique si l'authentification doit se faire uniquement par OpenId Connect ou en utilisant également l'authentification locale (Mixte). En mode mixte, des utilisateurs créés manuellement dans Centreon (et non identifiés par OpenID) pourront également se connecter.
Lors du paramétrage, il est recommandé d'activer le mode "mixte". Cela vous permettra de garder l'accès au compte local
admin
en cas de configuration erronée.
Étape 2 : Configurer les informations d'accès au fournisseur d'identité
Renseignez les informations du fournisseur d'identité :
- URL de base : définit l'URL de base du fournisseur d'identité pour les points d'entrée OpenId Connect (obligatoire).
- Point d'entrée d'autorisation : définit le point d'entrée d'autorisation, par exemple
/authorize
(obligatoire). - Point d'entrée de jeton : définit le point d'entrée du jeton, par exemple
/token
(obligatoire). - Identifiant client : définit l'ID client (obligatoire).
- Secret de client : définit le secret client (obligatoire).
- Portées : définit la portée du fournisseur d'identité, par exemple
openid
. Séparez différentes portées par des espaces.Selon le fournisseur d'identité, il est nécessaire de saisir plusieurs portées (scopes) afin de récupérer la valeur (claim) qui identifiera l'utilisateur. Ceci est indiqué dans la documentation de configuration du fournisseur.
- Valeur de la déclaration de connexion : définit quelle variable renvoyée par les points d'entrée
Point d'entrée de jeton d'introspection ou Point d'entrée d'information utilisateur doit être utilisée pour
authentifier l'utilisateur. Par exemple
sub
ouemail
. - Point d'entrée de fin de session : définit le point d'entrée de déconnexion, par exemple
/logout
.
Suivant votre fournisseur d'identité, définissez l'un ou l'autre des deux endpoints suivants :
- Point d'entrée de jeton d'introspection : définit le point d'entrée du jeton d'introspection, par exemple
/introspect
(obligatoire). - Point d'entrée d'information utilisateur : définit le point d'entrée des informations utilisateur, par exemple
/userinfo
.
Vous pouvez également configurer :
- Utiliser l'authentification basique pour l'authentification du point d'entrée de jeton : si cette option est activée, la
méthode
Authorization: Basic
sera utilisée. Activez cette option si votre fournisseur d'identité le demande. - Désactiver la vérification du pair : permet de désactiver la validation des pairs SSL. Le certificat du fournisseur d'identité ne sera pas vérifié : cette option ne doit être utilisée qu'à des fins de test.
Il est possible de définir une URL complète pour les points de entrée au cas où la base de l'URL est différente des autres.
Vous pouvez activer Enregistrer les authentifications via le menu Administration > Paramètres > Débogage pour comprendre les échecs d'authentification et améliorer votre configuration.
Étape 3 : Configurer les conditions d'authentification
-
Vous pouvez ajouter des adresses IP en liste blanche ou liste noire. Si vous laissez ces deux champs vides, toutes les adresses IP seront autorisées à accéder à l'interface Centreon.
- Adresses de clients de confiance : Si vous entrez des adresses IP dans ce champ, seules ces adresses IP seront autorisées à accéder à l'interface Centreon. Toutes les autres adresses IP seront bloquées. Séparez les adressses IP par des virgules.
- Adresses de clients sur liste noire : Ces adresses IP seront bloquées. Toutes les autres adresses IP seront autorisées.
-
Vous pouvez également définir des conditions selon lesquelles les utilisateurs seront autorisés à se connecter ou non, en fonction des données reçues par un point d'entrée particulier.
- Activer les conditions sur le fournisseur d'identité.
- Définissez quel attribut et quel point d'entrée seront utilisés pour valider les conditions.
- Pour l'option Définir les valeurs des conditions autorisées, définissez quelles valeurs renvoyées par ce point d'entrée seront autorisées. Si vous entrez plusieurs valeurs, toutes devront être remplies pour que la condition soit validée. Tous les utilisateurs qui tentent de se connecter avec une autre valeur ne pourront pas se connecter.
Dans l'exemple ci-dessous, la valeur de Chemin de l'attribut des conditions est status et la valeur de Définir les valeurs des conditions autorisées est activated. Si le point d'entrée Point d'entrée d'introspection vous donne la réponse suivante, l'utilisateur est autorisé à se connecter :
{
...
"name": "OpenId Connect OIDC",
"given_name": "OpenId Connect",
"family_name": "OIDC",
"preferred_username": "oidc",
"email": "oidc@localhost",
"email_verified": false,
...
"status": "activated"
}Actuellement, seules les valeurs de type chaîne de caractères peuvent être utilisées.
Étape 4 : Gérer la création d'utilisateurs
- Gestion automatique
- Gestion manuelle
Si vous activez l'import automatique des utilisateurs, les utilisateurs qui se connecteront à Centreon pour la première fois seront créés dans la configuration Centreon. (Activer l'option n'importe pas automatiquement tous les utilisateurs de votre infrastructure.)
- Activer l'importation automatique : active/désactive l'import automatique des utilisateurs. Si l'import automatique des utilisateurs est désactivé, vous devrez créer chaque utilisateur manuellement avant que celui-ci ne se connecte.
- Modèle de contact : sélectionnez un modèle de contact qui sera appliqué aux nouveaux utilisateurs importés. Cela permet notamment de gérer le paramétrage par défaut des notifications.
- Attribut de l'email : définit quelle variable renvoyée par les points d'entrée Point d'entrée de jeton d'introspection ou Point d'entrée d'information utilisateur doit être utilisée pour récupérer l'adresse email de l'utilisateur.
- Attribut du nom complet : définit quelle variable renvoyée par les points d'entrée Point d'entrée de jeton d'introspection ou Point d'entrée d'information utilisateur doit être utilisée pour récupérer le nom complet de l'utilisateur.
À la page Configuration > Utilisateurs > Contacts/Utilisateurs, créez les utilisateurs qui se connecteront à Centreon avec OpenID Connect.
Étape 5 : Gérer les autorisations
- Gestion automatique
- Gestion manuelle
Si vous activez l'option Activer la gestion automatique, les utilisateurs qui se connectent à Centreon se verront automatiquement accorder des droits, car ils seront liés à des groupes d'accès selon les règles que vous avez définies.
- Définissez quel attribut et quel point d'entrée seront utilisés pour récupérer des valeurs afin d'appliquer des relations avec des groupes d'accès.
- Appliquer uniquement le premier rôle: si plusieurs rôles sont trouvés pour un utilisateur spécifique dans les informations du fournisseur d'identité, alors seul le premier rôle sera appliqué. Si l'option est désactivée, tous les rôles seront appliqués.
- Faites correspondre un attribut extrait du fournisseur d'identité avec le groupe d'accès auquel vous souhaitez que l'utilisateur appartienne.
Par exemple, le Point d'entrée d'introspection vous donne la réponse suivante et l'option Appliquer uniquement le premier rôle est activée. Le Chemin de l'attribut de rôles sera realm_access.roles et l'option Définir la relation entre les rôles et les groupes d'accès ACL établira une relation entre la valeur centreon-editor et un groupe d'accès défini dans Centreon :
{
...
"realm_access": {
"roles": ["centreon-editor", "centreon-admin", "user"]
},
...
}
Lors de la récupération des attributs, Centreon va fusionner les attributs récupérés dans le JWT (JSON Web Token) avec ceux récupérés dans le point d'entrée sélectionné en donnant priorité aux attributs du JWT. Ainsi, si un attribut est disponible dans le JWT et dans le point d'entrée sélectionné, alors l'attribut retenu sera celui provenant du JWT.
À chaque connexion de l'utilisateur, la gestion des autorisations est réinitialisée pour prendre en compte toute nouvelle information en provenance du fournisseur d'identité.
Si vous désactivez l'option Activer la gestion automatique, vous devrez attribuer des droits à vos utilisateurs manuellement en liant ceux-ci à des groupes d'accès.
Étape 6 : Gérer les groupes de contacts
- Gestion automatique
- Gestion manuelle
Si vous activez l'option Activer la gestion automatique, les utilisateurs qui se connectent à Centreon seront rattachés aux groupes de contacts que vous avez définis.
- Définissez quel attribut et quel point d'entrée seront utilisés pour récupérer des valeurs afin de créer des relations avec des groupes d'accès.
- Faites correspondre les attributs extraits du fournisseur d'identité avec les groupes de contacts auxquels vous souhaitez que l'utilisateur appartienne.
Par exemple, le Point d'entrée d'introspection vous donne la réponse suivante. Le Chemin de l'attribut de groupes sera groups et l'option Définir la relation entre les groupes et les groupes de contact établira une relation entre la valeur Linux et un groupe de contacts défini dans Centreon :
{
...
"groups": ["Windows", "Linux", "DBA"],
...
}
Lors de la récupération des attributs, Centreon va fusionner les attributs récupérés dans le JWT (JSON Web Token) avec ceux récupérés dans le point d'entrée sélectionné en donnant priorité aux attributs du JWT. Ainsi, si un attribut est disponible dans le JWT et dans le point d'entrée sélectionné, alors l'attribut retenu sera celui provenant du JWT.
À chaque connexion de l'utilisateur, la gestion des groupes est réinitialisée pour prendre en compte toute nouvelle information en provenance du fournisseur d'identité.
Si vous désactivez l'otion Activer la gestion automatique, vous devrez gérer manuellement les relations entre contacts et groupes de contacts.
Étape 7 : Configurer le fournisseur d'identité
Configurez votre fournisseur d'identité pour ajouter l'application Centreon à utiliser le protocole OpenID Connect pour authentifier vos utilisateur, et pour autoriser l'uri de redirection suivante une fois vos utilisateurs authentifiés :
{protocol}://{server}:{port}/centreon/authentication/providers/configurations/openid
Remplacez
{protocol}
,{server}
et{port}
par l'URI permettant d'accéder à votre serveur Centreon. Par exemple :https://centreon.domain.net/centreon/authentication/providers/configurations/openid
Exemples de configuration
- Microsoft Azure AD
- Okta
- Keycloak
- LemonLDAP::NG
- Autres
Voici un exemple de configuration pour Microsoft Azure Active Directory:
Champs | Valeurs |
---|---|
Base Url | https://login.microsoftonline.com/${tenantId}/oauth2/v2.0 |
Authorization Endpoint | /authorize |
Token Endpoint | /token |
User Information Endpoint | https://graph.microsoft.com/oidc/userinfo |
End Session Endpoint | |
Scope | openid |
Login claim value | |
Client ID | {clientId} |
Client Secret | {clientSecret} |
Remplacez
${tenantId}
,${clientId}
et${clientSecret}
par vos propres valeurs.
Voici un exemple de configuration pour Okta:
Champs | Valeurs |
---|---|
Base Url | https://{theIdPdomain}/oauth2/v1 |
Authorization Endpoint | /authorize |
Token Endpoint | /token |
Introspection Token Endpoint | /introspect |
User Information Endpoint | /userinfo |
End Session Endpoint | /logout |
Scope | profile openid |
Login claim value | username |
Client ID | {clientId} |
Client Secret | {clientSecret} |
Remplacez
${theIdPdomain}
,${clientId}
et${clientSecret}
par vos propres valeurs.
Voici un exemple de configuration pour Keycloak:
Champs | Valeurs |
---|---|
Base Url | https://{theIdPdomain}:8080/auth/realms/master/protocol/openid-connect |
Authorization Endpoint | /auth |
Token Endpoint | /token |
Introspection Token Endpoint | /token/introspect |
User Information Endpoint | |
End Session Endpoint | /logout |
Scope | openid |
Login claim value | |
Client ID | {clientId} |
Client Secret | {clientSecret} |
Remplacez
${theIdPdomain}
,${clientId}
et${clientSecret}
par vos propres valeurs.
Voici un exemple de configuration pour LemonLDAP::NG:
Champs | Valeurs |
---|---|
Base Url | http://auth.example.com/oauth2 |
Authorization Endpoint | /authorize |
Token Endpoint | /token |
Introspection Token Endpoint | /introspect |
User Information Endpoint | /userinfo |
End Session Endpoint | |
Scope | openid |
Login claim value | |
Client ID | {clientId} |
Client Secret | {clientSecret} |
Remplacez
auth.example.com
,${clientId}
et${clientSecret}
par vos propres valeurs.
La plupart des fournisseurs de services ont une URL présentant la configuration des paramètres de configuration telle que définie par le protocole.
{
"issuer": "https://server.example.com",
"authorization_endpoint": "https://server.example.com/connect/authorize",
"token_endpoint": "https://server.example.com/connect/token",
"token_endpoint_auth_methods_supported": ["client_secret_basic", "private_key_jwt"],
"token_endpoint_auth_signing_alg_values_supported": ["RS256", "ES256"],
"userinfo_endpoint": "https://server.example.com/connect/userinfo",
"check_session_iframe": "https://server.example.com/connect/check_session",
"end_session_endpoint": "https://server.example.com/connect/end_session",
"jwks_uri": "https://server.example.com/jwks.json",
"registration_endpoint": "https://server.example.com/connect/register",
"scopes_supported": ["openid", "profile", "email", "address", "phone", "offline_access"],
"response_types_supported": ["code", "code id_token", "id_token", "token id_token"],
"acr_values_supported": ["urn:mace:incommon:iap:silver", "urn:mace:incommon:iap:bronze"],
"subject_types_supported": ["public", "pairwise"],
"userinfo_signing_alg_values_supported": ["RS256", "ES256", "HS256"],
"userinfo_encryption_alg_values_supported": ["RSA1_5", "A128KW"],
"userinfo_encryption_enc_values_supported": ["A128CBC-HS256", "A128GCM"],
"id_token_signing_alg_values_supported": ["RS256", "ES256", "HS256"],
"id_token_encryption_alg_values_supported": ["RSA1_5", "A128KW"],
"id_token_encryption_enc_values_supported": ["A128CBC-HS256", "A128GCM"],
"request_object_signing_alg_values_supported": ["none", "RS256", "ES256"],
"display_values_supported": ["page", "popup"],
"claim_types_supported": ["normal", "distributed"],
"claims_supported": ["sub", "iss", "auth_time", "acr",
"name", "given_name", "family_name", "nickname",
"profile", "picture", "website",
"email", "email_verified", "locale", "zoneinfo",
"http://example.info/claims/groups"
],
"claims_parameter_supported": true,
"service_documentation": "http://server.example.com/connect/service_documentation",
"ui_locales_supported": ["en-US", "en-GB", "en-CA", "fr-FR", "fr-CA"]
}
Récupérez les paramètres suivants pour configurer votre Centreon :
- issuer (Base Url)
- authorization_endpoint
- token_endpoint
- userinfo_endpoint
- end_session_endpoint
- scopes_supported
- claims_supported (Login claim value)