Authentification SAMLv2 - Configuration
- Prérequis
- Récupération des clés en chaîne de caractères
- Surcharge des propriétés dans le fichier de sécurité
Prérequis
Dans ce document on appellera :
SP : Service Provider ou Fournisseur de services | IdP : Identity Provider ou Fournisseur d’identités |
Kpr(SP) : la clé privée du SP | Kpr(IdP) : la clé privée de l’IdP |
Kpb(SP) : la clé publique du SP | Kpb(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.
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) | Communication | Fé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 »
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 »
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-----
...