การยืนยันตัวตน Node.js Express: แนวคิด, วิธีการ และตัวอย่าง

การยืนยันตัวตนเป็นพื้นฐานในการรักษาความปลอดภัยเว็บแอปพลิเคชัน Express ใน Node.js ช่วยให้การใช้งานง่ายขึ้น

อาชว์

อาชว์

4 June 2025

การยืนยันตัวตน Node.js Express: แนวคิด, วิธีการ และตัวอย่าง

```html

Authentication เป็นส่วนสำคัญในการรักษาความปลอดภัยของเว็บแอปพลิเคชัน เพื่อให้มั่นใจว่าผู้ใช้สามารถเข้าถึงเฉพาะทรัพยากรและข้อมูลที่ได้รับอนุญาตเท่านั้น ในระบบนิเวศ Node.js, Express เป็นเฟรมเวิร์กยอดนิยมที่ช่วยลดความซับซ้อนในการใช้งาน Authentication บล็อกนี้จะครอบคลุมแนวคิดหลักของ Authentication, วิธีการทั่วไปที่ใช้ในแอปพลิเคชัน Node.js และ Express และให้ตัวอย่างการใช้งานจริงเพื่อช่วยให้คุณเริ่มต้นได้

บทนำสู่ Node.js Express Authentication

Node.js Express Authentication หมายถึงวิธีการและแนวทางปฏิบัติที่ใช้ในการตรวจสอบยืนยันตัวตนของผู้ใช้ที่เข้าถึงแอปพลิเคชัน Node.js ที่สร้างขึ้นด้วยเฟรมเวิร์ก Express Authentication ช่วยให้มั่นใจได้ว่าเฉพาะผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงทรัพยากรบางอย่างได้ ซึ่งช่วยเพิ่มความปลอดภัยและปกป้องข้อมูลที่ละเอียดอ่อน

💡
Apidog ไม่ได้เป็นเพียงแพลตฟอร์มการพัฒนาและทดสอบ API ที่ทรงพลังเท่านั้น แต่ยังให้การสนับสนุนอย่างกว้างขวางสำหรับการจัดการการอนุญาตอีกด้วย ความสามารถนี้มีความสำคัญอย่างยิ่งในการทำให้มั่นใจว่า API มีความปลอดภัยและเข้าถึงได้เฉพาะผู้ใช้ที่ได้รับอนุญาตเท่านั้น
button

Authentication vs. Authorization

Stateless vs. Stateful Authentication

วิธีการ Authentication ทั่วไปของ Node.js Express

1. Basic Authentication

2. Token-Based Authentication (JWT)

3. Session-Based Authentication

4. OAuth2

5. Social Login

6. Multi-Factor Authentication (MFA)

7. API Key Authentication

8. LDAP Authentication

9. SAML Authentication

วิธีการเลือกวิธีการ Authentication Node.js Express ที่เหมาะสม?

การเลือกวิธีการ Authentication ที่เหมาะสมสำหรับแอปพลิเคชัน Node.js Express ของคุณขึ้นอยู่กับปัจจัยหลายประการ รวมถึงข้อกำหนดด้านความปลอดภัย ประสบการณ์ผู้ใช้ และกรณีการใช้งานเฉพาะของแอปพลิเคชันของคุณ นี่คือคำแนะนำเกี่ยวกับเวลาที่จะใช้วิธีการ Authentication แต่ละวิธี:

1. Basic Authentication

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

2. Token-Based Authentication (JWT)

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

3. Session-Based Authentication

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

4. OAuth2

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

5. Social Login

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

6. Multi-Factor Authentication (MFA)

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

7. API Key Authentication

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

8. LDAP Authentication

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

9. SAML Authentication

เมื่อใดควรใช้:

ข้อดี:

ข้อเสีย:

สรุปสั้นๆ เกี่ยวกับการเลือกวิธีการ Authentication

การเลือกวิธีการ Authentication ที่เหมาะสมสำหรับแอปพลิเคชัน Node.js Express ของคุณเกี่ยวข้องกับการทำความเข้าใจตัวเลือกต่างๆ ที่มีอยู่และการประเมินตัวเลือกเหล่านั้นกับข้อกำหนดเฉพาะของแอปพลิเคชันของคุณ

Basic Authentication: รวดเร็วและง่ายสำหรับแอปพลิเคชันที่ไม่สำคัญ

Token-Based Authentication (JWT): เหมาะสำหรับ SPAs, แอปมือถือ และ microservices

Session-Based Authentication: เหมาะสำหรับเว็บแอปพลิเคชันแบบดั้งเดิม

OAuth2: เหมาะที่สุดสำหรับการผสานรวมกับบุคคลที่สามและการเข้าถึงที่มอบหมาย

Social Login: เหมาะสำหรับแอปพลิเคชันที่เน้นผู้บริโภคเพื่อปรับปรุงประสบการณ์ผู้ใช้

Multi-Factor Authentication (MFA): จำเป็นสำหรับแอปพลิเคชันที่มีความปลอดภัยสูง

API Key Authentication: มีประโยชน์สำหรับการสื่อสารแบบ service-to-service และ APIs สาธารณะ

LDAP Authentication: เหมาะสำหรับแอปพลิเคชันองค์กรที่มีการจัดการผู้ใช้แบบรวมศูนย์

SAML Authentication: ใช้สำหรับ SSO ขององค์กรและระบบ identity แบบรวม

การเลือกวิธีการที่เหมาะสมขึ้นอยู่กับความต้องการเฉพาะของแอปพลิเคชันของคุณ ข้อกำหนดด้านความปลอดภัย และข้อควรพิจารณาด้านประสบการณ์ผู้ใช้

ตัวอย่าง Node.js Express Authentication

Authentication เป็นส่วนสำคัญของแอปพลิเคชันเว็บใดๆ เพื่อให้มั่นใจว่าผู้ใช้สามารถเข้าถึงทรัพยากรได้อย่างปลอดภัย มาสำรวจตัวอย่างต่างๆ ของวิธีการใช้งาน Authentication ในแอปพลิเคชัน Node.js Express เราจะครอบคลุมวิธีการทั่วไปบางอย่าง: JWT (JSON Web Tokens), session-based authentication, OAuth2 และ API keys

1. JWT (JSON Web Tokens) Authentication

JWT เป็นวิธีการตรวจสอบสิทธิ์แบบ stateless ที่ช่วยให้คุณสามารถส่งข้อมูลระหว่างคู่สัญญาได้อย่างปลอดภัยในรูปแบบอ็อบเจกต์ JSON ข้อมูลนี้สามารถตรวจสอบและเชื่อถือได้เนื่องจากมีการลงนามแบบดิจิทัล

ขั้นตอนการใช้งาน:

ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์ของคุณ

ขั้นแรก สร้างโปรเจกต์ใหม่และติดตั้ง dependencies ที่จำเป็น:

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

ขั้นตอนที่ 2: สร้าง Express Server

สร้างไฟล์ app.js และตั้งค่า Express server พื้นฐาน:

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. Session-Based Authentication

Session-based authentication อาศัยการจัดเก็บข้อมูลเซสชันฝั่งเซิร์ฟเวอร์ วิธีการนี้เป็น stateful และใช้กันทั่วไปในเว็บแอปพลิเคชันแบบดั้งเดิม

ขั้นตอนการใช้งาน:

ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์ของคุณ

สร้างโปรเจกต์ใหม่และติดตั้ง dependencies ที่จำเป็น:

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

ขั้นตอนที่ 2: สร้าง Express Server

สร้างไฟล์ app.js และตั้งค่า Express server พื้นฐาน:

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 Authentication

OAuth2 เป็นวิธีการตรวจสอบสิทธิ์ที่ซับซ้อนกว่า ซึ่งช่วยให้แอปพลิเคชันของบุคคลที่สามสามารถเข้าถึงทรัพยากรของผู้ใช้ได้โดยไม่ต้องเปิดเผยข้อมูลประจำตัวของผู้ใช้ ใช้กันทั่วไปสำหรับการเข้าสู่ระบบโซเชียลและการผสานรวมกับบริการอื่นๆ

ขั้นตอนการใช้งาน:

การใช้งาน OAuth2 โดยทั่วไปเกี่ยวข้องกับการใช้ไลบรารีหรือเฟรมเวิร์กที่จัดการ OAuth2 flow เพื่อความเรียบง่าย เราจะใช้ไลบรารี passport พร้อมกับกลยุทธ์เช่น passport-google-oauth20

ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์ของคุณ

สร้างโปรเจกต์ใหม่และติดตั้ง dependencies ที่จำเป็น:

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

ขั้นตอนที่ 2: สร้าง Express Server

สร้างไฟล์ app.js และตั้งค่า Express server พื้นฐาน:

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 Key Authentication

API key authentication นั้นง่ายและมักใช้สำหรับการสื่อสารแบบ server-to-server ซึ่งเกี่ยวข้องกับการส่ง key พร้อมกับแต่ละคำขอเพื่อตรวจสอบไคลเอนต์

ขั้นตอนการใช้งาน

ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์ของคุณ

สร้างโปรเจกต์ใหม่และติดตั้ง dependencies ที่จำเป็น:

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

ขั้นตอนที่ 2: สร้าง Express Server

สร้างไฟล์ app.js และตั้งค่า Express server พื้นฐาน:

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

ตั้งแต่ stateless JWT authentication ไปจนถึง session-based authentication แบบดั้งเดิม และ OAuth2 สำหรับการผสานรวมกับบุคคลที่สาม คุณมีวิธีการต่างๆ ให้เลือกตามความต้องการของแอปพลิเคชันของคุณ การทำความเข้าใจและใช้งานวิธีการเหล่านี้อย่างถูกต้องจะช่วยให้คุณสร้างแอปพลิเคชันที่ปลอดภัยและปรับขนาดได้

10 แนวทางปฏิบัติที่ดีที่สุดสำหรับ Nodejs Express Authentication

การใช้งาน Authentication ในแอปพลิเคชัน Node.js Express ต้องพิจารณาอย่างรอบคอบเพื่อให้มั่นใจในความปลอดภัย ความสามารถในการปรับขนาด และความง่ายในการใช้งาน นี่คือแนวทางปฏิบัติที่ดีที่สุดบางประการที่ควรปฏิบัติตามเมื่อจัดการ Authentication ในแอปพลิเคชัน Node.js Express ของคุณ:

1. ใช้ Strong Password Hashing

const bcrypt = require('bcryptjs');

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

2. Secure 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. Use HTTPS

4. Validate Input

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. Implement Rate Limiting

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. Store Tokens Securely

7. Implement Proper Session Management

8. Use Middleware for Protected Routes

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. Monitor and Log Authentication Events

10. Regularly Update Dependencies

การใช้ประโยชน์จาก Apidog เพื่อทดสอบ APIs ด้วยวิธีการ Nodejs Express Authentication

Apidog เป็นแพลตฟอร์มการพัฒนา API ที่ครอบคลุม ซึ่งช่วยปรับปรุงกระบวนการพัฒนาทั้งหมด มีตัวเลือกการตรวจสอบสิทธิ์ในตัวที่แข็งแกร่ง ช่วยให้นักพัฒนาสามารถทดสอบ endpoints API ด้วยวิธีการต่างๆ รวมถึง API Key, Bearer Token, JWT, Basic Auth, Digest Auth, OAuth 1.0, OAuth 2.0, Hawk Authentication, NTLM และ Akamai EdgeGrid ซึ่งช่วยให้นักพัฒนา API สามารถตรวจสอบกลยุทธ์การตรวจสอบสิทธิ์ที่ใช้ใน APIs ของตนได้อย่างละเอียด

auth methods for APIs

บทสรุป

การใช้งาน Authentication ในแอปพลิเคชัน Node.js Express เป็นสิ่งสำคัญในการรับรองความปลอดภัยและความสมบูรณ์ของเว็บแอปพลิเคชันของคุณ ด้วยการทำความเข้าใจวิธีการ Authentication ต่างๆ ตั้งแต่ Basic Auth และ JWT ไปจนถึง OAuth2 และ LDAP และปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด เช่น การใช้ strong password hashing การรักษาความปลอดภัย JWT tokens และการตรวจสอบความถูกต้องของอินพุต คุณสามารถสร้างระบบ Authentication ที่แข็งแกร่งและปลอดภัยได้ เครื่องมือต่างๆ เช่น Apidog ช่วยเพิ่มความสามารถในการทดสอบและตรวจสอบวิธีการ Authentication เหล่านี้ เพื่อให้มั่นใจว่าทำงานได้ตามที่ตั้งใจไว้ ด้วยการเลือกและใช้งานกลยุทธ์การตรวจสอบสิทธิ์ที่เหมาะสมสำหรับความต้องการของแอปพลิเคชันของคุณอย่างรอบคอบ คุณสามารถมอบประสบการณ์ผู้ใช้ที่ปลอดภัยและราบรื่น ปกป้องข้อมูลและทรัพยากรที่ละเอียดอ่อนได้อย่างมีประสิทธิภาพ

```

