Authentification SAMLv2 - Configuration

Modifié par jhurst le 2024/04/02 14:26

Prérequis

Dans ce document on appellera :

SP : Service Provider ou Fournisseur de servicesIdP : Identity Provider ou Fournisseur d’identités
  
Kpr(SP) : la clé privée du SPKpr(IdP) : la clé privée de l’IdP
Kpb(SP) : la clé publique du SPKpb(IdP) : la clé publique de l’IdP

----------------------

Avoir à disposition les éléments suivants :

  • la clé privée du SP
  • la clé publique du SP
  • la clé publique de l’IdP
  • OpenSSL : un outil permettant de manipuler les objets servant à des connexions sécurisées (certificats x509, signatures, chiffrements, etc.). Il permet notamment le formatage de certificats.

Important :
Si il est prévu que les deux parties (SP et IdP) signent leurs données,
- Il faudra notamment faire attention à ce que les certificats avec les clés publiques échangés soient certifiés par une autorité de certification (CA-signed certificate).
- Dans le cas de certificats auto-signés, il faudra vérifier si ces derniers sont supportés par l’une et par l’autre des parties.

Principes

Les acteurs et les outils nécessaires pour la mise en place d’une communication sécurisée SAMLv2 (chiffrée et/ou signée) peut se résumer comme suit :

Fournisseur de Services
 (Service Provider SP)
CommunicationFédérateur d’identités
 (Identity Provider IdP)
Chiffre les données avec Kpb(IdP)

>

Le SP envoie la requête d’authentification cryptée et/ou signée à l’IdP

Déchiffre les données avec Kpr(IdP)
Signe les données avec Kpr(SP)Valide signature avec Kpb(SP)
   
Déchiffre les données avec Kpr(SP)

<

L’IdP envoie la réponse SAMLv2 chiffrée et/ou signée au SP

Chiffre les données avec Kpb(SP)
Valide signature avec Kpb(IdP)Signe les données avec Kpr(IdP)

Principe : chiffrage et signature des données échangées entre le SP et l’IdP

Le SP doit donc avoir connaissance de

- la clé privée du SP

- la clé publique du SP

- la clé publique de l’IdP

Formatage des clés privées

Onelogin requiert le format PKCS#8 pour les clés privées (le contenu de la clé doit débuter par « BEGIN PRIVATE KEY »).

Si jamais vous avez en possession une clé privée au format PKCS#1 (le contenu de la clé débute par « BEGIN RSA PRIVATE KEY »), formater celle-ci en générant une nouvelle clé privée au bon format via la commande :

openssl pkcs8 -topk8 -inform pem -nocrypt -in sp.rsa_key -outform pem -out sp.pem

Récupération des clés en chaîne de caractères

Onelogin met à disposition des outils en ligne pour récupérer les clés sous forme de chaîne de caractères sans perdre le format.

Clé publique

On pourra utiliser l’outil disponible via le lien suivant pour récupérer la chaîne de caractère correspondant à une clé publique :

https://developers.onelogin.com/saml/online-tools/x509-certs/format-x509-certificate

On veut récupérer la clé publique sous la forme suivante (AVEC en-têtes et SANS retour chariot) :

-----BEGIN CERTIFICATE-----XXXXXXX-----END CERTIFICATE-----

avec XXXXXXX le contenu de la partie « X.509 cert in string format »

1592386898235-169.png

Outil en ligne Onelogin : formatage d’un certificat x509 contenant une clé publique

Clé privée

On pourra utiliser l’outil disponible via le lien suivant pour récupérer la chaîne de caractère correspondant à une clé privée:

https://developers.onelogin.com/saml/online-tools/x509-certs/format-private-key

On veut récupérer la clé privée sous la forme suivante (AVEC en-têtes et SANS retour chariot) :

-----BEGIN PRIVATE KEY-----YYYYYYY-----END PRIVATE KEY-----

avec YYYYYYY le contenu de la partie « Private Key in string format »

1592386741842-227.png

Outil en ligne Onelogin : formatage d’une clé privée

Surcharge des propriétés dans le fichier de sécurité

Dans le fichier de sécurité SAMLv2 (.properties) rajouter les propriétés suivantes :

onelogin.saml2.sp.x509cert : le certificat contenant la clé publique du SP

onelogin.saml2.sp.privatekey : la clé privée du SP

onelogin.saml2.idp.x509cert : le certificat contenant la clé publique de l’IdP

Extrait du fichier de sécurité SAMLv2 surchargeant les propriétés concernant les clés publiques/privées

...

# Service Provider Data that DigDash deploys

onelogin.saml2.sp.x509cert = -----BEGIN CERTIFICATE-----XXXXXXX-----END CERTIFICATE-----
onelogin.saml2.sp.privatekey = -----BEGIN PRIVATE KEY-----YYYYYYY-----END PRIVATE KEY-----


# Identity Provider Data used to connect with DigDash (SP)

onelogin.saml2.idp.x509cert = -----BEGIN CERTIFICATE-----ZZZZZZZ-----END CERTIFICATE-----

...