php Auth0“JWT字符串必须包含两个点”

eoigrqb6  于 2022-12-10  发布在  PHP
关注(0)|答案(2)|浏览(420)

我目前使用的是Vue 3,并且已经集成了来自https://github.com/auth0/auth0-spa-js的Auth 0-spa-js。
我通过Axios向PHP API后端发送请求,并将访问令牌作为GET参数token传入。
服务器端我得到一个异常“JWT字符串必须包含两个点”后,设置步骤从https://github.com/auth0/auth0-PHP。我已经安装了要求,guzzle和dotenv等。目前在PHP 7.4.2。
第一个
在创建与Auth 0 PHP SDK不兼容的令牌时,auth 0-spa-js是否存在问题,或者是否没有传递需要添加的配置设置?我已经按照这两个文档的规定进行了基本配置,并对预期变量进行了双重检查。

qvtsj1bj

qvtsj1bj1#

结果我需要将audience参数添加到createAuth0Client、getTokenSilently()和我的Auth0自定义API的PHPSDK解码方法中。
我一定是在文档中遗漏了什么,或者看起来听众参数更像是一个必需的而不是可选的值。

4uqofj5v

4uqofj5v2#

添加到Brian Barton's answer aboveGetTokenSilentlyOptions interface解释了应按如下方式传递选项:

// ✅ Like this!
const token = await this.$auth.getTokenSilently({
  authorizationParams: {
    audience: 'https://api.example.com/',
  },
})

// ❌ NOT like this (where I got stuck for a while)
const token = await this.$auth.getTokenSilently({
  audience: 'https://api.example.com/',
})

对我来说,这并不明显,额外的外部对象结构是必要的,所以我不明白为什么我不能让他们的解决方案工作。

其他上下文

这与您在服务器端拥有什么无关,而与您的SPA如何在Authorization Code Flow with Proof Key for Code Exchange (PKCE)之后检索您的JWT令牌(如果您从SPA访问API,则应该使用该流)有关。
我最终找到了这个答案,因为当我未能正确设置audience参数时,Auth0并没有发出任何错误的信号。它返回了一个不是格式良好的JWT的“标记”。在我的例子中,它总是有四个或五个点(句点),而实际上应该是两个。

相关问题