<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>CCE Infrastructure Documentation Blog</title>
        <link>https://your-docusaurus-site.example.com/blog</link>
        <description>CCE Infrastructure Documentation Blog</description>
        <lastBuildDate>Mon, 15 Jan 2024 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>fr</language>
        <item>
            <title><![CDATA[Intégration de l'authentification utilisateur dans Docusaurus]]></title>
            <link>https://your-docusaurus-site.example.com/blog/user-authentication-integration</link>
            <guid>https://your-docusaurus-site.example.com/blog/user-authentication-integration</guid>
            <pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Nous avons implémenté un système d'authentification complet dans notre documentation Docusaurus, permettant aux membres de l'équipe IT de s'authentifier via Keycloak et de gérer leur profil directement dans l'interface.]]></description>
            <content:encoded><![CDATA[<p>Nous avons implémenté un système d'authentification complet dans notre documentation Docusaurus, permettant aux membres de l'équipe IT de s'authentifier via Keycloak et de gérer leur profil directement dans l'interface.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-objectifs">🎯 Objectifs<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-objectifs" class="hash-link" aria-label="Lien direct vers 🎯 Objectifs" title="Lien direct vers 🎯 Objectifs">​</a></h2>
<p>L'intégration vise à :</p>
<ul>
<li>Fournir une authentification transparente via notre infrastructure OAuth2/Keycloak existante</li>
<li>Permettre la gestion du profil utilisateur sans quitter la documentation</li>
<li>Maintenir une expérience utilisateur cohérente avec le reste de l'écosystème IT</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="️-architecture-technique">🏗️ Architecture technique<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#%EF%B8%8F-architecture-technique" class="hash-link" aria-label="Lien direct vers 🏗️ Architecture technique" title="Lien direct vers 🏗️ Architecture technique">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="composants-créés">Composants créés<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#composants-cr%C3%A9%C3%A9s" class="hash-link" aria-label="Lien direct vers Composants créés" title="Lien direct vers Composants créés">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-hook-dauthentification-useauth">1. Hook d'authentification (<code>useAuth</code>)<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#1-hook-dauthentification-useauth" class="hash-link" aria-label="Lien direct vers 1-hook-dauthentification-useauth" title="Lien direct vers 1-hook-dauthentification-useauth">​</a></h4>
<p>Un hook React personnalisé qui gère l'état d'authentification :</p>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> user</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> isAuthenticated</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> isLoading</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> error </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useAuth</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-composant-userprofile">2. Composant UserProfile<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#2-composant-userprofile" class="hash-link" aria-label="Lien direct vers 2. Composant UserProfile" title="Lien direct vers 2. Composant UserProfile">​</a></h4>
<p>Interface utilisateur avec deux modes :</p>
<ul>
<li><strong>Compact</strong> : Intégré dans la navbar avec menu dropdown</li>
<li><strong>Complet</strong> : Page dédiée avec informations détaillées</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-intégration-navbar">3. Intégration Navbar<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#3-int%C3%A9gration-navbar" class="hash-link" aria-label="Lien direct vers 3. Intégration Navbar" title="Lien direct vers 3. Intégration Navbar">​</a></h4>
<p>Personnalisation de la navbar Docusaurus via "swizzling" pour une intégration native.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-flux-dauthentification">🔐 Flux d'authentification<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-flux-dauthentification" class="hash-link" aria-label="Lien direct vers 🔐 Flux d'authentification" title="Lien direct vers 🔐 Flux d'authentification">​</a></h2>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-fonctionnalités">✨ Fonctionnalités<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-fonctionnalit%C3%A9s" class="hash-link" aria-label="Lien direct vers ✨ Fonctionnalités" title="Lien direct vers ✨ Fonctionnalités">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="authentification-automatique">Authentification automatique<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#authentification-automatique" class="hash-link" aria-label="Lien direct vers Authentification automatique" title="Lien direct vers Authentification automatique">​</a></h3>
<ul>
<li>Détection transparente du statut de connexion</li>
<li>Récupération automatique des informations utilisateur</li>
<li>Gestion des erreurs et états de chargement</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="gestion-du-profil">Gestion du profil<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#gestion-du-profil" class="hash-link" aria-label="Lien direct vers Gestion du profil" title="Lien direct vers Gestion du profil">​</a></h3>
<ul>
<li>Avatar généré à partir des initiales</li>
<li>Affichage des groupes IT (<code>it-admin</code>, <code>it-dev</code>)</li>
<li>Actions rapides : profil, gestion compte, déconnexion</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="design-adaptatif">Design adaptatif<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#design-adaptatif" class="hash-link" aria-label="Lien direct vers Design adaptatif" title="Lien direct vers Design adaptatif">​</a></h3>
<ul>
<li>Interface responsive mobile/desktop</li>
<li>Support du mode sombre Docusaurus</li>
<li>Cohérence avec le thème existant</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="️-détails-techniques">🛠️ Détails techniques<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#%EF%B8%8F-d%C3%A9tails-techniques" class="hash-link" aria-label="Lien direct vers 🛠️ Détails techniques" title="Lien direct vers 🛠️ Détails techniques">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="endpoints-utilisés">Endpoints utilisés<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#endpoints-utilis%C3%A9s" class="hash-link" aria-label="Lien direct vers Endpoints utilisés" title="Lien direct vers Endpoints utilisés">​</a></h3>
<ul>
<li><code>/oauth2/userinfo</code> - Récupération des données utilisateur</li>
<li><code>/oauth2/start</code> - Initiation de l'authentification</li>
<li><code>/oauth2/sign_out</code> - Déconnexion sécurisée</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="types-de-données">Types de données<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#types-de-donn%C3%A9es" class="hash-link" aria-label="Lien direct vers Types de données" title="Lien direct vers Types de données">​</a></h3>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">OAuth2User</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  sub</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  email</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  groups</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  preferred_username</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="gestion-des-erreurs">Gestion des erreurs<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#gestion-des-erreurs" class="hash-link" aria-label="Lien direct vers Gestion des erreurs" title="Lien direct vers Gestion des erreurs">​</a></h3>
<ul>
<li><strong>401 Unauthorized</strong> : Redirection automatique vers la connexion</li>
<li><strong>Erreurs réseau</strong> : Messages informatifs avec retry</li>
<li><strong>États de chargement</strong> : Indicateurs visuels appropriés</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-expérience-utilisateur">🎨 Expérience utilisateur<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-exp%C3%A9rience-utilisateur" class="hash-link" aria-label="Lien direct vers 🎨 Expérience utilisateur" title="Lien direct vers 🎨 Expérience utilisateur">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="navigation-intuitive">Navigation intuitive<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#navigation-intuitive" class="hash-link" aria-label="Lien direct vers Navigation intuitive" title="Lien direct vers Navigation intuitive">​</a></h3>
<ul>
<li>Bouton de connexion visible pour les utilisateurs non authentifiés</li>
<li>Menu dropdown accessible d'un clic pour les utilisateurs connectés</li>
<li>Page de profil dédiée accessible via <code>/profile</code></li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="actions-disponibles">Actions disponibles<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#actions-disponibles" class="hash-link" aria-label="Lien direct vers Actions disponibles" title="Lien direct vers Actions disponibles">​</a></h3>
<ol>
<li><strong>Se connecter</strong> - Redirection vers OAuth2 Proxy</li>
<li><strong>Consulter le profil</strong> - Page avec informations complètes</li>
<li><strong>Gérer le compte</strong> - Accès direct à Keycloak</li>
<li><strong>Se déconnecter</strong> - Déconnexion complète avec nettoyage de session</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-sécurité">🔒 Sécurité<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-s%C3%A9curit%C3%A9" class="hash-link" aria-label="Lien direct vers 🔒 Sécurité" title="Lien direct vers 🔒 Sécurité">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="mesures-implementées">Mesures implementées<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#mesures-implement%C3%A9es" class="hash-link" aria-label="Lien direct vers Mesures implementées" title="Lien direct vers Mesures implementées">​</a></h3>
<ul>
<li>Utilisation des cookies sécurisés OAuth2 Proxy</li>
<li>Validation côté serveur via headers d'authentification</li>
<li>Gestion appropriée de l'expiration des tokens</li>
<li>Support PKCE pour renforcer la sécurité OIDC</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="conformité">Conformité<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#conformit%C3%A9" class="hash-link" aria-label="Lien direct vers Conformité" title="Lien direct vers Conformité">​</a></h3>
<ul>
<li>Respect des standards OAuth2/OIDC</li>
<li>Intégration transparente avec l'infrastructure existante</li>
<li>Pas de stockage local d'informations sensibles</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-prochaines-étapes">📋 Prochaines étapes<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-prochaines-%C3%A9tapes" class="hash-link" aria-label="Lien direct vers 📋 Prochaines étapes" title="Lien direct vers 📋 Prochaines étapes">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="améliorations-prévues">Améliorations prévues<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#am%C3%A9liorations-pr%C3%A9vues" class="hash-link" aria-label="Lien direct vers Améliorations prévues" title="Lien direct vers Améliorations prévues">​</a></h3>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Notifications en temps réel des changements de permissions</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Interface de gestion des préférences utilisateur</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Intégration avec les outils de monitoring</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="optimisations">Optimisations<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#optimisations" class="hash-link" aria-label="Lien direct vers Optimisations" title="Lien direct vers Optimisations">​</a></h3>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Mise en cache intelligente des informations utilisateur</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Optimisation des performances de chargement</li>
<li class="task-list-item"><input type="checkbox" disabled=""> <!-- -->Tests automatisés de l'intégration</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-déploiement">🚀 Déploiement<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-d%C3%A9ploiement" class="hash-link" aria-label="Lien direct vers 🚀 Déploiement" title="Lien direct vers 🚀 Déploiement">​</a></h2>
<p>L'intégration est déployée et active sur tous les environnements. Les utilisateurs peuvent dès maintenant :</p>
<ul>
<li>Se connecter avec leurs identifiants IT habituels</li>
<li>Accéder à leur profil via l'avatar dans la navbar</li>
<li>Gérer leurs paramètres de compte via Keycloak</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-pour-les-développeurs">💡 Pour les développeurs<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#-pour-les-d%C3%A9veloppeurs" class="hash-link" aria-label="Lien direct vers 💡 Pour les développeurs" title="Lien direct vers 💡 Pour les développeurs">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="utilisation-du-hook">Utilisation du hook<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#utilisation-du-hook" class="hash-link" aria-label="Lien direct vers Utilisation du hook" title="Lien direct vers Utilisation du hook">​</a></h3>
<div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> useAuth </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'@site/src/hooks/useAuth'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">MonComposant</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> user</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> isAuthenticated </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useAuth</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">!</span><span class="token plain">isAuthenticated</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">div</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">Connexion requise</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">div</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">div</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">Bonjour </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">user</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">name</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">div</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="personnalisation">Personnalisation<a href="https://your-docusaurus-site.example.com/blog/user-authentication-integration#personnalisation" class="hash-link" aria-label="Lien direct vers Personnalisation" title="Lien direct vers Personnalisation">​</a></h3>
<p>Le composant UserProfile peut être personnalisé via props et CSS modules pour s'adapter à différents contextes d'utilisation.</p>
<hr>
<p>Cette intégration marque une étape importante dans l'amélioration de notre écosystème de documentation, offrant une expérience utilisateur moderne et sécurisée à l'ensemble de l'équipe IT.</p>]]></content:encoded>
            <category>oauth2</category>
            <category>keycloak</category>
            <category>Docusaurus</category>
            <category>authentification</category>
        </item>
        <item>
            <title><![CDATA[First Blog Post]]></title>
            <link>https://your-docusaurus-site.example.com/blog/first-blog-post</link>
            <guid>https://your-docusaurus-site.example.com/blog/first-blog-post</guid>
            <pubDate>Tue, 28 May 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Lorem ipsum dolor sit amet...]]></description>
            <content:encoded><![CDATA[<p>Lorem ipsum dolor sit amet...</p>
<p>...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>]]></content:encoded>
            <category>Hola</category>
            <category>Docusaurus</category>
        </item>
    </channel>
</rss>