Git Product home page Git Product logo

Comments (6)

martindederer avatar martindederer commented on June 12, 2024

Do you have the libjansson-dev package (or similar) installed on your development system?

from jwt-cpp.

konstantin-doncov avatar konstantin-doncov commented on June 12, 2024

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:

  1. Get keys dictionary from this link
  2. Read kid field of the token
  3. Use kid field of the token as key for keys dictionary and get corresponding value. This is should be a public key
  4. 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.

konstantin-doncov avatar konstantin-doncov commented on June 12, 2024

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.

pokowaka avatar pokowaka commented on June 12, 2024

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.

pokowaka avatar pokowaka commented on June 12, 2024

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.

pokowaka avatar pokowaka commented on June 12, 2024

The library is no longer jannson

from jwt-cpp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.