无法解析Jwt,好吧

时间:2019-02-18 13:01:52

标签: javascript jwt okta okta-api

我正在尝试在我的React App上设置Okta身份验证。 在客户端,我能够成功进行身份验证,并获得访问令牌。但是,当我尝试使用OktaJwtVerfier验证后端服务时,出现错误消息: 'Jwt无法解析。 SyntaxError:JSON中的意外令牌位于位置0'

我已经开发了一个非常简单的测试程序来测试令牌的验证,因此基本上我在浏览器上获得了身份验证,我将jwt令牌复制粘贴到了我的小脚本中以测试身份验证,但上面的消息失败了,我在做什么错了?

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);
})

1 个答案:

答案 0 :(得分:3)

@jps的评论正确。标头的值为#include <iostream> #include <sstream> std::istringstream& get_line() { std::cout << "enter: "; std::string line; std::getline(std::cin, line); std::istringstream* rv = new std::istringstream(line); // set the state of the stringstream to whatever state std::cin is in rv->setstate(std::cin.rdstate()); return *rv; // dereference } int main() { std::istringstream& line = get_line(); std::string a; while(line>> a) { // extract std::cout << a << "\n"; } delete &line; } ,其中Bearer XXXX是要解析的实际JWT字符串。

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

XXXX

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

您的代码可以进行如下修改:

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

const accessToken = match[1];