javascript - jwt无法解析,Okta

标签 javascript jwt okta okta-api

我正在尝试在我的 React 应用程序上设置 Okta 身份验证。 在客户端,我能够成功进行身份验证并获得访问 token 。但是,当我尝试使用 OktaJwtVerfier 对后端服务进行身份验证时,我收到错误消息: '无法解析 Jwt。 SyntaxError: JSON 中位置 0' 的意外标记

我开发了一个非常简单的测试程序来测试 token 的验证,所以基本上我在浏览器上进行了身份验证,我将 jwt token 复制粘贴到我的小脚本中以测试身份验证,但失败并显示上面的消息,我做错了什么?

const OktaJwtVerifier = require('@okta/jwt-verifier');


const oktaJwtVerifier = new OktaJwtVerifier({
    issuer: "https://dev-XXXXX.oktapreview.com/oauth2/default",
    clientId: "XXXXXX",
    assertClaims: {
        'aud': 'api://default',
        'cid': "XXXXXX",
    },
});


const accessToken = 'Bearer eyJraWQiO.....';


oktaJwtVerifier.verifyAccessToken(accessToken).then((jwt) => {
    console.log('auth succesfulll', jwt);
}).catch((e)=> {
    console.log(e);
})

最佳答案

@jps 的评论是正确的。您的 header 的值为 Bearer XXXX,其中 XXXX 是要解析的实际 JWT 字符串。

这是 Okta 项目的一个示例,说明他们如何在 Express 应用程序中执行此操作:

const authHeader = req.headers.authorization || '';
const match = authHeader.match(/Bearer (.+)/);
if (!match) {
  res.status(401);
  return next('Unauthorized');
}

const accessToken = match[1];

您可以在其完整上下文中查看代码 here.

您的代码可以修改如下:

const headerValue = 'Bearer eyJraWQiO.....';

const match = headerValue.match(/Bearer (.+)/);
if (!match) {
  throw new Error('your error message here')
}

const accessToken = match[1];

oktaJwtVerifier.verifyAccessToken(accessToken).then((jwt) => {
  console.log('auth succesfulll', jwt);
}).catch((e)=> {
  console.log(e);
})

关于javascript - jwt无法解析,Okta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54747947/

相关文章:

php - Openinviter 不使用 php 导入 Hotmail 的联系人

javascript - 如何在 ReactJS 中对 JSON 数据进行排序

PHP JWT token 无效签名

reactjs - 如何正确使用 Webflux、Spring-Security、okta-spring-boot-starter 和 Okta-React 的 CORS?

java - 如何使用 Java 重新验证已在 Okta 应用程序下登录的用户?

javascript - 应用程序版本验证的 RegExp 应该是什么?

javascript - "Sticky rows"用于 jquery 表排序器

java - 我们可以在一个项目中同时使用Java Spring mvc和Spring Boot吗?

django - DRF JWT 在 OPTIONS 请求上不需要 token

python - SAML AuthnRequest 的 XML 命名空间重要吗?