保护一个被一个应用程序使用的公共REST API 可以通过以下方法实现:
const express = require('express');
const app = express();
const API_KEY = 'YOUR_API_KEY';
// 中间件函数,用于验证API密钥
const validateAPIKey = (req, res, next) => {
const apiKey = req.headers.authorization;
if (apiKey !== API_KEY) {
return res.status(401).json({ error: 'Invalid API key' });
}
next();
}
// 在所有请求中应用验证中间件
app.use(validateAPIKey);
// 定义API路由和处理程序
app.get('/api/data', (req, res) => {
// 处理API请求的逻辑
res.json({ message: 'Success' });
});
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
oauth2-server
库实现OAuth 2.0认证:const express = require('express');
const app = express();
const OAuth2Server = require('oauth2-server');
const Request = OAuth2Server.Request;
const Response = OAuth2Server.Response;
const oauth = new OAuth2Server({
// OAuth 2.0 配置选项
});
// 定义OAuth 2.0授权端点
app.post('/oauth/token', (req, res) => {
const request = new Request(req);
const response = new Response(res);
oauth.token(request, response)
.then((token) => {
res.json(token);
})
.catch((error) => {
res.status(error.code || 500).json(error);
});
});
// 定义需要验证的受保护API路由
app.get('/api/data', (req, res) => {
const request = new Request(req);
const response = new Response(res);
oauth.authenticate(request, response)
.then((token) => {
// 验证通过,处理API请求的逻辑
res.json({ message: 'Success' });
})
.catch((error) => {
res.status(error.code || 500).json(error);
});
});
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
这些是保护公共REST API 的常见方法,您可以根据需要选择适合您的应用程序的方法。