Node.js Express Authentifizierung: Konzepte, Methoden & Beispiele

Authentifizierung sichert Web-Apps. Express (Node.js) vereinfacht die Implementierung, um autorisierten Zugriff zu gewährleisten.

Leo Schulz

Leo Schulz

5 June 2025

Node.js Express Authentifizierung: Konzepte, Methoden & Beispiele

Authentifizierung ist ein grundlegender Aspekt der Sicherung von Webanwendungen, der sicherstellt, dass Benutzer nur auf die Ressourcen und Daten zugreifen können, zu deren Zugriff sie berechtigt sind. Im Node.js-Ökosystem vereinfacht Express als beliebtes Framework die Implementierung der Authentifizierung. Dieser Blog behandelt wichtige Authentifizierungskonzepte, gängige Methoden, die in Node.js- und Express-Anwendungen verwendet werden, und bietet praktische Beispiele, die Ihnen den Einstieg erleichtern.

Einführung in die Node.js Express-Authentifizierung

Die Node.js Express-Authentifizierung bezieht sich auf die Methoden und Praktiken, die verwendet werden, um die Identität von Benutzern zu überprüfen, die auf eine mit dem Express-Framework erstellte Node.js-Anwendung zugreifen. Die Authentifizierung stellt sicher, dass nur autorisierte Benutzer auf bestimmte Ressourcen zugreifen können, wodurch die Sicherheit gewährleistet und sensible Daten geschützt werden.

💡
Apidog ist nicht nur eine leistungsstarke API-Entwicklungs- und Testplattform, sondern bietet auch umfassende Unterstützung für die Handhabung der Autorisierung. Diese Fähigkeit ist entscheidend, um sicherzustellen, dass APIs sicher sind und nur autorisierten Benutzern zugänglich sind.
button

Authentifizierung vs. Autorisierung

Zustandslose vs. zustandsbehaftete Authentifizierung

Gängige Node.js Express-Authentifizierungsmethoden

1. Basic Authentication

2. Token-basierte Authentifizierung (JWT)

3. Sitzungsbasierte Authentifizierung

4. OAuth2

5. Social Login

6. Multi-Faktor-Authentifizierung (MFA)

7. API-Schlüssel-Authentifizierung

8. LDAP-Authentifizierung

9. SAML-Authentifizierung

Wie wählt man die richtigen Node.js Express-Authentifizierungsmethoden aus?

Die Auswahl der richtigen Authentifizierungsmethode für Ihre Node.js Express-Anwendung hängt von mehreren Faktoren ab, darunter die Sicherheitsanforderungen, die Benutzererfahrung und die spezifischen Anwendungsfälle Ihrer Anwendung. Hier ist eine Anleitung, wann Sie jede Authentifizierungsmethode verwenden sollten:

1. Basic Authentication

Wann zu verwenden:

Vorteile:

Nachteile:

2. Token-basierte Authentifizierung (JWT)

Wann zu verwenden:

Vorteile:

Nachteile:

3. Sitzungsbasierte Authentifizierung

Wann zu verwenden:

Vorteile:

Nachteile:

4. OAuth2

Wann zu verwenden:

Vorteile:

Nachteile:

5. Social Login

Wann zu verwenden:

Vorteile:

Nachteile:

6. Multi-Faktor-Authentifizierung (MFA)

Wann zu verwenden:

Vorteile:

Nachteile:

7. API-Schlüssel-Authentifizierung

Wann zu verwenden:

Vorteile:

Nachteile:

8. LDAP-Authentifizierung

Wann zu verwenden:

Vorteile:

Nachteile:

9. SAML-Authentifizierung

Wann zu verwenden:

Vorteile:

Nachteile:

Eine kurze Zusammenfassung der Auswahl von Authentifizierungsmethoden

Die Auswahl der richtigen Authentifizierungsmethode für Ihre Node.js Express-Anwendung beinhaltet das Verständnis der verschiedenen verfügbaren Optionen und deren Bewertung anhand der spezifischen Anforderungen Ihrer Anwendung.

Basic Authentication: Schnell und einfach für unkritische Anwendungen.

Token-basierte Authentifizierung (JWT): Ideal für SPAs, mobile Apps und Microservices.

Sitzungsbasierte Authentifizierung: Geeignet für traditionelle Webanwendungen.

OAuth2: Am besten für Drittanbieter-Integrationen und delegierten Zugriff.

