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

Afficher les derniers auteurs
1 {{ddtoc/}}
2
3 = Prérequis =
4
5
6 Dans ce document on appellera :
7
8 |SP : Service Provider ou Fournisseur de services|IdP : Identity Provider ou Fournisseur d’identités
9 | |
10 |Kpr(SP) : la clé privée du SP|Kpr(IdP) : la clé privée de l’IdP
11 |Kpb(SP) : la clé publique du SP|Kpb(IdP) : la clé publique de l’IdP
12
13 ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
14
15
16
17 Avoir à disposition les éléments suivants :
18
19 * la clé privée du SP
20 * la clé publique du SP
21 * la clé publique de l’IdP
22 * 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.
23
24 (% class="box warningmessage" %)
25 (((
26 **Important **:
27 //Si il est prévu que les deux parties (SP et IdP) signent leurs données,
28 - 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).
29 - 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.//
30 )))
31
32 == Principes ==
33
34 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 :
35
36
37
38 |Fournisseur de Services
39 (Service Provider SP)|Communication|Fédérateur d’identités
40 (Identity Provider IdP)
41 |Chiffre les données avec Kpb(IdP)|(% rowspan="2" %)(((
42 **>**
43
44 Le SP envoie la requête d’authentification cryptée et/ou signée à l’IdP
45 )))|Déchiffre les données avec Kpr(IdP)
46 |Signe les données avec Kpr(SP)|Valide signature avec Kpb(SP)
47 | | |
48 |Déchiffre les données avec Kpr(SP)|(% rowspan="2" %)(((
49 **<**
50
51 L’IdP envoie la réponse SAMLv2 chiffrée et/ou signée au SP
52 )))|Chiffre les données avec Kpb(SP)
53 |Valide signature avec Kpb(IdP)|Signe les données avec Kpr(IdP)
54
55 __Principe : chiffrage et signature des données échangées entre le SP et l’IdP__
56
57
58 Le SP doit donc avoir connaissance de
59
60 - la clé privée du SP
61
62 - la clé publique du SP
63
64 - la clé publique de l’IdP
65
66
67 == Formatage des clés privées ==
68
69 Onelogin requiert le format PKCS#8 pour les clés privées (le contenu de la clé doit débuter par « BEGIN PRIVATE KEY »).
70
71 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 :
72
73 openssl pkcs8 -topk8 -inform pem -nocrypt -in sp.rsa_key -outform pem -out sp.pem
74
75
76 = Récupération des clés en chaîne de caractères =
77
78 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.
79
80 == Clé publique ==
81
82 On pourra utiliser l’outil disponible via le lien suivant pour récupérer la chaîne de caractère correspondant à une clé **publique **:
83
84 [[https:~~/~~/developers.onelogin.com/saml/online-tools/x509-certs/format-x509-certificate>>url:https://developers.onelogin.com/saml/online-tools/x509-certs/format-x509-certificate]]
85
86 On veut récupérer la clé publique sous la forme suivante (**AVEC en-têtes et SANS retour chariot**) :
87
88 ~-~-~-~--BEGIN CERTIFICATE~-~-~-~--XXXXXXX~-~-~-~--END CERTIFICATE~-~-~-~--
89
90 avec XXXXXXX le contenu de la partie « X.509 cert in string format »
91
92 [[image:1592386898235-169.png||queryString="width=467&height=531" height="531" width="467"]]
93
94 __Outil en ligne Onelogin : formatage d’un certificat x509 contenant une clé publique__
95
96
97 == Clé privée ==
98
99 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**:
100
101 [[https:~~/~~/developers.onelogin.com/saml/online-tools/x509-certs/format-private-key>>url:https://developers.onelogin.com/saml/online-tools/x509-certs/format-private-key]]
102
103 On veut récupérer la clé privée sous la forme suivante (**AVEC en-têtes et SANS retour chariot**) :
104
105 ~-~-~-~--BEGIN PRIVATE KEY~-~-~-~--YYYYYYY~-~-~-~--END PRIVATE KEY~-~-~-~--
106
107 avec YYYYYYY le contenu de la partie « Private Key in string format »
108
109 [[image:1592386741842-227.png||queryString="width=504&height=591" height="591" width="504"]]
110
111 __Outil en ligne Onelogin : formatage d’une clé privée__
112
113 = Surcharge des propriétés dans le fichier de sécurité =
114
115
116 Dans le fichier de sécurité SAMLv2 (.properties) rajouter les propriétés suivantes :
117
118 onelogin.saml2.sp.x509cert : le certificat contenant la clé publique du SP
119
120 onelogin.saml2.sp.privatekey : la clé privée du SP
121
122 onelogin.saml2.idp.x509cert : le certificat contenant la clé publique de l’IdP
123
124 __Extrait du fichier de sécurité SAMLv2 surchargeant les propriétés concernant les clés publiques/privées__
125
126 (((
127 {{code language="properties"}}
128 ...
129
130 # Service Provider Data that DigDash deploys
131
132 onelogin.saml2.sp.x509cert = -----BEGIN CERTIFICATE-----XXXXXXX-----END CERTIFICATE-----
133 onelogin.saml2.sp.privatekey = -----BEGIN PRIVATE KEY-----YYYYYYY-----END PRIVATE KEY-----
134
135
136 # Identity Provider Data used to connect with DigDash (SP)
137
138 onelogin.saml2.idp.x509cert = -----BEGIN CERTIFICATE-----ZZZZZZZ-----END CERTIFICATE-----
139
140 ...
141 {{/code}}
142
143
144 )))