STAGE · 01/03 · infomaniak ← cd ..

// stage de fin d'études · mars—août 2026 · 6 mois

Infomaniak.

Développement backend PHP/Laravel au sein de l'équipe Core-Backend — sécurité applicative, OAuth2/OIDC et modernisation d'APIs.

PHP 8 / LaravelOAuth2OIDC SAML2JWT2FA GitLab CI/CDNestJSRabbitMQ

// Contexte

Stage de 6 mois à Infomaniak (Genève, Suisse), hébergeur web et fournisseur cloud suisse reconnu pour sa souveraineté des données. Intégration à l'équipe Core-Backend, responsable de l'uniformisation backend et de l'authentification (2FA, SSO, OIDC) pour l'ensemble des produits.

La mission : contribuer à la sécurisation et la modernisation d'un écosystème hétérogène (PHP 5.6 legacy → PHP 8 Laravel), tout en assurant la continuité de services critiques d'authentification utilisés par des centaines de milliers d'utilisateurs.

// Sécurité & Authentification

// Token Exchange (RFC 8693)

Implémentation d'un mécanisme de dérivation de token : un access token échangé contre un nouveau grant, avec restriction stricte par association émetteur/sujet/application cible. Contractualisation de la confiance inter-services.

// Restriction OAuth2 par organisation

Restriction des applications OAuth2 aux seuls utilisateurs de l'organisation propriétaire. Validation au moment du consentement, après sélection de compte. Pattern Repository + Strategy (grant types).

// Investigation 2FA

Analyse d'une remontée de sécurité (bug bounty) sur le contournement potentiel de la 2FA. Cartographie du flux, identification des points de friction (state et code_challenge exposés dans un JWT post-déconnexion).

// SAML2 + migration 2FA

Correction d'un bug SAML2 (trailing slash dans l'assertion SSO) et stabilisation de la migration de l'ancien système 2FA vers le nouvel Authenticator (edge cases, états transitoires).

// Modernisation & APIs

// Refactoring CRUD (SRP)

Ajout d'endpoints de gestion de tags produits avec application du Single Responsibility Principle : logique métier extraite dans un service, autorisations dans une policy, routing modernisé Laravel. Devenue référence interne de structuration.

// Pipeline CI/CD documentation OpenAPI

Audit et fix du générateur de documentation API (annotations PHPDoc → spec OpenAPI 3). Pipeline GitLab CI : build, validation YAML, diff vs version précédente, déploiement sur stockage S3. Transforme la doc d'une dette en actif fiable.

// Audit des permissions

Analyse des mécanismes de contrôle d'accès hétérogènes (scopes, attributs métier, listes statiques). Proposition d'un middleware unifié et segmentation des comptes de service (principe du moindre privilège).

// Observabilité

Résolution d'un problème de traçabilité critique sur le système de notifications push (APNS/Firebase). Mise en place de la propagation d'un request_context_id à travers la chaîne de traitement, via le pattern Continuation Local Storage (CLS) côté NestJS et RabbitMQ pour le mode asynchrone.

flowchart LR
  A["Service A (Laravel)\n$_SERVER['REQUEST_CONTEXT_ID']"] -->|Sync: HTTP POST + payload enrichi| B
  A -->|Async: RabbitMQ + contexte sérialisé| B
  B["Service B (NestJS)\nnestjs-cls → contexte par requête/message\nLogger pino + mixin CLS (auto-injection)"]
  B --> V["Vector → indexation sur request_context_id"]
        

// Bilan

// Production

Plusieurs incréments livrés en production : restriction OAuth2, refactoring tags, fix 2FA, pipeline doc OpenAPI, fix révocation de token en cache.

// Méthodologie

Posture d'investigation : cartographier les flux avant de coder, formuler des hypothèses vérifiables. Revues de code comme espaces de justification technique.