Social Login: Ideal für verbraucherorientierte Anwendungen zur Verbesserung der Benutzererfahrung.

Multi-Faktor-Authentifizierung (MFA): Unverzichtbar für Hochsicherheitsanwendungen.

API-Schlüssel-Authentifizierung: Nützlich für die Kommunikation zwischen Diensten und öffentliche APIs.

LDAP-Authentifizierung: Geeignet für Unternehmensanwendungen mit zentralisierter Benutzerverwaltung.

SAML-Authentifizierung: Wird für Enterprise SSO und Verbundidentitätssysteme verwendet.

Die Wahl der richtigen Methode hängt von den spezifischen Anforderungen, Sicherheitsanforderungen und Benutzererwägungen Ihrer Anwendung ab.

Node.js Express-Authentifizierungsbeispiele

Die Authentifizierung ist ein kritischer Bestandteil jeder Webanwendung, der sicherstellt, dass Benutzer sicher auf Ressourcen zugreifen können. Lassen Sie uns verschiedene Beispiele untersuchen, wie Sie die Authentifizierung in einer Node.js Express-Anwendung implementieren können. Wir werden einige der gängigsten Methoden behandeln: JWT (JSON Web Tokens), sitzungsbasierte Authentifizierung, OAuth2 und API-Schlüssel.

1. JWT (JSON Web Tokens)-Authentifizierung

JWT ist eine zustandslose Authentifizierungsmethode, mit der Sie Informationen sicher zwischen Parteien als JSON-Objekt übertragen können. Diese Informationen können verifiziert und vertrauenswürdig sein, da sie digital signiert sind.

Implementierungsschritte:

Schritt 1: Richten Sie Ihr Projekt ein

Erstellen Sie zunächst ein neues Projekt und installieren Sie die erforderlichen Abhängigkeiten:

mkdir jwt-auth-example
cd jwt-auth-example
npm init -y
npm install express jsonwebtoken body-parser bcryptjs

Schritt 2: Erstellen Sie den Express-Server

Erstellen Sie eine app.js-Datei und richten Sie einen einfachen Express-Server ein:

const express = require('express');
const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');
const bcrypt = require('bcryptjs');

const app = express();
app.use(bodyParser.json());

const SECRET_KEY = 'your_jwt_secret';

// Mock User Data
const users = [{ id: 1, username: 'user1', password: bcrypt.hashSync('password1', 8) }];

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  const user = users.find(u => u.username === username);
  if (user && bcrypt.compareSync(password, user.password)) {
    const token = jwt.sign({ id: user.id, username: user.username }, SECRET_KEY, { expiresIn: '1h' });
    res.json({ token });
  } else {
    res.status(401).send('Invalid credentials');
  }
});

const authenticateJWT = (req, res, next) => {
  const token = req.headers.authorization;
  if (token) {
    jwt.verify(token, SECRET_KEY, (err, user) => {
      if (err) {
        return res.sendStatus(403);
      }
      req.user = user;
      next();
    });
  } else {
    res.sendStatus(401);
  }
};

app.get('/protected', authenticateJWT, (req, res) => {
  res.send(`Hello ${req.user.username}, you have accessed a protected route!`);
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

2. Sitzungsbasierte Authentifizierung

Die sitzungsbasierte Authentifizierung basiert auf der Speicherung von Sitzungsdaten auf der Serverseite. Diese Methode ist zustandsbehaftet und wird häufig in traditionellen Webanwendungen verwendet.

Implementierungsschritte:

Schritt 1: Richten Sie Ihr Projekt ein

Erstellen Sie ein neues Projekt und installieren Sie die erforderlichen Abhängigkeiten:

mkdir session-auth-example
cd session-auth-example
npm init -y
npm install express express-session body-parser bcryptjs

Schritt 2: Erstellen Sie den Express-Server

Erstellen Sie eine app.js-Datei und richten Sie einen einfachen Express-Server ein:

const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const bcrypt = require('bcryptjs');

const app = express();
app.use(bodyParser.json());
app.use(session({ secret: 'your_session_secret', resave: false, saveUninitialized: true }));

const users = [{ id: 1, username: 'user1', password: bcrypt.hashSync('password1', 8) }];

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  const user = users.find(u => u.username === username);
  if (user && bcrypt.compareSync(password, user.password)) {
    req.session.userId = user.id;
    res.send('Logged in');
  } else {
    res.status(401).send('Invalid credentials');
  }
});

