{"id":1311,"date":"2026-11-10T10:00:00","date_gmt":"2026-11-10T09:00:00","guid":{"rendered":"https:\/\/remivernier.com\/?p=1311"},"modified":"2026-11-10T10:00:00","modified_gmt":"2026-11-10T09:00:00","slug":"golden-saml-forger-assertion-cle-adfs","status":"publish","type":"post","link":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/","title":{"rendered":"Golden SAML: forger une assertion avec la cl\u00e9 ADFS"},"content":{"rendered":"<p>Le correctif de juillet 2026 pour AD FS, r\u00e9f\u00e9renc\u00e9 <a href=\"https:\/\/support.microsoft.com\/en-us\/servicing\/os\/windows\/docs\/2026\/07\/kb5121391-cve-2026-56155-ad-fs-dkm-container-acl-hardening\">CVE-2026-56155<\/a>, durcit les ACL du conteneur DKM dans l&rsquo;Active Directory. Ce correctif remet au premier plan un vieux sujet: la cl\u00e9 de signature des jetons ADFS. Cette cl\u00e9 est le secret qui fait tout tenir en f\u00e9d\u00e9ration, et celui qui la d\u00e9tient peut se faire passer pour n&rsquo;importe qui aupr\u00e8s des applications qui font confiance \u00e0 ADFS. L&rsquo;attaque qui exploite ce secret porte un nom depuis 2017, quand les chercheurs de CyberArk l&rsquo;ont d\u00e9crite: le Golden SAML.<\/p>\n<p>Nous allons voir pourquoi un service provider accepte une assertion d\u00e8s lors qu&rsquo;elle est sign\u00e9e avec la bonne cl\u00e9, o\u00f9 cette cl\u00e9 est r\u00e9ellement stock\u00e9e et comment elle est prot\u00e9g\u00e9e, puis ce qu&rsquo;un attaquant en fait et comment nous pouvons limiter cette confiance.<\/p>\n<h2>Pourquoi le SP fait confiance \u00e0 une signature<\/h2>\n<p>Dans une f\u00e9d\u00e9ration SAML 2.0, le service provider (SP) ne v\u00e9rifie pas le mot de passe de l&rsquo;utilisateur et n&rsquo;interroge pas l&rsquo;annuaire. Il re\u00e7oit une assertion \u00e9mise par l&rsquo;Identity Provider (IdP), ici ADFS, et il la valide avec la cl\u00e9 publique de l&rsquo;IdP qu&rsquo;il conna\u00eet d&rsquo;avance via les m\u00e9tadonn\u00e9es. Toute la relation de confiance repose sur un point unique: la signature XML de l&rsquo;assertion. Si elle est valide au regard du certificat de signature de jetons (Token-Signing) et que les conditions temporelles et d&rsquo;audience sont respect\u00e9es, le SP cr\u00e9e une session. Il ne peut pas savoir si l&rsquo;utilisateur s&rsquo;est r\u00e9ellement authentifi\u00e9 devant ADFS.<\/p>\n<p>C&rsquo;est cette asym\u00e9trie qu&rsquo;il faut comprendre. Le SP v\u00e9rifie <em>qui a sign\u00e9<\/em>, pas <em>comment l&rsquo;utilisateur a \u00e9t\u00e9 authentifi\u00e9<\/em>. Si quelqu&rsquo;un d\u00e9tient la cl\u00e9 priv\u00e9e du certificat de signature, il produit une assertion qui est indiscernable d&rsquo;une assertion l\u00e9gitime. Il n&rsquo;a besoin ni du mot de passe de la victime, ni de la MFA, ni m\u00eame d&rsquo;un \u00e9change avec ADFS. Nous avions compar\u00e9 ces flux dans l&rsquo;article sur <a href=\"https:\/\/remivernier.com\/index.php\/2026\/10\/28\/oauth-openid-connect-saml-ws-federation-comparaison\/\">OAuth 2.0, OpenID Connect, SAML et WS-Federation<\/a>; ici c&rsquo;est le lien de confiance SAML qui est attaqu\u00e9 \u00e0 sa racine.<\/p>\n<p>Une assertion ADFS typique contient le NameID, une condition d&rsquo;audience qui d\u00e9signe le SP, une fen\u00eatre de validit\u00e9 (<code>NotBefore<\/code> \/ <code>NotOnOrAfter<\/code>), un <code>AuthnStatement<\/code> et les attributs (claims) attendus par l&rsquo;application. Rien dans cette structure ne prouve une authentification r\u00e9elle: ce sont des affirmations sign\u00e9es. L&rsquo;objet sign\u00e9, c&rsquo;est le XML lui m\u00eame.<\/p>\n<figure class=\"wp-block-image\">\n<svg viewBox=\"0 0 720 300\" width=\"100%\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" font-family=\"sans-serif\" font-size=\"13\">\n<defs>\n<marker id=\"ar\" markerWidth=\"9\" markerHeight=\"9\" refX=\"7\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L7,3 L0,6 z\" fill=\"#333\"\/><\/marker>\n<\/defs>\n<rect x=\"20\" y=\"40\" width=\"150\" height=\"60\" rx=\"6\" fill=\"#e8f0fe\" stroke=\"#333\"\/>\n<text x=\"95\" y=\"66\" text-anchor=\"middle\">Attaquant<\/text>\n<text x=\"95\" y=\"84\" text-anchor=\"middle\" font-size=\"11\">(d\u00e9tient la cl\u00e9)<\/text>\n<rect x=\"285\" y=\"40\" width=\"150\" height=\"60\" rx=\"6\" fill=\"#fdf3e1\" stroke=\"#333\"\/>\n<text x=\"360\" y=\"66\" text-anchor=\"middle\">Assertion SAML<\/text>\n<text x=\"360\" y=\"84\" text-anchor=\"middle\" font-size=\"11\">forg\u00e9e + sign\u00e9e<\/text>\n<rect x=\"550\" y=\"40\" width=\"150\" height=\"60\" rx=\"6\" fill=\"#e6f4ea\" stroke=\"#333\"\/>\n<text x=\"625\" y=\"66\" text-anchor=\"middle\">Service provider<\/text>\n<text x=\"625\" y=\"84\" text-anchor=\"middle\" font-size=\"11\">(Shibboleth SP)<\/text>\n<line x1=\"170\" y1=\"70\" x2=\"283\" y2=\"70\" stroke=\"#333\" marker-end=\"url(#ar)\"\/>\n<line x1=\"435\" y1=\"70\" x2=\"548\" y2=\"70\" stroke=\"#333\" marker-end=\"url(#ar)\"\/>\n<rect x=\"190\" y=\"150\" width=\"340\" height=\"110\" rx=\"6\" fill=\"#fff\" stroke=\"#333\"\/>\n<text x=\"360\" y=\"172\" text-anchor=\"middle\" font-size=\"12\">Le SP v\u00e9rifie la signature avec la cl\u00e9<\/text>\n<text x=\"360\" y=\"190\" text-anchor=\"middle\" font-size=\"12\">publique Token-Signing de l&rsquo;IdP<\/text>\n<text x=\"360\" y=\"214\" text-anchor=\"middle\" font-size=\"12\">-&gt; signature valide = session cr\u00e9\u00e9e<\/text>\n<text x=\"360\" y=\"238\" text-anchor=\"middle\" font-size=\"12\">ADFS n&rsquo;est jamais contact\u00e9<\/text>\n<line x1=\"360\" y1=\"100\" x2=\"360\" y2=\"148\" stroke=\"#333\" marker-end=\"url(#ar)\"\/>\n<\/svg><figcaption>Golden SAML: l&rsquo;assertion est forg\u00e9e hors ligne, ADFS n&rsquo;intervient jamais dans l&rsquo;\u00e9change.<\/figcaption><\/figure>\n<h2>O\u00f9 vit la cl\u00e9: certificat de signature et DKM<\/h2>\n<p>La cl\u00e9 de signature des jetons est le c\u0153ur du probl\u00e8me, il faut donc savoir o\u00f9 elle se trouve r\u00e9ellement. ADFS g\u00e8re deux certificats sensibles: Token-Signing et Token-Decrypting. Par d\u00e9faut, avec l&rsquo;option <code>AutoCertificateRollover<\/code> activ\u00e9e, ADFS g\u00e9n\u00e8re lui m\u00eame des certificats auto-sign\u00e9s et les renouvelle p\u00e9riodiquement. La <a href=\"https:\/\/learn.microsoft.com\/en-us\/previous-versions\/windows\/it-pro\/windows-server-2012-r2-and-2012\/dn781426(v=ws.11)\">documentation Microsoft sur l&rsquo;obtention des certificats Token-Signing et Token-Decrypting<\/a> d\u00e9taille ce comportement et le cas des certificats fournis par une PKI d&rsquo;entreprise.<\/p>\n<p>Le point important est la protection de la cl\u00e9 priv\u00e9e. Quand AD FS g\u00e8re ses propres certificats, la cl\u00e9 priv\u00e9e est chiffr\u00e9e et le mat\u00e9riel de d\u00e9chiffrement est conserv\u00e9 dans l&rsquo;Active Directory, dans le conteneur du Distributed Key Manager (DKM). C&rsquo;est ce conteneur que vise le correctif de juillet 2026: <a href=\"https:\/\/support.microsoft.com\/en-us\/servicing\/os\/windows\/docs\/2026\/07\/kb5121391-cve-2026-56155-ad-fs-dkm-container-acl-hardening\">CVE-2026-56155<\/a> resserre les ACL du conteneur DKM pour qu&rsquo;un compte autre que le compte de service ADFS ne puisse pas lire la cl\u00e9 ma\u00eetre.<\/p>\n<p>C\u00f4t\u00e9 serveur ADFS, nous pouvons d\u00e9j\u00e0 v\u00e9rifier ce qu&rsquo;expose le service et quel mode de gestion est en place:<\/p>\n<pre class=\"wp-block-code\"><code>Get-AdfsCertificate -CertificateType Token-Signing\nGet-AdfsProperties | Select-Object AutoCertificateRollover, CertificateSharingContainer<\/code><\/pre>\n<p>La propri\u00e9t\u00e9 <code>CertificateSharingContainer<\/code> pointe vers l&#8217;emplacement DKM dans l&rsquo;annuaire. Pour localiser le conteneur et ses objets dans l&rsquo;AD, nous restons sur des commandes de lecture:<\/p>\n<pre class=\"wp-block-code\"><code>Get-ADObject -SearchBase \"CN=ADFS,CN=Microsoft,CN=Program Data,DC=test,DC=local\" `\n  -Filter * -SearchScope Subtree |\n  Select-Object Name, ObjectClass, DistinguishedName<\/code><\/pre>\n<p>Nous y trouvons un objet conteneur et, en dessous, un objet qui porte l&rsquo;\u00e9l\u00e9ment secret dans un attribut non publi\u00e9. Attention: l&rsquo;int\u00e9r\u00eat de la lecture ici est l&rsquo;inventaire et le contr\u00f4le des ACL, pas l&rsquo;extraction. L&rsquo;ACL de ce conteneur doit \u00eatre r\u00e9serv\u00e9e au compte de service ADFS et aux administrateurs stricts. C&rsquo;est tout l&rsquo;objet du correctif de 2026, et c&rsquo;est le premier r\u00e9glage \u00e0 auditer apr\u00e8s l&rsquo;avoir appliqu\u00e9.<\/p>\n<h2>Ce qu&rsquo;un attaquant en fait<\/h2>\n<p>Le sc\u00e9nario de bout en bout est document\u00e9 publiquement sous la r\u00e9f\u00e9rence <a href=\"https:\/\/attack.mitre.org\/techniques\/T1606\/002\/\">MITRE ATT&amp;CK T1606.002, Forge Web Credentials: SAML Tokens<\/a>. Je d\u00e9cris ici la m\u00e9canique pour faire comprendre le risque, sans donner de recette d&rsquo;exploitation.<\/p>\n<p>Le point d&rsquo;entr\u00e9e, c&rsquo;est le serveur ADFS ou un compte capable de lire le DKM. Un attaquant qui a compromis le serveur ADFS, ou qui a obtenu le niveau de privil\u00e8ge permettant de lire la cl\u00e9 ma\u00eetre DKM dans l&rsquo;annuaire, reconstitue la cl\u00e9 priv\u00e9e du certificat de signature. \u00c0 partir de l\u00e0, il n&rsquo;a plus besoin d&rsquo;ADFS. Il forge hors ligne une assertion SAML o\u00f9 il choisit le NameID, l&rsquo;audience (le SP cibl\u00e9), les attributs, la fen\u00eatre de validit\u00e9, et il la signe avec la cl\u00e9 vol\u00e9e. Il peut se nommer n&rsquo;importe quel utilisateur, y compris un administrateur, et ajouter les claims qu&rsquo;attend l&rsquo;application.<\/p>\n<p>Le rayon d&rsquo;impact est large, et c&rsquo;est ce qui rend ce secret si pr\u00e9cieux pour un attaquant. La cl\u00e9 de signature est partag\u00e9e par toutes les relations d&rsquo;approbation de la ferme ADFS. Un seul vol permet donc de forger des assertions pour <em>tous<\/em> les SP qui font confiance \u00e0 cet IdP: applications internes derri\u00e8re Shibboleth SP, SaaS f\u00e9d\u00e9r\u00e9s, et selon la configuration, l&rsquo;acc\u00e8s \u00e0 des services cloud. Il n&rsquo;y a pas de mot de passe \u00e0 casser, donc une rotation de mots de passe ne coupe rien. La MFA port\u00e9e par ADFS est contourn\u00e9e, puisque l&rsquo;assertion affirme simplement que l&rsquo;authentification a eu lieu. Et tant que le certificat de signature reste valide, les assertions forg\u00e9es restent accept\u00e9es: il n&rsquo;y a pas de r\u00e9vocation d&rsquo;assertion individuelle.<\/p>\n<p>Avec un SP comme Shibboleth, dont nous avons d\u00e9taill\u00e9 l&rsquo;installation dans l&rsquo;article <a href=\"https:\/\/remivernier.com\/index.php\/2018\/08\/19\/installer-shibboleth-sp-sous-iis-8\/\">Installer Shibboleth SP 3.0 sous IIS 8 ou 10<\/a>, l&rsquo;assertion forg\u00e9e est trait\u00e9e comme une vraie: la signature est v\u00e9rifi\u00e9e contre les m\u00e9tadonn\u00e9es de l&rsquo;IdP, les attributs sont extraits, une session est ouverte. Rien ne distingue cette session d&rsquo;une connexion l\u00e9gitime du point de vue de l&rsquo;application.<\/p>\n<p>La note que je m&rsquo;\u00e9tais faite en acceptant ce sujet \u00e9tait d&rsquo;aller au bout de la d\u00e9monstration et de donner un pas \u00e0 pas. Je le fais pour la partie qui compte en d\u00e9fense: inventorier, d\u00e9tecter et durcir. La forge d&rsquo;assertion, elle, je la laisse au niveau du m\u00e9canisme. Montrer la cha\u00eene offensive compl\u00e8te n&rsquo;apprend rien de plus sur le risque et arme inutilement.<\/p>\n<h2>D\u00e9tecter et durcir<\/h2>\n<p>La d\u00e9tection est difficile, et il faut le dire franchement. Une assertion forg\u00e9e est un XML correctement sign\u00e9: le SP n&rsquo;a aucun moyen de la rejeter. Le signal n&rsquo;est donc pas c\u00f4t\u00e9 SP mais dans les \u00e9carts entre ce que le SP voit et ce qu&rsquo;ADFS a r\u00e9ellement \u00e9mis. La piste la plus solide consiste \u00e0 corr\u00e9ler les connexions accept\u00e9es par les applications avec les \u00e9v\u00e9nements d&rsquo;\u00e9mission de jetons d&rsquo;ADFS: une session ouverte sur un SP sans \u00e9v\u00e9nement correspondant c\u00f4t\u00e9 ADFS est une anomalie. Dans un environnement hybride, la m\u00eame logique s&rsquo;applique aux connexions cloud qui n&rsquo;ont pas de trace d&rsquo;authentification locale. L&rsquo;avis de d\u00e9tection publi\u00e9 par CrowdStrike et Microsoft \u00e0 la suite de la campagne SolarWinds d\u00e9crit cette corr\u00e9lation; dans Entra ID, nous avions aussi vu que le rejeu d&rsquo;un jeton ressemble \u00e0 une session l\u00e9gitime dans l&rsquo;article sur le <a href=\"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/entra-id-refresh-token-rejeu-revocation\/\">refresh token, le rejeu et la r\u00e9vocation<\/a>.<\/p>\n<p>Sur le serveur, nous activons l&rsquo;audit d\u00e9taill\u00e9 d&rsquo;ADFS pour disposer des \u00e9v\u00e9nements d&rsquo;\u00e9mission:<\/p>\n<pre class=\"wp-block-code\"><code>Set-AdfsProperties -AuditLevel Verbose\nGet-AdfsProperties | Select-Object AuditLevel<\/code><\/pre>\n<p>Les \u00e9v\u00e9nements de s\u00e9curit\u00e9 associ\u00e9s (notamment 1200 et 1202 pour l&rsquo;\u00e9mission et la validation de jetons) donnent la liste de r\u00e9f\u00e9rence des assertions r\u00e9ellement produites. C&rsquo;est cette liste qu&rsquo;on compare aux sessions ouvertes c\u00f4t\u00e9 SP. Un acc\u00e8s en lecture inhabituel au conteneur DKM, lui, se rep\u00e8re via l&rsquo;audit d&rsquo;acc\u00e8s aux objets de l&rsquo;annuaire, \u00e0 condition de l&rsquo;avoir activ\u00e9 sur le conteneur en amont.<\/p>\n<p>Pour le durcissement, plusieurs parades se combinent. Attention: la premi\u00e8re est d&rsquo;appliquer <a href=\"https:\/\/support.microsoft.com\/en-us\/servicing\/os\/windows\/docs\/2026\/07\/kb5121391-cve-2026-56155-ad-fs-dkm-container-acl-hardening\">CVE-2026-56155<\/a> puis de v\u00e9rifier que l&rsquo;ACL du conteneur DKM est bien restreinte au seul compte de service ADFS. Sans cette restriction, un compte \u00e0 privil\u00e8ge mod\u00e9r\u00e9 peut lire la cl\u00e9 ma\u00eetre et toute la cha\u00eene tombe.<\/p>\n<p>Ensuite, le compte de service ADFS. Un compte utilisateur classique, avec un mot de passe non al\u00e9atoire et une expiration d\u00e9sactiv\u00e9e, est un maillon faible: ses cl\u00e9s d\u00e9riv\u00e9es sont attaquables et sa compromission ouvre l&rsquo;acc\u00e8s au DKM. L&rsquo;usage d&rsquo;un compte de service manag\u00e9 de groupe (gMSA) est ici la bonne pratique. Le mot de passe est g\u00e9n\u00e9r\u00e9 par l&rsquo;annuaire, totalement al\u00e9atoire, et renouvel\u00e9 automatiquement; seules les machines autoris\u00e9es peuvent le r\u00e9cup\u00e9rer. Nous avions \u00e9voqu\u00e9 l&rsquo;int\u00e9r\u00eat des comptes manag\u00e9s pour les SPN dans l&rsquo;article <a href=\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/\">Configuration pas \u00e0 pas de IIS8 pour Kerberos<\/a>, et le raisonnement est le m\u00eame ici: retirer la robustesse de la cl\u00e9 du choix d&rsquo;un humain.<\/p>\n<p>Enfin, la cl\u00e9 elle m\u00eame. Deux leviers r\u00e9duisent l&rsquo;int\u00e9r\u00eat du vol: stocker la cl\u00e9 priv\u00e9e du certificat de signature dans un HSM, de sorte qu&rsquo;elle ne soit jamais extractible du mat\u00e9riel, et r\u00e9duire la dur\u00e9e de vie des certificats de signature pour que la fen\u00eatre d&rsquo;exploitation d&rsquo;une cl\u00e9 vol\u00e9e reste courte. En cas de suspicion de compromission, la seule r\u00e9ponse efficace est la rotation du certificat de signature, r\u00e9p\u00e9t\u00e9e une fois pour purger la cl\u00e9 pr\u00e9c\u00e9dente, suivie de la republication des m\u00e9tadonn\u00e9es vers tous les SP. Tant que l&rsquo;ancienne cl\u00e9 reste accept\u00e9e, les assertions forg\u00e9es passent.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment ADFS fait confiance \u00e0 une assertion sign\u00e9e, ce qu&rsquo;un attaquant fait de la cl\u00e9 de signature vol\u00e9e, et comment prot\u00e9ger le DKM et d\u00e9tecter le rejeu.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,36,37],"tags":[44,144,146,143,147,29,34,145],"class_list":["post-1311","post","type-post","status-publish","format-standard","hentry","category-federation-services","category-saml","category-securite","tag-adfs","tag-dkm","tag-gmsa","tag-golden-saml","tag-mitre-attack","tag-saml","tag-shibboleth","tag-token-signing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Golden SAML: forger une assertion avec la cl\u00e9 ADFS - R\u00e9mi VERNIER<\/title>\n<meta name=\"description\" content=\"Comment ADFS fait confiance \u00e0 une assertion sign\u00e9e, ce qu&#039;un attaquant fait de la cl\u00e9 de signature vol\u00e9e, et comment prot\u00e9ger le DKM et d\u00e9tecter le rejeu.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Golden SAML: forger une assertion avec la cl\u00e9 ADFS - R\u00e9mi VERNIER\" \/>\n<meta property=\"og:description\" content=\"Comment ADFS fait confiance \u00e0 une assertion sign\u00e9e, ce qu&#039;un attaquant fait de la cl\u00e9 de signature vol\u00e9e, et comment prot\u00e9ger le DKM et d\u00e9tecter le rejeu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/\" \/>\n<meta property=\"og:site_name\" content=\"R\u00e9mi VERNIER\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-10T09:00:00+00:00\" \/>\n<meta name=\"author\" content=\"R\u00e9mi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"R\u00e9mi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/\"},\"author\":{\"name\":\"R\u00e9mi\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\"},\"headline\":\"Golden SAML: forger une assertion avec la cl\u00e9 ADFS\",\"datePublished\":\"2026-11-10T09:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/\"},\"wordCount\":1838,\"commentCount\":0,\"keywords\":[\"adfs\",\"dkm\",\"gmsa\",\"golden saml\",\"mitre attack\",\"saml\",\"Shibboleth\",\"token signing\"],\"articleSection\":[\"Federation Services\",\"SAML\",\"S\u00e9curit\u00e9\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/\",\"url\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/\",\"name\":\"Golden SAML: forger une assertion avec la cl\u00e9 ADFS - R\u00e9mi VERNIER\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/#website\"},\"datePublished\":\"2026-11-10T09:00:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\"},\"description\":\"Comment ADFS fait confiance \u00e0 une assertion sign\u00e9e, ce qu'un attaquant fait de la cl\u00e9 de signature vol\u00e9e, et comment prot\u00e9ger le DKM et d\u00e9tecter le rejeu.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/10\\\/golden-saml-forger-assertion-cle-adfs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/remivernier.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Golden SAML: forger une assertion avec la cl\u00e9 ADFS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#website\",\"url\":\"https:\\\/\\\/remivernier.com\\\/\",\"name\":\"R\u00e9mi VERNIER\",\"description\":\"Identit\u00e9, s\u00e9curit\u00e9, SAP et IA : Active Directory, Azure &amp; co...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/remivernier.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\",\"name\":\"R\u00e9mi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"caption\":\"R\u00e9mi\"},\"sameAs\":[\"http:\\\/\\\/www.linkedin.com\\\/in\\\/remi-vernier\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Golden SAML: forger une assertion avec la cl\u00e9 ADFS - R\u00e9mi VERNIER","description":"Comment ADFS fait confiance \u00e0 une assertion sign\u00e9e, ce qu'un attaquant fait de la cl\u00e9 de signature vol\u00e9e, et comment prot\u00e9ger le DKM et d\u00e9tecter le rejeu.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/","og_locale":"fr_FR","og_type":"article","og_title":"Golden SAML: forger une assertion avec la cl\u00e9 ADFS - R\u00e9mi VERNIER","og_description":"Comment ADFS fait confiance \u00e0 une assertion sign\u00e9e, ce qu'un attaquant fait de la cl\u00e9 de signature vol\u00e9e, et comment prot\u00e9ger le DKM et d\u00e9tecter le rejeu.","og_url":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/","og_site_name":"R\u00e9mi VERNIER","article_published_time":"2026-11-10T09:00:00+00:00","author":"R\u00e9mi","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"R\u00e9mi","Dur\u00e9e de lecture estim\u00e9e":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/#article","isPartOf":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/"},"author":{"name":"R\u00e9mi","@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"headline":"Golden SAML: forger une assertion avec la cl\u00e9 ADFS","datePublished":"2026-11-10T09:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/"},"wordCount":1838,"commentCount":0,"keywords":["adfs","dkm","gmsa","golden saml","mitre attack","saml","Shibboleth","token signing"],"articleSection":["Federation Services","SAML","S\u00e9curit\u00e9"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/","url":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/","name":"Golden SAML: forger une assertion avec la cl\u00e9 ADFS - R\u00e9mi VERNIER","isPartOf":{"@id":"https:\/\/remivernier.com\/#website"},"datePublished":"2026-11-10T09:00:00+00:00","author":{"@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"description":"Comment ADFS fait confiance \u00e0 une assertion sign\u00e9e, ce qu'un attaquant fait de la cl\u00e9 de signature vol\u00e9e, et comment prot\u00e9ger le DKM et d\u00e9tecter le rejeu.","breadcrumb":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/10\/golden-saml-forger-assertion-cle-adfs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/remivernier.com\/"},{"@type":"ListItem","position":2,"name":"Golden SAML: forger une assertion avec la cl\u00e9 ADFS"}]},{"@type":"WebSite","@id":"https:\/\/remivernier.com\/#website","url":"https:\/\/remivernier.com\/","name":"R\u00e9mi VERNIER","description":"Identit\u00e9, s\u00e9curit\u00e9, SAP et IA : Active Directory, Azure &amp; co...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/remivernier.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906","name":"R\u00e9mi","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","caption":"R\u00e9mi"},"sameAs":["http:\/\/www.linkedin.com\/in\/remi-vernier"]}]}},"_links":{"self":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/comments?post=1311"}],"version-history":[{"count":1,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1311\/revisions"}],"predecessor-version":[{"id":1312,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1311\/revisions\/1312"}],"wp:attachment":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/media?parent=1311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/categories?post=1311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/tags?post=1311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}