Okta JWT 验证程序不工作

Okta JWT Verifier is not working

我想验证 OKTA 访问令牌。 我在 nodejs 中创建了一个简单的用例,但出现权限错误,而且我没有找到解决此问题的任何解决方案。 这是我的代码:

const OktaJwtVerifier = require('@okta/jwt-verifier');
const issuer = '{{url}}';
const cid = '{{clientid}}'

const oktaJwtVerifier = new OktaJwtVerifier({
  issuer: `http://${issuer}.com/oauth2/default`,
  assertClaims: {
    cid
  }
})

oktaJwtVerifier.verifyAccessToken("accesstoken")
  .then(jwt => {
    // the token is valid
    console.log(jwt.claims);
  })
  .catch(err => {
    console.log(JSON.stingify(err))
  });

我收到这个错误:

name: 'JwksError', message: { errorCode: 'E0000006', errorSummary: 'You do not have permission to perform the requested action', errorLink: 'E0000006', errorId: 'oaezeHaXzOCS9m4D5C5P9WnZA', errorCauses: [] } } }

我检查了 jwt-verifier github 页面,我认为它应该有效。

"default" 授权服务器还需要启用 API 访问管理功能标志。您有 API 访问管理吗?

检查: 转到 Okta 仪表板 > 安全 > API > 检查 "token" 选项卡旁边是否有名为 "Authorization servers" 的选项卡。

如果你不这样做:

  1. 如果您的组织。是一个预览组织。向 developers@okta.com 发送电子邮件给您的组织。 URL 他们会启用它
    1. 如果您的组织不是预览版,则必须购买。
    2. 或者,您可以使用 Okta 本身作为授权服务器 -> 因此发行者将是 "issuer: http://${issuer}.com" 而不是 "issuer: http://${issuer}.com/oauth2/default"

如果是最后一个的话: 您无法在本地验证令牌。 但是,您可以将令牌发送到 /introspect 端点以进行验证,或者使用来自 /userinfo

的令牌请求更多信息

您可以获得更多信息。以上来自开发者。okta.com