Explore more

สร้างทางเลือกสำหรับ Claude Web Search แบบ Open Source (พร้อมเซิร์ฟเวอร์ Firecrawl MCP)

สร้างทางเลือกสำหรับ Claude Web Search แบบ Open Source (พร้อมเซิร์ฟเวอร์ Firecrawl MCP)

สำหรับองค์กรที่ต้องการควบคุม, ปรับแต่ง, หรือความเป็นส่วนตัวมากกว่าการค้นหาเว็บของ Claude, การสร้างทางเลือกโดยใช้ Firecrawl เป็นทางออกที่ดี มาเรียนรู้กัน!

21 March 2025

10 อันดับทางเลือกที่ดีที่สุดสำหรับการเล่นวินเซิร์ฟสำหรับนักเขียนโค้ดที่ชอบความรู้สึกในปี 2025

10 อันดับทางเลือกที่ดีที่สุดสำหรับการเล่นวินเซิร์ฟสำหรับนักเขียนโค้ดที่ชอบความรู้สึกในปี 2025

ค้นพบ 10 ทางเลือก Windsurf ปี 2025 ปรับปรุงการเขียนโค้ด เหมาะสำหรับนักพัฒนาที่ต้องการโซลูชันการเขียนโค้ดที่มีประสิทธิภาพ ปลอดภัย และหลากหลาย

20 March 2025

Figma มีเซิร์ฟเวอร์ MCP แล้ว และนี่คือวิธีใช้งาน

Figma มีเซิร์ฟเวอร์ MCP แล้ว และนี่คือวิธีใช้งาน

ค้นพบวิธีเชื่อมต่อ Figma MCP กับ AI เช่น Cursor เพื่อสร้างโค้ดอัตโนมัติ เหมาะสำหรับนักพัฒนาและนักออกแบบ

20 March 2025

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API