• 1. étape 1 : initialiser le projet GraphQL en Node.js

  • 1.1. 1 – Créer la base avec Express et Apollo Server

  • 1.2. 2 – Gérer les erreurs et tokens JWT

  • 2. étape 2 : containeriser avec Docker

  • 2.1. 1 – Rédiger le Dockerfile

  • 2.2. 2 – Orchestration avec docker-compose

  • 3. étape 3 : sécurité et bonnes pratiques

  • 3.1. 1 – Limiter la profondeur et la complexité des requêtes

  • 3.2. 2 – Metriques perf et recommandations OWASP

  • 4. conclusion

deployer une api graphql sécurisée en node.js avec docker et oauth2

Image de deployer une api graphql sécurisée en node.js avec docker et oauth2

Dans un contexte où les startups et PME cherchent à offrir des API flexibles tout en garantissant la sécurité, GraphQL s’impose comme une solution moderne. Ce tutoriel vous guide pas à pas pour déployer une API GraphQL sécurisée en Node.js avec Docker et OAuth2, depuis la configuration initiale jusqu’aux bonnes pratiques de production.

étape 1 : initialiser le projet GraphQL en Node.js

1.1 – Créer la base avec Express et Apollo Server

mkdir graphql-api && cd graphql-api  
npm init -y  
npm install express apollo-server-express graphql passport passport-oauth2 jsonwebtoken
// index.js
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const passport = require('passport');
const OAuth2Strategy = require('passport-oauth2');
const jwt = require('jsonwebtoken');

// Schéma GraphQL simple
const typeDefs = gql`
  type Query { hello: String }
`;
const resolvers = { Query: { hello: () => 'Hello from GraphQL' } };

const server = new ApolloServer({ typeDefs, resolvers });

// Config OAuth2 (exemple générique)
passport.use(new OAuth2Strategy({
  authorizationURL: 'https://auth.exemple.com/authorize',
  tokenURL: 'https://auth.exemple.com/token',
  clientID: 'VOTRE_CLIENT_ID',
  clientSecret: 'VOTRE_SECRET',
  callbackURL: '/auth/callback'
}, (accessToken, refreshToken, profile, cb) => cb(null, { accessToken })));

const app = express();
app.use(passport.initialize());
app.use('/graphql', passport.authenticate('oauth2', { session: false }), server.getMiddleware());
app.listen(4000, () => console.log('🚀  GraphQL ready on http://localhost:4000/graphql'));

1.2 – Gérer les erreurs et tokens JWT

  • Validez le accessToken dans chaque requête et renvoyez HTTP 401 si expiré.
  • Générez un JWT local pour vos microservices internes : jwt.sign({ sub: user.id }, 'SECRET', { expiresIn: '1h' }).

étape 2 : containeriser avec Docker

2.1 – Rédiger le Dockerfile

FROM node:20-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 4000
CMD ["node", "index.js"]

2.2 – Orchestration avec docker-compose

version: '3.8'
services:
  graphql-api:
    build: .
    ports:
      - "4000:4000"
    environment:
      - NODE_ENV=production
      - CLIENT_ID=${CLIENT_ID}
      - CLIENT_SECRET=${CLIENT_SECRET}

Commandes clés :

docker-compose build  
docker-compose up -d  
docker logs -f graphql-api

étape 3 : sécurité et bonnes pratiques

3.1 – Limiter la profondeur et la complexité des requêtes

npm install graphql-depth-limit
const depthLimit = require('graphql-depth-limit');
const server = new ApolloServer({
  typeDefs, resolvers,
  validationRules: [ depthLimit(5) ]
});

3.2 – Metriques perf et recommandations OWASP

MétriqueObjectif
Taille max d’une requête50 KB
Limite d’appels/sec100 req/s
Score OWASP API Security 2025≥ 80 %

– Pensez à chiffrer les variables sensibles via dotenv et à activer le mode strict en production. – Pour un déploiement complet, orientez-vous vers un reverse-proxy Nginx devant le conteneur.

conclusion

Vous disposez désormais d’une API GraphQL en Node.js sécurisée par OAuth2, containerisée et prête pour la production. N’hésitez pas à étendre ce modèle vers un cluster Docker Swarm ou Kubernetes pour plus d’échelle. Pour un accompagnement personnalisé sur vos projets web, contactez notre équipe.

Image de 5 villes françaises à connaître pour lancer sa startup en 2025

5 villes françaises à connaître pour lancer sa startup en 2025

Découvrez les 5 villes françaises où attractivité, écosystème tech et qualité de vie se conjuguent pour lancer votre startup en 2025
Image de node.js 22 : performance, coût et opportunités pour votre entreprise

node.js 22 : performance, coût et opportunités pour votre entreprise

Découvrez comment Node.js 22 accélère vos apps, réduit vos coûts d’infra et introduit Fetch native pour booster la performance de votre entreprise
Image de comment un logiciel de gestion des stocks cloud peut optimiser votre trésorerie en pme

comment un logiciel de gestion des stocks cloud peut optimiser votre trésorerie en pme

Découvrez comment un logiciel de gestion des stocks cloud aide votre PME à libérer de la trésorerie, réduire surstocks et ruptures et optimiser vos flux.
DEVIS GRATUIT

Un projet en tête ? Vous avez des questions ?

Contactez nous pour recevoir un devis gratuitement, des réponses à vos questions ou une séance de consulting offerte avec l'un de nos experts :

Nous contacter