Comments (6)
Do you have the libjansson-dev package (or similar) installed on your development system?
from jwt-cpp.
Yes, I had this library, but the problem probably in Qt - I deleted some statements in .pro file and then tried to bring them back, now all fine. I did not want to write until I understood exactly, so, sorry for the delay. But now I came to another misunderstanding (just don't want to raise your "issues" with non-issues, so, if you do not mind, I'll post it here): I want to use your library for Firebase token verification, as I understood, for this I need to do next:
- Get keys dictionary from this link
- Read
kid
field of the token - Use
kid
field of the token as key for keys dictionary and get corresponding value. This is should be a public key - Verify token using this public key
As I also understood, there is an another way which you used in your library: we can put ALL dictionary in the json message validator
and JWT::Decode
will do all what we need. But not everything is so good: if I just will put Google dictionary as follows:
std::string JSON_VALIDATORS =
"{ \"set\" : [ "
" { \"RS256\" : { \"70a762492bfb611b371c0a1ffbd9efa473c9ecc0\" : \"MIIDHDCCAgSgAwIBAgIIAPBNQDY/y1cwDQYJKoZIhvcNAQEFBQAwMTEvMC0GA1UE\nAxMmc2VjdXJldG9rZW4uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wHhcNMTcw\nNzI1MDA0NTI2WhcNMTcwNzI4MDExNTI2WjAxMS8wLQYDVQQDEyZzZWN1cmV0b2tl\nbi5zeXN0ZW0uZ3NlcnZpY2VhY2NvdW50LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAM1/3B6VhD71iA7lTzRB/KhslCFeMY5YmiKQcD1UNhHYJ60k\nq+tozMMU0VEJF3Qmui2FzgYVBvquvUYNyHgVqVh6k5vdBAoSukWwIgKKtuHcFh1M\naG2mU63u2eKkmxGansokb+hVwfulraEGDT7rlukVHPcCU4oQwcY3mea1a+jFjntb\nRv92qTAAK8mJEaAfPiFXoQBt5ZhjPITSCJvXDkdxMicQrxxtOOz2HCHX1nY2A9t0\nl87+PWTMGcASEsFs0C4PhTI2wRjlhvhdto2q3DGJbTysBzFk31QxH1WjHFDi8y6P\ng87uhB96XFFaNJ+aYrORkDxCEIitfBIgCShtI7MCAwEAAaM4MDYwDAYDVR0TAQH/\nBAIwADAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJ\nKoZIhvcNAQEFBQADggEBALnKIZsbEsntTmFOvC8cYAdUYy42icd1LNTOmhfpAUac\nAZjkXM4cIbXniY9g8S8W6ElCp/wuti8H6GZ9y+1WsCqXRRc+E5fpJE6pz26izhKS\nPKlS5vL8/qUCt3phHB+aW7OBboDmZLGWjp0x+bnh1B0SXHQgnr98Dar+/JsORYw7\nW5VF2AzaeIezXHSYSZo/N7z+CCX8vy+Zae6v+3jaBN3sDopjBU0+k6ytMIU3G9o2\nGZfLvNnGsBE64IDLtwoNMZ1clioI32BkzIRu04yj4gGN1ao3Hag7RiIZdfcxV1Aa\nWBZB8S3kqp8WYQi8bOvyR0itYD9tTY1kYyyhDfi8HIc=\" } }, "
" { \"RS256\" : { \"c796ac2a25d486d1a281ada882c4741ae1567957\" : \"MIIDHDCCAgSgAwIBAgIINg63FEqexA0wDQYJKoZIhvcNAQEFBQAwMTEvMC0GA1UE\nAxMmc2VjdXJldG9rZW4uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wHhcNMTcw\nNzIzMDA0NTI2WhcNMTcwNzI2MDExNTI2WjAxMS8wLQYDVQQDEyZzZWN1cmV0b2tl\nbi5zeXN0ZW0uZ3NlcnZpY2VhY2NvdW50LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAJNinfl97yB1YtYdSGmD9DKxakGH0wK4dAZUJG+s1mauJM3S\nIyiNEWkXVH/EJB3FGhZuWTjcG4DXh1B8L7dnVhZ2E4JPyhUxOcXbSqB5ZwjkwbwN\npJOidGOVX2QsZkOxY5qS0X73sZAel5bpUJUwf+JIyOqZ9NfX78lcbYeZ7fE2gUN2\nSk/jU6ZPDkd+0daKzdbmK4ApUcOEl5N+5SwSrI9fRrMG0HqXll8HJcVSRtjUG/CA\n04jBaPwKfTmUuVA5/StaxAW7So9Y6lO3lG6JcmCxPepP5D3MKnFryTekc9mEy23l\nwsYOuGLcNu3vHFnG3k42K81x2S9pym+X1uKI7GUCAwEAAaM4MDYwDAYDVR0TAQH/\nBAIwADAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJ\nKoZIhvcNAQEFBQADggEBAB4wMB7WVMl/OrBYdmrkJ80odi0uFSI5K7X/IxG8k31z\nh+3ZtX6mMMUxXqNKv7VNiJ8k6hrbc1XwhLAFm2XaIb/i/z7SjbKP2oBLv/QRT1Wi\n4pc7Kva0FXdPzpFHsHe5WpLD7Ur6VbL4/Itwn7AthEhmnHCt1UfRGNyWf+rSgZDT\nXmjB+WeYndHP/9NRMF4y55WpTkdxnk0t2SpyqHfGtvKW9QzLqzpH0Ja5u+zxFqZT\nzOlPeYCO8XRSXSvXJlNpq1BI2t+sq9If7EXhbdGXHOw9YdzrOJYBPHbjh2omVhcn\ngKRaSvKLRloSog6bhL26yB3ISt9rDCPopV8+33FVYiY=\" } }, "
" { \"RS256\" : { \"d3576b4458bb6fa5870bc997d10d7d738dd483ff\" : \"MIIDHDCCAgSgAwIBAgIIL2OAbSxKt98wDQYJKoZIhvcNAQEFBQAwMTEvMC0GA1UE\nAxMmc2VjdXJldG9rZW4uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wHhcNMTcw\nNzI0MDA0NTI2WhcNMTcwNzI3MDExNTI2WjAxMS8wLQYDVQQDEyZzZWN1cmV0b2tl\nbi5zeXN0ZW0uZ3NlcnZpY2VhY2NvdW50LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAIz9m467yLxK4kY5JjDCSQgmAyQhCCfXL7ZU1Ou0vUM7ijI0\ndNdshIPrz4NuNiW9FNLMeV/IlqPFaiHmWq3BGJGXaZTKzDQ78y9K2Q91YuUjhV1p\nIbTNWsYz93zo7mCRVmNCjjISDKV1Li8uTHZEIy42l40HgGkB/LtI2pQpPehoyTER\nu4C7xD+rWypQskI8OvHT5CNk0D12ZIVB4D9eVgp9BDco7UaeAoBVLfZWSDzu+cKs\nNDiDeXpPWB9C1QGJ3nkoJ+prFNoB6wsWPYknNblDgjLFVj13K0aQX1EVZRtvnn9e\nMwBIcAFAIuGDpaA4ciCmDXRZLgA1yNx9S3WhhJkCAwEAAaM4MDYwDAYDVR0TAQH/\nBAIwADAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJ\nKoZIhvcNAQEFBQADggEBABFVjlZY1tPB7+tN4WOnzGUmkQt191n/voP8Oz7MCJg6\nU6C72/Uk01oFvAZ+9IbN23zIqYFRxUqo1rmWUv4ku2+u8PqvhxuvGnGd5h3Sr4sN\nAdAw/VxtFYprV4cHn6IsMSZgX99lrTyaqjT7KPNBWHKrgu99iAeO1MWPQt0qHCFW\nsCb4CG/55CEBWqWWCi/xoOzFDfYatlkHUuhMl8XQH/vkYPb/N/1Xl/iQ8gXpo9BU\nddV3i9PXCT+X9xcGx4udrBUBDGmB7QuxdYkbHF48QRYQO+kiRsugZcYCiPW8lRX0\nTAmaA+OLJcEsk+MXFJRONmLBkkEMznrg5aTIy5AcEAw=\" } }, "
" { \"RS256\" : { \"298704e844bc6d9842b7742d123792a9fc53cefd\" : \"MIIDHDCCAgSgAwIBAgIIaf3mz/CwobUwDQYJKoZIhvcNAQEFBQAwMTEvMC0GA1UE\nAxMmc2VjdXJldG9rZW4uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wHhcNMTcw\nNzI2MDA0NTI2WhcNMTcwNzI5MDExNTI2WjAxMS8wLQYDVQQDEyZzZWN1cmV0b2tl\nbi5zeXN0ZW0uZ3NlcnZpY2VhY2NvdW50LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBALVso9L1xazbrgWSgSaol+84vXRw1X/M4EcywlfIQDBoLhOB\ngbC3SABE9iceXMxTARlxRMIs18584ZM2f3bY1ocWNsbL/Of1Yolf3YIyStjcn1k0\nk1zmo6kVebaFAYVl21rsQtnZ1snrC3vSLQ4mlgMwmDTc/j52IcP1h50eWksVtkVh\n4tIqK06KYxAq0cLDsfdb+sYyi2dCI2HAxRpF6HxPXrN8lYXgUbnrMfQwFadaXkO0\nPqUQwGC5K1kQgMnwVOjWe6bYSNUYQG7LF6jvS2+h4cHLFqos2VDi1L/zhAQgvQJc\njjedHCUfHD2FbdrM/woiOUsI93XwRQl7T285/UUCAwEAAaM4MDYwDAYDVR0TAQH/\nBAIwADAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJ\nKoZIhvcNAQEFBQADggEBAFT5oiPQ0ehouVInB4reaGEFCVzfg+mvBGH/n8UTLwd3\ntZ3VOj9lIIA2GlT6M6FPA9GU2OXHNo2aWPO2rpjQVee9g0fSS9lJiGGdb5jrZMkI\nwkSZW4/YIo7otydjadI5CYQXaplTqQVj6C+OCRWgMOQ/YkanUIiQVqno8IzoWSEk\n9F51DIYcChI88NNgkcrkQAukf8z8pBldoTM+3JqTjwuSr33ZW7wFjUQfCOr17AAl\n+xGihBVfAilJXjsDnIrNRipgWMheD2t6geIX/Zzi2RUlC0YbOAH9mtNZwzSbe5j3\nJ+cLX2iWoH/UgtLi7j7DZMKB1c7bdExJWWqyTr7Qsa0=\" } } "
" ]"
"}";
Then I will get:
terminate called after throwing an instance of 'std::logic_error'
what(): Failed to parse JSON: unexpected newline, at line: 1, col: 138
Then I tried to remove all \n
chars and got this:
terminate called after throwing an instance of 'std::logic_error'
what(): Json error inside: parsing secret, property: public is missing from:
So, what I should to do for verifying Firebase token?
from jwt-cpp.
Now I understood that I need to use kid
, but I can't use kid
with the public key:
const char *json = "{ \"kid\" : { "
"\"key1\" : { \"RS256\" : { \"public\" : \"key1\" } }, "
"\"key2\" : { \"RS256\" : { \"public\" : \"key2\" } }, "
"\"key3\" : { \"RS256\" : { \"public\" : \"key3\" } } "
"} }";
validator_ptr validator(MessageValidatorFactory::Build(json));
Leads to:
terminate called after throwing an instance of 'std::logic_error'
what(): Json error inside: error:0906D06C:lib(9):func(109):reason(108)
So, how can I fix it or what can I use as an alternative?
from jwt-cpp.
The set one is ill formatted json. I will add a unit test to validate the last one. Note, I'm rewriting the library to get rid of jansson.
from jwt-cpp.
The cryptic error indicates that RSA validator does not understand that "key1" is an actual key. For rsa this needs to be a PEM formatted string. See https://support.quovadisglobal.com/kb/a37/what-is-pem-format.aspx
from jwt-cpp.
The library is no longer jannson
from jwt-cpp.
Related Issues (20)
- Nested jwt
- header only? HOT 1
- Possibility to bundle your own nlohmann/json
- OPENSSL_LIBRARIES variable required for non-mac users
- defined reference to `typeinfo for HMACValidator'.... HOT 4
- Support that the last character in the jwt token is \n HOT 2
- Link error on linux HOT 2
- jwt.ccp char array HOT 2
- Update Nholmann Json to latest official release
- Use standard cmake module FindOpenSSL.cmake to find OpenSSL HOT 7
- Please create a new Release version of latest master HOT 2
- vs2015 link error HOT 2
- generate windows dll but can not export lib file
- CMakeList error for windows compile HOT 2
- Boost Software License? HOT 4
- Visual Studio 2015 Link Error HOT 1
- Link error on linux, undefined reference to RS256Validator::RS256Validator HOT 2
- Decode does not work for arm64 architecture android devices
- integrate with Yocto build
- OpenSSL 3.x support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jwt-cpp.