const authenticateSession = (req, res, next) => {
  if (req.session.userId) {
    next();
  } else {
    res.sendStatus(401);
  }
};

app.get('/protected', authenticateSession, (req, res) => {
  const user = users.find(u => u.id === req.session.userId);
  res.send(`Hello ${user.username}, you have accessed a protected route!`);
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

3. OAuth2-Authentifizierung

OAuth2 ist eine komplexere Authentifizierungsmethode, die es Anwendungen von Drittanbietern ermöglicht, auf Benutzerressourcen zuzugreifen, ohne die Anmeldeinformationen des Benutzers preiszugeben. Es wird häufig für Social Login und die Integration mit anderen Diensten verwendet.

Implementierungsschritte:

Die Implementierung von OAuth2 beinhaltet in der Regel die Verwendung einer Bibliothek oder eines Frameworks, das den OAuth2-Ablauf verarbeitet. Der Einfachheit halber verwenden wir die passport-Bibliothek mit einer Strategie wie passport-google-oauth20.

Schritt 1: Richten Sie Ihr Projekt ein

Erstellen Sie ein neues Projekt und installieren Sie die erforderlichen Abhängigkeiten:

mkdir oauth2-auth-example
cd oauth2-auth-example
npm init -y
npm install express passport passport-google-oauth20 express-session

Schritt 2: Erstellen Sie den Express-Server

Erstellen Sie eine app.js-Datei und richten Sie einen einfachen Express-Server ein:

const express = require('express');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const session = require('express-session');

const app = express();

app.use(session({ secret: 'your_session_secret', resave: false, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());

passport.use(new GoogleStrategy({
  clientID: 'YOUR_GOOGLE_CLIENT_ID',
  clientSecret: 'YOUR_GOOGLE_CLIENT_SECRET',
  callbackURL: 'http://localhost:3000/auth/google/callback'
}, (accessToken, refreshToken, profile, done) => {
  // In a real application, you would save the profile info to your database
  return done(null, profile);
}));

passport.serializeUser((user, done) => {
  done(null, user);
});

passport.deserializeUser((obj, done) => {
  done(null, obj);
});

app.get('/auth/google', passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login'] }));

app.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/' }), (req, res) => {
  res.redirect('/protected');
});

const ensureAuthenticated = (req, res, next) => {
  if (req.isAuthenticated()) {
    return next();
  }
  res.redirect('/');
};

app.get('/protected', ensureAuthenticated, (req, res) => {
  res.send(`Hello ${req.user.displayName}, you have accessed a protected route!`);
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

4. API-Schlüssel-Authentifizierung

Die API-Schlüssel-Authentifizierung ist einfach und wird häufig für die Kommunikation zwischen Servern verwendet. Sie beinhaltet die Übergabe eines Schlüssels mit jeder Anfrage, um den Client zu verifizieren.

Implementierungsschritte

Schritt 1: Richten Sie Ihr Projekt ein

Erstellen Sie ein neues Projekt und installieren Sie die erforderlichen Abhängigkeiten:

mkdir api-key-auth-example
cd api-key-auth-example
npm init -y
npm install express

Schritt 2: Erstellen Sie den Express-Server

Erstellen Sie eine app.js-Datei und richten Sie einen einfachen Express-Server ein:

const express = require('express');
const app = express();

const API_KEY = 'your_api_key';

const authenticateApiKey = (req, res, next) => {
  const apiKey = req.headers['x-api-key'];
  if (apiKey && apiKey === API_KEY) {
    next();
  } else {
    res.sendStatus(401);
  }
};

app.get('/protected', authenticateApiKey, (req, res) => {
  res.send('Access granted to protected route');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Von der zustandslosen JWT-Authentifizierung über die traditionelle sitzungsbasierte Authentifizierung bis hin zu OAuth2 für Drittanbieter-Integrationen haben Sie eine Vielzahl von Methoden zur Auswahl, die auf den Anforderungen Ihrer Anwendung basieren. Das Verständnis und die korrekte Implementierung dieser Methoden helfen Ihnen beim Aufbau sicherer und skalierbarer Anwendungen.

10 Best Practices für Nodejs Express-Authentifizierung

Die Implementierung der Authentifizierung in einer Node.js Express-Anwendung erfordert eine sorgfältige Abwägung, um Sicherheit, Skalierbarkeit und Benutzerfreundlichkeit zu gewährleisten. Hier sind einige Best Practices, die Sie bei der Handhabung der Authentifizierung in Ihren Node.js Express-Anwendungen befolgen sollten:

1. Verwenden Sie starkes Passwort-Hashing

const bcrypt = require('bcryptjs');

const hashPassword = async (password) => {
    const salt = await bcrypt.genSalt(10);
    return await bcrypt.hash(password, salt);
};

2. Sichern Sie JWT-Tokens

const jwt = require('jsonwebtoken');
const SECRET_KEY = process.env.SECRET_KEY;

const token = jwt.sign({ userId: user.id }, SECRET_KEY, { expiresIn: '1h' });

3. Verwenden Sie HTTPS

4. Eingabe validieren

const { body, validationResult } = require('express-validator');

app.post('/register', [
    body('email').isEmail(),
    body('password').isLength({ min: 6 })
], (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(400).json({ errors: errors.array() });
    }
    // Proceed with registration
});

5. Implementieren Sie Ratenbegrenzung

const rateLimit = require('express-rate-limit');

const limiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15 minutes
    max: 100 // limit each IP to 100 requests per windowMs
});

app.use('/login', limiter);

6. Speichern Sie Tokens sicher

7. Implementieren Sie eine ordnungsgemäße Sitzungsverwaltung

8. Verwenden Sie Middleware für geschützte Routen

const authenticateJWT = (req, res, next) => {
    const token = req.headers.authorization;

    if (!token) {
        return res.sendStatus(401);
    }

    jwt.verify(token, SECRET_KEY, (err, user) => {
        if (err) {
            return res.sendStatus(403);
        }

        req.user = user;
        next();
    });
};

app.get('/protected', authenticateJWT, (req, res) => {
    res.send('This is a protected route');
});

9. Überwachen und protokollieren Sie Authentifizierungsereignisse

10. Aktualisieren Sie regelmäßig die Abhängigkeiten

Apidog nutzen, um APIs mit Nodejs Express-Authentifizierungsmethoden zu testen

Apidog ist eine umfassende API-Entwicklungsplattform, die den gesamten Entwicklungsprozess rationalisiert. Es verfügt über robuste integrierte Authentifizierungsoptionen, mit denen Entwickler API-Endpunkte mit verschiedenen Methoden testen können, darunter API-Schlüssel, Bearer-Token, JWT, Basic Auth, Digest Auth, OAuth 1.0, OAuth 2.0, Hawk-Authentifizierung, NTLM und Akamai EdgeGrid. Dies ermöglicht API-Entwicklern, die in ihren APIs implementierten Authentifizierungsstrategien gründlich zu validieren.

auth methods for APIs

Fazit

Die Implementierung der Authentifizierung in einer Node.js Express-Anwendung ist entscheidend, um die Sicherheit und Integrität Ihrer Webanwendung zu gewährleisten. Indem Sie die verschiedenen Authentifizierungsmethoden verstehen, von Basic Auth und JWT bis hin zu OAuth2 und LDAP, und Best Practices wie die Verwendung von starkem Passwort-Hashing, die Sicherung von JWT-Tokens und die Validierung von Eingaben befolgen, können Sie robuste und sichere Authentifizierungssysteme erstellen. Tools wie Apidog verbessern Ihre Fähigkeit, diese Authentifizierungsmethoden zu testen und zu validieren, um sicherzustellen, dass sie wie vorgesehen funktionieren. Indem Sie die richtige Authentifizierungsstrategie für die Anforderungen Ihrer Anwendung sorgfältig auswählen und implementieren, können Sie eine sichere und nahtlose Benutzererfahrung bieten und sensible Daten und Ressourcen effektiv schützen.

Explore more

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Künstliche Intelligenz wächst rasant. FractalAIResearch/Fathom-R1-14B (14,8 Mrd. Parameter) glänzt in Mathe & Logik.

5 June 2025

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Die Softwareentwicklung erlebt Innovationen durch KI. Cursor, ein KI-Editor, erreicht mit Version 1.0 einen Meilenstein.

5 June 2025

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

Der Aufstieg von Web 3.0: Dezentral, nutzerorientiert, transparent. APIs ermöglichen innovative dApps und Blockchain-Integration.

4 June 2025

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen