Node.js Express Kimlik Doğrulama: Kavramlar, Yöntemler ve Örnekler

Kimlik doğrulama, web uygulamalarını güvence altına almanın temelidir. Express, Node.js'de kimlik doğrulama için popüler bir çerçevedir.

Efe Demir

Efe Demir

5 June 2025

Node.js Express Kimlik Doğrulama: Kavramlar, Yöntemler ve Örnekler

```html

Kimlik Doğrulama, web uygulamalarını güvence altına almanın temel bir yönüdür ve kullanıcıların yalnızca yetkili oldukları kaynaklara ve verilere erişebilmelerini sağlar. Node.js ekosisteminde, Express, kimlik doğrulama uygulamasını basitleştiren popüler bir çerçevedir. Bu blog, temel kimlik doğrulama kavramlarını, Node.js ve Express uygulamalarında kullanılan yaygın yöntemleri ele alacak ve başlamanıza yardımcı olacak pratik örnekler sunacaktır.

Node.js Express Kimlik Doğrulamasına Giriş

Node.js Express kimlik doğrulaması, Express çerçevesiyle oluşturulmuş bir Node.js uygulamasına erişen kullanıcıların kimliğini doğrulamak için kullanılan yöntemleri ve uygulamaları ifade eder. Kimlik doğrulama, yalnızca yetkili kullanıcıların belirli kaynaklara erişebilmesini sağlayarak güvenlik sağlar ve hassas verileri korur.

💡
Apidog sadece güçlü bir API geliştirme ve test platformu değil, aynı zamanda yetkilendirmeyi yönetmek için kapsamlı destek de sağlar. Bu yetenek, API'lerin güvenli olmasını ve yalnızca yetkili kullanıcılar tarafından erişilebilir olmasını sağlamak için çok önemlidir.
button

Kimlik Doğrulama ve Yetkilendirme

Durumsuz ve Durumlu Kimlik Doğrulama

Yaygın Node.js Express Kimlik Doğrulama Yöntemleri

1. Temel Kimlik Doğrulama

2. Token Tabanlı Kimlik Doğrulama (JWT)

3. Oturum Tabanlı Kimlik Doğrulama

4. OAuth2

5. Sosyal Giriş

6. Çok Faktörlü Kimlik Doğrulama (MFA)

7. API Anahtar Kimlik Doğrulaması

8. LDAP Kimlik Doğrulaması

9. SAML Kimlik Doğrulaması

Doğru Node.js Express Kimlik Doğrulama Yöntemlerini Nasıl Seçersiniz?

Node.js Express uygulamanız için doğru kimlik doğrulama yöntemini seçmek, güvenlik gereksinimleri, kullanıcı deneyimi ve uygulamanızın özel kullanım durumları dahil olmak üzere çeşitli faktörlere bağlıdır. İşte her kimlik doğrulama yöntemini ne zaman kullanacağınıza dair bir rehber:

1. Temel Kimlik Doğrulama

Ne Zaman Kullanılır:

Artıları:

Eksileri:

2. Token Tabanlı Kimlik Doğrulama (JWT)

Ne Zaman Kullanılır:

Artıları:

Eksileri:

3. Oturum Tabanlı Kimlik Doğrulama

Ne Zaman Kullanılır:

Artıları:

Eksileri:

4. OAuth2

Ne Zaman Kullanılır:

Artıları:

Eksileri:

5. Sosyal Giriş

Ne Zaman Kullanılır:

Artıları:

Eksileri:

6. Çok Faktörlü Kimlik Doğrulama (MFA)

Ne Zaman Kullanılır:

Artıları:

Eksileri:

7. API Anahtar Kimlik Doğrulaması

Ne Zaman Kullanılır:

Artıları:

Eksileri:

8. LDAP Kimlik Doğrulaması

Ne Zaman Kullanılır:

Artıları:

Eksileri:

9. SAML Kimlik Doğrulaması

Ne Zaman Kullanılır:

Artıları:

Eksileri:

Kimlik Doğrulama Yöntemlerini Seçmeye İlişkin Kısa Bir Özet

Node.js Express uygulamanız için doğru kimlik doğrulama yöntemini seçmek, mevcut farklı seçenekleri anlamayı ve bunları uygulamanızın özel gereksinimlerine göre değerlendirmeyi içerir.

Temel Kimlik Doğrulama: Kritik olmayan uygulamalar için hızlı ve basit.

Token Tabanlı Kimlik Doğrulama (JWT): SPA'lar, mobil uygulamalar ve mikro hizmetler için idealdir.

Oturum Tabanlı Kimlik Doğrulama: Geleneksel web uygulamaları için uygundur.

OAuth2: Üçüncü taraf entegrasyonları ve devredilmiş erişim için en iyisidir.

Sosyal Giriş: Kullanıcı deneyimini iyileştirmek için tüketiciye yönelik uygulamalar için harika.

Çok Faktörlü Kimlik Doğrulama (MFA): Yüksek güvenlikli uygulamalar için gereklidir.

API Anahtar Kimlik Doğrulaması: Hizmetten hizmete iletişim ve genel API'ler için kullanışlıdır.

LDAP Kimlik Doğrulaması: Merkezi kullanıcı yönetimi olan kurumsal uygulamalar için uygundur.

SAML Kimlik Doğrulaması: Kurumsal SSO ve federasyon kimlik sistemleri için kullanılır.

Doğru yöntemi seçmek, uygulamanızın özel ihtiyaçlarına, güvenlik gereksinimlerine ve kullanıcı deneyimi hususlarına bağlıdır.

Node.js Express Kimlik Doğrulama Örnekleri

Kimlik doğrulama, kullanıcıların kaynaklara güvenli bir şekilde erişebilmesini sağlamak için herhangi bir web uygulamasının kritik bir parçasıdır. Bir Node.js Express uygulamasında kimlik doğrulamanın nasıl uygulanacağına dair çeşitli örnekleri inceleyelim. En yaygın yöntemlerden bazılarını ele alacağız: JWT (JSON Web Token'lar), oturum tabanlı kimlik doğrulama, OAuth2 ve API anahtarları.

1. JWT (JSON Web Token'lar) Kimlik Doğrulaması

JWT, taraflar arasında bir JSON nesnesi olarak güvenli bir şekilde bilgi iletmenize olanak tanıyan, durumsuz bir kimlik doğrulama yöntemidir. Bu bilgiler dijital olarak imzalandığı için doğrulanabilir ve güvenilirdir.

Uygulama Adımları:

Adım 1: Projenizi Kurun

İlk olarak, yeni bir proje oluşturun ve gerekli bağımlılıkları yükleyin:

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

Adım 2: Express Sunucusunu Oluşturun

Bir app.js dosyası oluşturun ve temel bir Express sunucusu kurun:

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. Oturum Tabanlı Kimlik Doğrulama

Oturum tabanlı kimlik doğrulama, oturum verilerini sunucu tarafında saklamaya dayanır. Bu yöntem durum bilgisidir ve geleneksel web uygulamalarında yaygın olarak kullanılır.

Uygulama Adımları:

Adım 1: Projenizi Kurun

Yeni bir proje oluşturun ve gerekli bağımlılıkları yükleyin:

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

Adım 2: Express Sunucusunu Oluşturun

Bir app.js dosyası oluşturun ve temel bir Express sunucusu kurun:

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 Kimlik Doğrulaması

OAuth2, üçüncü taraf uygulamaların kullanıcı kimlik bilgilerini ifşa etmeden kullanıcı kaynaklarına erişmesine izin veren daha karmaşık bir kimlik doğrulama yöntemidir. Sosyal oturum açma ve diğer hizmetlerle entegrasyon için yaygın olarak kullanılır.

Uygulama Adımları:

OAuth2'yi uygulamak genellikle OAuth2 akışını işleyen bir kütüphane veya çerçeve kullanmayı içerir. Basitlik için, passport kütüphanesini passport-google-oauth20 gibi bir stratejiyle kullanacağız.

Adım 1: Projenizi Kurun

Yeni bir proje oluşturun ve gerekli bağımlılıkları yükleyin:

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

Adım 2: Express Sunucusunu Oluşturun

Bir app.js dosyası oluşturun ve temel bir Express sunucusu kurun:

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 Anahtar Kimlik Doğrulaması

API anahtar kimlik doğrulaması basittir ve genellikle sunucudan sunucuya iletişim için kullanılır. İstemciyi doğrulamak için her istekte bir anahtar geçirmeyi içerir.

Uygulama Adımları

Adım 1: Projenizi Kurun

Yeni bir proje oluşturun ve gerekli bağımlılıkları yükleyin:

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

Adım 2: Express Sunucusunu Oluşturun

Bir app.js dosyası oluşturun ve temel bir Express sunucusu kurun:

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}`);
});

Durumsuz JWT kimlik doğrulamasından geleneksel oturum tabanlı kimlik doğrulamasına ve üçüncü taraf entegrasyonları için OAuth2'ye kadar, uygulamanızın gereksinimlerine göre aralarından seçim yapabileceğiniz çeşitli yöntemleriniz vardır. Bu yöntemleri anlamak ve doğru bir şekilde uygulamak, güvenli ve ölçeklenebilir uygulamalar oluşturmanıza yardımcı olacaktır.

Nodejs Express Kimlik Doğrulaması İçin 10 En İyi Uygulama

Bir Node.js Express uygulamasında kimlik doğrulama uygulamak, güvenlik, ölçeklenebilirlik ve kullanım kolaylığını sağlamak için dikkatli bir değerlendirme gerektirir. Node.js Express uygulamalarınızda kimlik doğrulamayı işlerken izlenecek bazı en iyi uygulamalar şunlardır:

1. Güçlü Parola Karma Kullanın

const bcrypt = require('bcryptjs');

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

2. JWT Token'larını Güvenceye Alın

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

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

3. HTTPS Kullanın

4. Girişi Doğrulayın

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. Hız Sınırlaması Uygulayın

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. Token'ları Güvenli Bir Şekilde Saklayın

7. Uygun Oturum Yönetimi Uygulayın

8. Korumalı Rotalar İçin Ara Katman Yazılımı Kullanın

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. Kimlik Doğrulama Olaylarını İzleyin ve Günlüğe Kaydedin

10. Bağımlılıkları Düzenli Olarak Güncelleyin

Nodejs Express Kimlik Doğrulama Yöntemleriyle API'leri Test Etmek İçin Apidog'dan Yararlanma

Apidog, tüm geliştirme sürecini kolaylaştıran kapsamlı bir API geliştirme

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin