Project

General

Profile

Configurer ADFS comme fournisseur d'identités SAML pour Publik

On suppose dans ce qui suit qu'un système Publik est installé sur https://demarches.ville.fr/. Le système de connexion est alors présent sur https://connexion.demarches.ville.fr/ et c'est lui qui doit être référencé comme « Service Provider » dans ADFS.

Ajout du « Relying Party » dans ADFS

La configuration des services ADFS s’effectue via la console « AD FS Management ». Nous créons « relying party trust » à partir des informations présentes dans les metadonnées SAML 2.0 de Publik.

En cliquant sur « Add Relying Party Trust… » on sélectionne le type d’application souhaitée: Claim aware.

Nous allons à présent utiliser la fonction d’import automatique de la configuration Publik présente dans les metadonnées.

L'URL des métadonnées de Publik est de la forme https://connexion.demarches.ville.fr/accounts/saml/metadata/ (à indiquer dans la partie en jaune de la copie d'écran ci-dessous)

Saisir le nom du « Relying Party Trust: », indiquer par exemple connexion.demarches.ville.fr

On choisit ensuite qui aura accès à Publik via ADFS, cela dépend des choix de la collectivité, dans un premier temps choisir everyone (tout le monde) simplifie la configuration

Avant de valider la fin de la configuration, nous allons vérifier que le « Relying party identifier » et bien identique à « ApplicationDefaults EntityID » de Publik :

Nous laisserons la case « Configure claims issuance policy for this application » cochée. La fenêtre nous permettant d’éditer le contenu de notre claim s’ouvre.

Configuration des attributs à envoyer à Publik (claims)

Dans la liste des « Relying Party Trusts » s'affiche désormais celui de Publik qui vient d'être ajouté. Cliquer dessus et choisir l'action « Edit Claim Issuance Policy… »

Le bouton « Add Rules » permet alors de définir les attributs à envoyer.

Dans le cadre d'une connexion à Publik il faut envoyer les attributs suivants :

Attention : La copie d'écran ci-dessous est un exemple qui montre la configuration avec l'envoi de UPN et Display Name ; mais c'est Name, GivenName, Surname et EmailAddress qui devront apparaitre dans le cas d'un Publik.

Configuration côté Publik

La configuration du « Relying Party Trust ADFS » est alors présent terminée sur ADFS, qui reconnait désormais Publik comme service de confiance.

Il faut maintenant configurer Publik pour qu'il utiliser ADFS comme source d'identité possible (en plus des comptes locaux et du connexion FranceConnect éventuelle).

Cas AD "On premise" - hébergé par la collectivité

Pour cela, et si ce n'est pas déjà fait, il faut communiquer à Entr'ouvert l'adresse des métadonnées de l'IdP ADFS SAML, qui est normalement de la forme https://idp.ville.fr/FederationMetadata/2007-06/FederationMetadata.xml (où idp.ville.fr est le nom du serveur ADFS sur Internet).

A toutes fins utiles (surtout en interne pour Entr'ouvert), voici la procédure pour la configuration dans Publik.

1. Création de clés 2048 bits :

openssl req -x509 -sha256 -newkey rsa:2048 -nodes -keyout sp-saml.key -out sp-saml.crt -batch -subj '/CN=connexion.demarches.ville.fr' -days 3652

2. Copier les fichiers sp-saml.key et sp-saml.crt dans le répertoire du tenant /var/lib/authentic2-multitenant/tenants/connexion.demarches.ville.fr/
3. Créer un rôle "Connexion ADFS"
4. Obtenir l'URL des métadonnées, comme dit plus haut de la forme "https://idp.ville.fr/FederationMetadata/2007-06/FederationMetadata.xml" et la mettre dans settings.json (voir plus bas) pour la clé METADATA_URL
5. Ajouter dans settings.json :

{
  "A2_AUTH_SAML_ENABLE": true,
  "MELLON_PUBLIC_KEYS": ["/var/lib/authentic2-multitenant/tenants/connexion.demarches.ville.fr/sp-saml.crt"],
  "MELLON_PRIVATE_KEY": "/var/lib/authentic2-multitenant/tenants/connexion.demarches.ville.fr/sp-saml.key",
  "MELLON_PROVISION": true,
  "MELLON_IDENTITY_PROVIDERS": [
    {
      "METADATA_URL": "https://idp.ville.fr/FederationMetadata/2007-06/FederationMetadata.xml",
      "PROVISION": true,
      "A2_ATTRIBUTE_MAPPING": [
        {"action": "rename", "from": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "to": "givenname"},
        {"action": "rename", "from": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "to": "surname"},
        {"action": "rename", "from": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", "to": "name"},
        {"action": "rename", "from": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", "to": "email"},
        {"attribute": "first_name", "saml_attribute": "givenname", "mandatory": true},
        {"attribute": "last_name", "saml_attribute": "surname", "mandatory": true},
        {"attribute": "username", "saml_attribute": "name", "mandatory": true},
        {"attribute": "email", "saml_attribute": "email", "mandatory": true},
        {"action": "toggle-role", "role": {"name": "Connexion ADFS"}}
      ],
      "LOOKUP_BY_ATTRIBUTES": [
        {"saml_attribute": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", "user_field": "email"}
      ]
    }
  ]
}

Cas où l'IdP n'est pas accessible depuis Authentic

Dans ce cas les métadonnées ne pourront pas être téléchargées par authentic, on modifie donc les étape 4 et 5:

4. Demander les métadonnées de l'ADFS et les copier dans /var/lib/authentic2-multitenant/tenants/connexion.demarches.ville.fr/adfs-metadata.xml
5. Retirer la clé METADATA_URL de la configuration et mettre à la place "METADATA": "/var/lib/authentic2-multitenant/tenants/connexion.demarches.ville.fr/adfs-metadata.xml",

Cas Azure AD "SaaS" - hébergé par Microsoft

La configuration est quasiment la même mais on ne peut pas facilement deviner l'URL des métadonnées, car elle est unique pour chaque fournisseur de service et généralement de la forme suivante :

https://login.microsoftonline.com/180627ee-80c9-4bec-95e6-81b5fecd81ff/federationmetadata/2007-06/federationmetadata.xml?appid=9b9854e3-633c-4124-8040-fe07dd445195

Par contre elle est toujours accessible publiquement et donc la configuration via un fichier ne sera normalement jamais nécessaire. Il est important de passer par une URL car les clés pourraient être souvent mises à jour.

Also available in: PDF HTML TXT