Skip to main content
Version: Next

Authentification SAML / SSO (ADFS, Azure AD)

Introduction

Ce document vous guide dans la mise en place de l’activation du protocole SAML V2 pour l’authentification avec un référentiel compatible (Serveur ADFS, AzureAD etc…).

Domaines d’application

La mise en place de cette fonctionnalité à partir de la version v23.0 de la solution Avanteam.

Définitions

SAML : Security Assertion Markup Language (SAML) est un standard informatique définissant un protocole pour échanger des informations liées à la sécurité. Basé sur le langage XML, SAML a été développé par OASIS. SAML propose l'authentification unique (en anglais single sign-on ou* SSO*) sur le web. ADFS : Active Directory Federation Services est un composant de Windows Server pouvant être installé sur les serveurs Windows afin de faciliter l'accès aux utilisateurs, aux systèmes et applications. IDP : ID provider - Un fournisseur d'identité est une entité système qui crée, conserve et gère les informations d'identité des utilisateurs et fournit également des services d'authentification aux applications de confiance au sein d'une fédération ou d'un réseau distribué. ADFS ou AzureAD sont des IDP. SP : Service Provider - Fournisseur de service. L’application web Avanteam est un service provider. Claim : Revendication en français. Un claim est une paire clé valeur qui contient des informations sur un utilisateur ou une entité. Par exemple, un claim pourrait indiquer l'identité de l'utilisateur, ses rôles, ou d'autres attributs pertinents. Elles jouent un rôle crucial dans les mécanismes d'authentification modernes en fournissant des informations sur l'utilisateur et en facilitant la gestion des sessions et des autorisations.

Configuration

Préambule

Le fichier saml-config.json est situé dans le dossier ./PStudio.Configuration de votre application. Ce fichier reprend les informations remplies lors de l’installation de l’application. Il n’est pas nécessaire d’y toucher.

Ajout de la page de configuration

Aller dans Process Studio et ajouter la page de gestion des IDP.

  • Ouvrir la liste des navigateurs depuis le menu "Navigateurs" et ouvrez le navigateur utilisé pour les actions d'administration.
  • Ajouter une vue dans l'entête de navigateur désiré.
  • Pour cette entrée, passez en mode avancé.
  • Dans le champ Action, spécifiez la valeur OpenPage("Security/SAML/ImportMetadata.aspx", "Gérer les IdPs").
  • Dans le champ Titre, spécifiez la valeur "Gérer les IdPs".

Une nouvelle entrée de gestions des IdP est maintenant disponible sur l'interface utilisateur web.

Echange metadata

Afin d’enregistrer notre application dans l’IDP du client, il faut lui fournir les metadata de notre application. Pour se faire, fournir au client l’URL https://url.mon.application/SAML/Metadata. Le client devra fournir en retour l’URL de metadata de leur IdP. OU Si l’IdP et notre application ne peuvent pas dialoguer directement sur le réseau, alors il faudra échanger les metadata par fichier. Pour se faire, naviguez sur l’URL de metadata et enregistrer le résultat sous forme de fichier puis fournissez au client le fichier.

Déclaration l’IdP

Côté client

Pour fédérer l’IdP avec notre application (SP), il faut que la configuration côté client soit faite ; il est donc du devoir du responsable du système d'information du client de réaliser les actions nécessaires pour assurer la bonne configuration.

Côté application Avanteam

  • Se connecter à l’application web Avanteam.
  • Se rendre sur la page configuration configurée dans l'une des étapes précédente dans Process Studio.
  • Cliquer sur « + » pour ajouter un IdP.
  • Remplir les champs ci-dessous :
    • Nom : nom qui va apparaitre sur le bouton de la page de connexion pour permettre à l'utilisateur de se connecter en passant par l'IdP.
    • EntityID : c’est l’identifiant de l’IdP.
      • soit copier l’URL de metadata.
      • soit renseigner la valeur de l’attribut EntityID qui se trouve au début du fichier de metadata.
    • URL de Metadata :
      • soit remettre l'URL de metadata si on en a une.
      • soit laisser vide.
    • Configuration : ce champ doit rester vide lors de la déclaration de l’IdP. Il se remplira automatiquement lors de la première tentative de connexion, et pourra ensuite être personnalisé si besoin (voir la section Annexes).
    • Metadata :
      • soit laisser vide si on a une URL de metadata.
      • soit copier manuellement dedans le contenu du fichier de metadata.
    • IDP Username Attribute : le nom de la revendication (claim) paramétré côté IdP qui contient la donnée que l’on souhaite utiliser pour identifier l’utilisateur. Laisser vide si l’on souhaite utiliser l’identifiant technique de l’utilisateur dans l’IdP.
    • Avanteam Username Attribute : C’est le champ avec lequel on va comparer la valeur lue dans IDP Username Attribute. Il s’agit généralement du DN, de l'email ou de l'autre identifiant.
    • Conf valide jusqu’au : il s'agit de la date à partir de laquelle on va tenter de rafraichir automatiquement les metadata de l’IdP (n’est utilisé seulement si on a l’URL de metadata). Doit rester vide lors de la déclaration de l’IdP.
  • Une fois validé, le bouton de connexion via l’IdP apparait sur la page de connexion.

Annexes

Mapping

Des erreurs peuvent s’afficher lors de l’authentification si les champs suivants dans l’écran de gestion de l'IdP ne correspondent pas avec ceux configurés dans l’IdP du client. Il faudra bien vérifier les champs suivants :

  • IDP Username Attribute
  • Avanteam Username Attribute

Désactivation des authentifications par formulaire

Par défaut, l’authentification à notre application est en mode mixte, c’est-à-dire par formulaire et en SSO. Pour désactiver l'authentification mixte : il faut modifier une clé du fichier de configuration présente dans le fichier programs.ini :

Authentication.Form.Enabled=false

Par défaut, cette clé a la valeur true.

Personnalisation de la configuration

Une fois que la configuration est générée (c’est-à-dire après une première tentative de connexion), il est possible de personnaliser celle-ci via l’ajout d’attributs dans la balise <PartnerIdentityProvider> du champ "Configuration" dans la page de gestion des IdP.

Comment mettre un attribut

  • Dans le champ Configuration, ajouter une ligne dans la balise PartnerIdentityProvider.
  • Insérer le nom et la valeur de l’attribut.

Liste des attributs les plus utilisés

AttributValeurDescription
DisableOutboundLogouttrue / falseDésactive la déconnexion de l'IdP. Quand on clique sur le bouton de déconnexion de l’application, on se déconnecte uniquement de l’application mais pas de l'IdP.
SignAuthnRequesttrue / falseImpose de signer les requêtes d’authentification même si l’IdP ne déclare pas cela comme requis. Certains serveurs IdP peuvent dysfonctionner lors de l’authentification car ils le requièrent mais ne le déclarent pas.
SignLogoutRequesttrue / falseImpose de signer les requêtes de déconnexion même si l'IdP ne déclare pas cela comme requis. Certains serveurs IdP peuvent dysfonctionner lors de la déconnexion car ils le requièrent mais ne le déclarent pas.
DisableRecipientChecktrue / falseDésactive certaines vérifications qui empêchent des rebonds. Nécessaire sur une version v23 si l’IdP a été configuré avec les URL de services issus d'une version v21. Il reste préférable de reconfigurer l’IdP avec les nouvelles URL lors d’une migration vers une version v23.
DisableDestinationChecktrue / falseDésactive certaines vérifications sur la concordance des URL.
DisableInResponseToChecktrue / falseDésactive certaines vérifications sur la concordance des URL.
Liste officielle des attributs supportés

Pour avoir une liste complète des attributs possibles, se référer à la documentation de ComponentSpace concernant les propriétés de la classe PartnerIdentityProviderConfiguration.

Forcer le rafraichissement du certificat d’IdP

Dans l’écran de gestion des IdP, mettre une date dans le passé dans le champ "Conf valide jusqu’au" pour forcer le rafraichissement des métadata et certificats, lors de la prochaine tentative d’authentification SSO.

Fichier de configuration

Si le fichier saml-config.json n’est pas prérempli avec les informations lors de l’installation de Avanteam Process Suite (dû à la migration d’une version antérieure à la v23.3 et du module SAML non utilisé), alors il faut le configurer à la main.

{
"SAML": {
"$schema": "https://www.componentspace.com/schemas/saml-config-schema-v1.0.json",
"Configurations": [
{
"LocalServiceProviderConfiguration": {
"Name": "https://avanteam",
"Description": "Avanteam Service Provider",
"AssertionConsumerServiceUrl": "http://localhost:44444/SAML/AssertionConsumerService",
"SingleLogoutServiceUrl": "http://localhost:44444/SAML/SingleLogoutService",
"LocalCertificates": [
{
"String": "MIIKEA...",
"Password": "**********"
}
]
}
}
]
}
}

Voici les modifications à apporter au fichier :

  • Name : il permet d’identifier l’application au sein du référentiel client. Il est recommandé de mettre l'URL du site applicatif. Exemple : https://url.mon.application/.
  • AssertionConsumerServiceUrl : modifier l’entrée en mettant l'URL complète. Exemple : https://url.mon.application/SAML/AssertionConsumerService.
  • SingleLogoutServiceUrl : modifier l’entrée en mettant l'URL complète. Exemple : https://url.mon.application/SAML/SingleLogoutService.
  • Password : vérifier que sa valeur est password.
Configuration des URL

Pour les attributs AssertionConsumerServiceUrl et SingleLogoutServiceUrl il est important de ne pas inclure dans l'URL la partie spécifiant le nom de l'application, par exemple /APP/.