Auth0:托管的身份认证平台
FreeGuideOnline
最新
2026-07-03
bash npm install express express-openid-connect
```javascript
const { auth } = require('express-openid-connect');
const config = {
authRequired: false,
auth0Logout: true,
secret: '一个长随机字符串',
baseURL: 'https://your-app.com',
clientID: '你的 Client ID',
issuerBaseURL: 'https://你的域.auth0.com'
};
app.use(auth(config));
访问 /login 即可触发认证流程,登录成功后回调到应用,用户信息保存在 req.oidc.user 中。
深入登录流程:Authorization Code Flow
为什么选择授权码流程
对于有后端的 Web 应用,推荐使用 Authorization Code Flow(带 PKCE 增强)。流程简述:
- 用户点击登录,应用将用户重定向到 Auth0 的
/authorize端点。 - 用户输入凭证(或通过社交登录)。
- Auth0 重定向回你的回调 URL,并附上一个临时的授权码。
- 你的后端使用该授权码向 Auth0 的
/oauth/token端点请求访问令牌和ID 令牌。 - 后端验证令牌并建立用户会话。
这种方式确保了密钥(Client Secret)不会暴露在前端,安全性最高。
单页应用专属流程
对于纯前端应用,使用 Authorization Code Flow with PKCE,无需 Client Secret。SDK 会替你处理代码挑战和验证,安全换取令牌。
保护你的 API
验证访问令牌
你可以在任何后端服务中保护 API 端点,要求请求在 Authorization 头中携带有效的 Bearer 令牌。Auth0 提供的访问令牌通常是 JWT 格式。
以 Express 为例,使用 express-jwt 中间件:
const jwt = require('express-jwt');
const jwksRsa = require('jwks-rsa');
const checkJwt = jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: `https://你的域.auth0.com/.well-known/jwks.json`
}),
audience: '你的 API 标识符',
issuer: `https://你的域.auth0.com/`,
algorithms: ['RS256']
});
app.get('/api/private', checkJwt, (req, res) => {
res.json({ message: '受保护的数据', user: req.user });
});