Auth0 Express-API SDK是一个用于在Express应用程序中保护API的库.
文档
特征
直接跳到所需的能力.
| 特性 | 它会做什么 |
|---|---|
| 快开始 | 用 createAuth0Api 数行 |
| 环境变量 | 配置从 AUTH0_* env vars 而不是硬编码 |
保护 API 路由( X)requiresAuth(中文(简体) ) | 需要有效的无记名访问令牌 |
读取令牌索赔( E)req.auth0.user(中文(简体) ) | 从已核实的代号中提取的存取请求 |
| 代表用户调用另一个 API | 换一个给下游API的代币 |
| 呼叫第三方 API( Token Vault) | 给Token Vault的来电者获取谷歌或Slack访问符 |
| 交换外部令牌( Custom Token Exchange) | 将遗产或伙伴符号转换为 Auth0 访问符号 |
| 处理一个失败的托肯断层交换 | 告诉房客拒绝的错位 isConnectionExchangeError |
| 需要具体范围 | 大门路线 scopesInclude (匹配全部或任何) |
| 授权债权 | 限制路线 claimEquals, (中文(简体) ), claimIncludes, (中文(简体) ), claimCheck |
| 自定义符号/ 用户类型 | 通过模块增强键输入您的自定义要求 |
自定义 fetch | 在自己获取中交换( 代理、 重试、 仪器) |
开始
1. 安装SDK
npm i @auth0/auth0-express-api
这个库需要Node.js 22 LTS和较新的LTS版本.
3. 注册 Auth0 特快 API 路由器
以您的快递实例注册 Auth0 Express API 路由器 .
import express from 'express';
import { createAuth0Api } from '@auth0/auth0-express-api';
const app = express();
app.use(createAuth0Api({
domain: '<AUTH0_DOMAIN>',
audience: '<AUTH0_AUDIENCE>',
}));
这个 AUTH0_DOMAIN 可从 Auth0 剪贴板 一旦你创造了API.
这个 AUTH0_AUDIENCE 是正在调用的 API 的标识符。 您可以在 Auth0 仪表板的 API 部分中找到这个 .
环境变量支持:也可以使用环境变量配置 SDK(AUTH0_DOMAIN, (中文(简体) ), AUTH0_AUDIENCE) (中文(简体) ). 见 缩略语.md 详细情况.
保护 API 路由
为了保护 API 路径, 您可以使用 requiresAuth 中间软件 :
import { requiresAuth } from '@auth0/auth0-express-api';
app.get(
'/protected-api',
requiresAuth(),
async (req, res) => {
res.json({ message: `Hello, ${req.auth0.user!.sub}` });
}
);
SDK将从信使中提取的债权暴露为 user 财产 req.auth0 对象.
债权授权
除了基本的认证外,您还可以根据特定符号要求授权请求:
import {
requiresAuth,
claimEquals,
claimIncludes,
claimCheck,
scopesInclude,
} from '@auth0/auth0-express-api';
// Check if a claim equals a specific value
app.get('/admin', requiresAuth(), claimEquals('isAdmin', true), handler);
// Check if a claim includes all specified values
app.get('/admin/edit', requiresAuth(), claimIncludes('roles', 'admin', 'editor'), handler);
// Custom validation logic
app.get('/premium', requiresAuth(), claimCheck(
(req, token) => token.tier === 'premium' || token.roles?.includes('admin'),
'Premium tier or admin role required'
), handler);
// Flexible scope matching - match ALL (default) or ANY
app.get('/admin/edit', requiresAuth(), scopesInclude('read:admin write:admin'), handler);
app.get('/messages', requiresAuth(), scopesInclude('read:messages read:admin', { match: 'any' }), handler);
见 缩略语.md 更多的授权模式.
自定义类型
为了使用自定义用户类型来代表自定义要求,您可以配置 Token 模块中类型 :
declare module '@auth0/auth0-express-api' {
interface Token {
id: number;
name: string;
age: number;
}
}
这样做将更改用户类型 req.auth0.user 自动对象 :
app.get(
'/protected-api',
requiresAuth(),
async (req, res) => {
res.json({ message: `Hello, ${req.auth0.user!.name}` });
}
);
[大 以上是用无记名符号保护API路由,而不是使用会话保护服务器侧渲染路由.
反馈
捐款
我们赞赏反馈和对这次再投资的贡献! 在开始前,请阅读以下内容:
提出问题
请提供反馈或报告错误 提出我们的问题追踪器。 。 。 .
脆弱性报告
请不要在公共 GitHub 问题跟踪器上报告安全漏洞 。 这个 负责任的披露程序 详细说明披露安全问题的程序.
什么是奥特?
Auth0是一个易于执行,可适应的认证和授权平台. 学习更多退房 为什么是Auth0?
这个项目根据Apache许可证2.0获得许可. 见 自由主义 需要更多信息的文件.