MST
星途 面试题库

面试题:微服务架构中常见的安全认证机制有哪些及如何在项目中初步实现

请列举至少三种微服务架构中常见的安全认证机制,并简单阐述如何在一个小型微服务项目中初步实现其中一种认证机制,包括涉及到的技术组件和基本流程。
47.6万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

常见安全认证机制

  1. OAuth 2.0:一种授权框架,允许第三方应用以用户名义访问资源服务器。
  2. JSON Web Tokens (JWT):使用 JSON 格式在各方之间安全地传输信息。
  3. Basic Authentication:最简单的认证方式,客户端将用户名和密码以 Base64 编码发送到服务器。

在小型微服务项目中实现 JWT 认证机制

  1. 技术组件
    • 编程语言及框架:如使用 Spring Boot(Java)、Node.js + Express 等。
    • JWT 库:在 Java 中可使用 jjwt 库;Node.js 中可使用 jsonwebtoken 库。
  2. 基本流程
    • 用户登录:用户在客户端输入用户名和密码,客户端将其发送到认证服务器。
    • 验证:认证服务器验证用户名和密码。若正确,生成 JWT。例如在 Java Spring Boot 中:
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;

public class JwtUtil {
    private static final String SECRET_KEY = "your-secret-key";
    public static String generateToken(String username) {
        Claims claims = Jwts.claims().setSubject(username);
        claims.put("created", new Date());
        return Jwts.builder()
              .setClaims(claims)
              .setIssuedAt(new Date())
              .setExpiration(new Date(System.currentTimeMillis() + 10 * 60 * 1000))
              .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
              .compact();
    }
}
- **返回 JWT**:认证服务器将生成的 JWT 返回给客户端。
- **后续请求**:客户端在后续请求头中带上 JWT,如 `Authorization: Bearer <token>`。微服务接收到请求后,使用 JWT 库验证 JWT 的有效性。例如在 Node.js Express 中:
const jwt = require('jsonwebtoken');
const SECRET_KEY = 'your-secret-key';

function verifyToken(req, res, next) {
    const token = req.headers['authorization'];
    if (!token) return res.status(401).send('Access denied. No token provided.');
    try {
        const decoded = jwt.verify(token.split(' ')[1], SECRET_KEY);
        req.user = decoded;
        next();
    } catch (err) {
        res.status(400).send('Invalid token.');
    }
}