验证Auth0 JWT是否需创建API?audience该如何选择?
关于Auth0中API、audience与JWT验证的疑问解答
先理清核心概念
- Auth0里的「API」本质是受保护资源的标识载体,它的唯一标识符(你设置的
foo)就是audience值,用来告诉Auth0:我要生成的Access Token是给哪个资源用的。 audience是JWT里的标准字段,后端验证时会校验这个字段,确保Token是专门发给自己的,防止被滥用在其他服务上。
问题1:验证JWT凭证是否必须创建API?
必须创建。原因如下:
- Auth0不允许随便用未注册的字符串当
audience(你试了bar登录失败就是这个原因),只有在Auth0后台注册过的API标识符,才是合法的audience值。 - 你之前没关联SPA和API也能验证,是因为Auth0只要检测到
audience是已注册的API标识符,就会生成对应Token——不过生产环境建议给API授权对应的应用,避免无关应用拿到这个audience的Token,提升安全性。 - 不创建API的话,后端的
express-oauth2-jwt-bearer根本找不到合法的audience来校验Token的有效性。
问题2:若不需要,可使用什么作为audience?
没有“不需要创建API”的合法替代方案,但你可能误解了「使用API」的意思:
- 这个Auth0 API不需要配置任何权限,也不需要复杂设置,它的核心作用就是提供一个合法的
audience标识。 - 如果你尝试用客户端ID当
audience,确实能验证前端不带audience时获取的ID Token,但这是错误用法:ID Token是给前端用来确认用户身份的,不能用来访问后端资源,后端应该验证的是带自定义API audience的Access Token。
内容的提问来源于stack exchange,提问作者Steve Bennett
相关产品推荐
相关产品推荐

