JWT не может быть проанализирован, Okta - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь настроить аутентификацию Okta в своем приложении React.На клиентской стороне я могу успешно пройти аутентификацию и получить токен доступа.Однако, когда я пытаюсь аутентифицировать бэкэнд-сервис, используя 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 голосов
/ 18 февраля 2019

Комментарий @jps правильный.Ваш заголовок имеет значение 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];

Вы можете увидеть код в полном контексте здесь.

Ваш код может быть изменен следующим образом:

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