Как просмотреть данные, хранящиеся в JWT? Использование auth0 и express-jwt
Сейчас я верю, что у меня все настроено правильно. Auth0 сохраняет jwt клиенту, который затем использует его для будущих запросов. Я использую экспресс-JWT для проверки токена. Из чтения документов Auth0 я думаю, что мне нужен секрет клиента (когда я использую его для декодирования jwt, я получаю странную ошибку: UnauthorizedError: error:0906D06C:PEM routines:PEM_read_bio:no start line
) Так что мне просто интересно, откуда взялся этот секретный ключ? Спасибо
Текущий код, который просто декодирует JWT в схему подписи и т.д.:
const jwtCheck = jwt({ secret: jwks.expressJwtSecret({ cache: true, rateLimit: true, jwksRequestsPerMinute: 5, jwksUri: ' https://xelitexirish.eu.auth0.com/.well-known/jwks.json' }), audience: ' https://www.shaunoneill.com', issuer: ' https://xelitexirish.eu.auth0.com/', algorithms: ['RS256'] });
2 ответа
Основываясь на комментарии из OP, чтобы прочитать значения тела JWT, просто base64 расшифруйте его. Вы можете использовать библиотеку для этого, например, jwt- decode для nodejs.
Смотрите пример использования ниже (взят из README для lib):
var jwtDecode = require('jwt-decode');
var token = 'eyJ0eXAiO.../// jwt token';
var decoded = jwtDecode(token);
console.log(decoded);
/* prints:
* { foo: "bar",
* exp: 1393286893,
* iat: 1393268893 }
*/
Заявки, которые будут в вашем токене (здесь, ссылаясь на идентификационный токен), зависят от того, что scope
Вы предоставили, когда вы заверяли. Например, если вы используете scope: openid profile email
Вы получите все, что вернулось в вашем токене.
Здесь, предположим, что JWT был проверен с использованием библиотеки, и теперь у вас есть JWT, который вы хотели бы прочитать, если его утверждения из тела.
Если вы используете промежуточное программное обеспечение express-jwt, то полезная нагрузка по умолчанию сохраняется в объекте запроса, и вы можете получить к нему доступ следующим образом request.user
Пример для конечной точки:
//jwtMiddleware is express-jwt middleware
app.get('/', jwtMiddleware, function (req, res) {
console.log(req.user);
res.send('hello world');
});