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

// OAuth2

Implémentation d'un mécanisme de dérivation de token (grant OAuth2 token-exchange, RFC 8693) et implémentation de fonctionnalités custom sur le serveur d'autorisation OAuth2.

Gestion d'accès interne

Incrément sur l'outil interne de gestion d'accès aux projets et bases de données (système critique), ajout de fonctionnalités, Fullstack sur ce projet (front-end vue js)

// Sécurité applicative

Analyse et évaluation de plusieurs remontées de bug bounty (YesWeHack) sur différentes parties du système (login, 2FA, serveur d'autorisation OAuth2)

// SSO

Maintenance, incrément et ajout de documentation support pour l'onboarding d'organisation utilisant la fonctionnalité Single-Sign-On

// 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 de différentes solutions pour uniformiser le système et apporter de la granularité pour l'accès aux ressources internes par les collaborateurs

// 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 et proactivité