用途:该技能用于在浏览器单页应用(SPA)中启用 DPoP(Demonstrating Proof-of-Possession,RFC 9449),将访问令牌加密绑定到客户端持有的密钥对。每个 API 请求附带一个短时签名的 JWT(DPoP proof)证明发送方持有私钥,因此单独窃取的令牌无法被攻击者重放。
主要能力:通过 SDK 选项 useDpop: true 自动生成 DPoP proof;使用 createFetcher() 替代手动附加令牌,SDK 自动处理 proof 生成、nonce 管理与请求头注入;处理 UseDpopNonceError(服务器中途轮换 nonce 时抛出,需用新 nonce 重试)。支持 @auth0/auth0-vue、@auth0/auth0-react、@auth0/auth0-angular、@auth0/auth0-spa-js。
使用方式:先在 Auth0 Dashboard 的 Applications → APIs 确认 API identifier 与 audience 匹配,或通过 Auth0 CLI 为资源服务器启用 DPoP 令牌方言:auth0 api get "resource-servers" 查看配置,auth0 api patch "resource-servers/{API_ID}" --data '{"token_dialect": "access_token_authz"}' 启用。然后在应用配置中加入 useDpop: true 并设置 audience,改用 createFetcher(),并在 .env 中提供 VITE_AUTH0_DOMAIN、VITE_AUTH0_CLIENT_ID、VITE_AUTH0_AUDIENCE。生产环境必须使用 HTTPS。
适用场景:保护高价值 API 调用免受令牌窃取与重放攻击;满足要求发送方约束令牌的安全或合规需求;任何调用受保护 Auth0 API 且需要更高安全性的 SPA。
限制:不适用于 SSR/服务端环境(如 Next.js、Nuxt),因私钥需保存在浏览器中;目标 API 资源服务器必须配置为接受 DPoP 令牌方言,仅支持 Bearer 的 API 会拒绝 DPoP proof;令牌绑定单个密钥对,无法转发或供其他客户端复用。所需前置条件:支持 DPoP 的 Auth0 租户、启用 DPoP 方言的 API 资源服务器、上述任一浏览器 SDK、生产环境 HTTPS。