Laravel7 Passport:尝试将请求发送到“api/user”时获取“未定义索引:aud”

Posted

技术标签:

【中文标题】Laravel7 Passport:尝试将请求发送到“api/user”时获取“未定义索引:aud”【英文标题】:Laravel7 Passport: Getting "Undefined index: aud" when trying to send the request to "api/user" 【发布时间】:2020-08-21 07:34:08 【问题描述】:

我正在使用 Laravel 7 和 Vue 2 以及 Passport。我正在尝试访问 api/user 端点,但收到此错误。

注意:我已经完成了https://laravel.com/docs/7.x/passport 中提到的所有护照实施过程。但仍然出现此错误。

我的 Vue 组件中的 api 调用:

created() 
   axios.get("/api/user")
      .then(res => console.log(res.data))
      .catch(err => console.log(err))

错误:

这个问题有什么解决办法吗?

【问题讨论】:

问题已修复 laravel 护照版本 9.0.1 ***.com/a/61650784/4257737 【参考方案1】:

升级到护照版本 9.0.1 解决了这个问题。

【讨论】:

【参考方案2】:

服务器代码需要 "aud" ("audience") token,但未提供:

OIDC 除了访问令牌之外还有 ID 令牌。 OIDC 规范明确说明了在 ID 令牌中使用 aud 声明。 (openid-connect-core-1.0)

音频

必填。此 ID 令牌的目标受众。它必须包含作为受众的依赖方的 OAuth 2.0 client_id 价值。它还可以包含其他受众的标识符。在里面 一般情况下,aud 值是一个区分大小写的字符串数组。在 有一个观众时的常见特殊情况,aud 值 MAY 是一个区分大小写的字符串。

此外,代码中没有 array_key_exists() 签入以优雅地处理丢失令牌的情况。

如果您无法提供所需信息,上述答案建议了一些解决方法。

【讨论】:

【参考方案3】:

如我所见,它与 Passport (v9) 的最新版本有关。尝试使用 8.5 版本以确保并检查并查看此处https://github.com/laravel/passport

【讨论】:

以上是关于Laravel7 Passport:尝试将请求发送到“api/user”时获取“未定义索引:aud”的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Passport:发送令牌请求时的附加模型条件

使用 Passport 通过 Facebook 进行身份验证不起作用

如何使用passport-jwt在nodejs中发送/提取JWT令牌?

使用 Nuxt 前端实现 Laravel 7 Passport 身份验证

在发布路线上使用 nodemailer 发送电子邮件并使用 passport.authenticate 将用户保存到 mongodb

Angular 7未根据请求发送正确的标头