Невозможно проверить токен на внешнем интерфейсе, хотя тот же самый код работает в runkit
У меня есть веб-токен, сгенерированный aws cognito, и мне нужно проверить его во внешнем интерфейсе. У меня есть следующий работающий в runkit и код выглядит следующим образом:
var jwkToPem = require("jwk-to-pem");
var jwt = require('jsonwebtoken');
var jwk = {"alg": "RS256", "e": "AQAB", "kid": "CzjlDgPfaQSg/7VYDK/owSdzuUrug2PWlxiAIs+EVUs=", "kty": "RSA", "n": "sOvlXPzZDe-f54IFyj3bkrgHHVA0ZJ-GAYJfALp7WPXeaLdXh6i4sUi2_-POXUyF09771ef-Jv_B2JYodLlCttJK4AnjTrGKkWN-OnWy2Xl40P7FzMbenfvbIB_pxWJ4q6t-jphS7A9F7WH-wdOJSYfNgZIdLcf8bBf8683USJi2r6c-hT9T6WgVySPCSx3YZcFYPLw0Zem7bJ2MCkqD64QBZEf3HV5HgkQHk30WSPjVMPgG_xQfpwCjtjCdEd5-RmDKqn23i94_lbQ3u1UnTEEy2w8IxD8PJazVIaPknAf_idOJ0eowf3XYvZHq_zY14kQPq4X80uHOFgzLte6uPw", "use": "sig"};
var pem = jwkToPem(jwk);
console.log("PEM: #########################################");
console.log(pem);
token = "eyJraWQiOiJDempsRGdQZmFRU2dcLzdWWURLXC9vd1NkenVVcnVnMlBXbHhpQUlzK0VWVXM9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlN2U1NmQ5MS0yNjc2LTQ5ZTMtYjAxOC1kZDQ0ZDcwZDYwYmMiLCJhdWQiOiIyNmZwMWZlaGV0Zm81dXFnZjFmMDJ2N2oxaSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6ImE1MmI4YzU4LTM4YzQtMTFlOC1iMzE2LTczZjZiMTY4NDllZSIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNTIyOTI3Nzg3LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9sOUZvZTJycVoiLCJjb2duaXRvOnVzZXJuYW1lIjoiZTdlNTZkOTEtMjY3Ni00OWUzLWIwMTgtZGQ0NGQ3MGQ2MGJjIiwiZXhwIjoxNTIyOTMxMzg3LCJjdXN0b206VEpBY2Nlc3MiOiJUcnVlIiwiaWF0IjoxNTIyOTI3Nzg3LCJlbWFpbCI6ImtlZWxpbmcuYWxleGFuZGVyQGJydW5zd2lja25ld3MuY29tIn0.DYPPwkR6a2jzL5KE_MxlST1KWwCrSAK-H283qeJPnW9o4EOvTUuya0O5FTkvKljGAR-qcgkwsOMBmF9zMcN_6SHCAFIoSVMOq9Rh3kArNx9uc2g50vichSlKZROtJ1FDVqRU4I0qvcTOTBFnOrrMrSbI-2QkOVJPha1Xgj3e94B2eFxeYOkV_LoN4DIDpgYc24_hQePI8rHuS5cDFG-vVouROTG8JNWCJtCxSMStdFGATcZGAeEDo6WhGIvWimQvdKBf6gaw8d-e8f4AW1JJIr1lkbbsixEnChRKseG-4tXUpKKtGg7QNTD96o3JRHuHTPftCksCyxvCMF2Ngsny8Q";
console.log(jwt.verify(token, pem))
Теперь, когда я использую следующий код, который является упрощенной версией выше:
var jwt = require('jsonwebtoken');
var pem = "public key";
console.log("PEM: #########################################");
console.log(pem);
var token = "eyJraWQiOiJDempsRGdQZmFRU2dcLzdWWURLXC9vd1NkenVVcnVnMlBXbHhpQUlzK0VWVXM9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlN2U1NmQ5MS0yNjc2LTQ5ZTMtYjAxOC1kZDQ0ZDcwZDYwYmMiLCJhdWQiOiIyNmZwMWZlaGV0Zm81dXFnZjFmMDJ2N2oxaSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6ImE1MmI4YzU4LTM4YzQtMTFlOC1iMzE2LTczZjZiMTY4NDllZSIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNTIyOTI3Nzg3LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV9sOUZvZTJycVoiLCJjb2duaXRvOnVzZXJuYW1lIjoiZTdlNTZkOTEtMjY3Ni00OWUzLWIwMTgtZGQ0NGQ3MGQ2MGJjIiwiZXhwIjoxNTIyOTMxMzg3LCJjdXN0b206VEpBY2Nlc3MiOiJUcnVlIiwiaWF0IjoxNTIyOTI3Nzg3LCJlbWFpbCI6ImtlZWxpbmcuYWxleGFuZGVyQGJydW5zd2lja25ld3MuY29tIn0.DYPPwkR6a2jzL5KE_MxlST1KWwCrSAK-H283qeJPnW9o4EOvTUuya0O5FTkvKljGAR-qcgkwsOMBmF9zMcN_6SHCAFIoSVMOq9Rh3kArNx9uc2g50vichSlKZROtJ1FDVqRU4I0qvcTOTBFnOrrMrSbI-2QkOVJPha1Xgj3e94B2eFxeYOkV_LoN4DIDpgYc24_hQePI8rHuS5cDFG-vVouROTG8JNWCJtCxSMStdFGATcZGAeEDo6WhGIvWimQvdKBf6gaw8d-e8f4AW1JJIr1lkbbsixEnChRKseG-4tXUpKKtGg7QNTD96o3JRHuHTPftCksCyxvCMF2Ngsny8Q";
console.log(jwt.verify(token, pem));
Я получаю следующую ошибку в консоли моего браузера:
bundle.js:57587 Uncaught Error: sorry, createVerify is not implemented yet
we accept pull requests
в чем проблема? выполнимо ли вообще делать проверку на переднем конце? если да, можете ли вы пролить свет на это? Есть идеи, есть ли альтернативный способ? Или даже обычно проверяют токен в переднем конце?