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 > OpenId Connect Configuration :
Ătape 1 : Activer l'authentificationâ
Activez l'authentification OpenID Connect :
- Enable OpenId Connect authentication : 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 érroné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). - ID de client : définit l'ID client.
- Secret de client : définit le secret client.
- 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. - Disable SSL verify peer : 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 Authentification debug via le menu Administration > Parameters > Debug pour comprendre les échecs d'authentification et améliorer votre configuration.
Ătape 3 : Configurer les adresses des clientsâ
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.
Ătape 4 : GĂ©rer la crĂ©ation des 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â
Attribuez des droits aux utilisateurs en les liant Ă des groupes d'accĂšs :
- Groupe de contacts : Sélectionnez un groupe de contacts auquel seront ajoutés automatiquement les utilisateurs lors de leur connexion à l'interface Centreon.
- ClĂ© d'autorisation : 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 la liste des groupes auxquels appartient l'utilisateur. Si ce paramĂštre n'est pas renseignĂ©, la valeur groups sera appliquĂ©e par dĂ©faut.
- Définissez ensuite des couples entre une Valeur d'autorisation et un groupe d'accÚs Centreon pour attribuer des droits à l'utilisateur lors de sa connexion à l'interface.
A chaque connexion de l'utilisateur, la gestion des autorisations est réinitialisée pour tenir compte des informations provenant du fournisseur d'identité.
Ătape 6 : Configurer le fournisseur d'identitĂ©â
Configurer 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)