diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/jwt-cpp/README.md | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/jwt-cpp/README.md')
-rw-r--r-- | contrib/libs/jwt-cpp/README.md | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/contrib/libs/jwt-cpp/README.md b/contrib/libs/jwt-cpp/README.md new file mode 100644 index 00000000000..5dcdd10c518 --- /dev/null +++ b/contrib/libs/jwt-cpp/README.md @@ -0,0 +1,79 @@ +# jwt-cpp + +[](https://app.codacy.com/app/Thalhammer/jwt-cpp?utm_source=github.com&utm_medium=referral&utm_content=Thalhammer/jwt-cpp&utm_campaign=Badge_Grade_Settings) + +A header only library for creating and validating json web tokens in c++. + +## Signature algorithms +As of version 0.2.0 jwt-cpp supports all algorithms defined by the spec. The modular design of jwt-cpp allows one to add additional algorithms without any problems. If you need any feel free to open a pull request. +For the sake of completeness, here is a list of all supported algorithms: +* HS256 +* HS384 +* HS512 +* RS256 +* RS384 +* RS512 +* ES256 +* ES384 +* ES512 +* PS256 +* PS384 +* PS512 + +## Examples +Simple example of decoding a token and printing all claims: +```c++ +#include <jwt-cpp/jwt.h> +#include <iostream> + +int main(int argc, const char** argv) { + std::string token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE"; + auto decoded = jwt::decode(token); + + for(auto& e : decoded.get_payload_claims()) + std::cout << e.first << " = " << e.second.to_json() << std::endl; +} +``` + +In order to verify a token you first build a verifier and use it to verify a decoded token. +```c++ +auto verifier = jwt::verify() + .allow_algorithm(jwt::algorithm::hs256{ "secret" }) + .with_issuer("auth0"); + +verifier.verify(decoded_token); +``` +The created verifier is stateless so you can reuse it for different tokens. + +Creating a token (and signing) is equally easy. +```c++ +auto token = jwt::create() + .set_issuer("auth0") + .set_type("JWS") + .set_payload_claim("sample", std::string("test")) + .sign(jwt::algorithm::hs256{"secret"}); +``` + +## Contributing +If you have an improvement or found a bug feel free to [open an issue](https://github.com/Thalhammer/jwt-cpp/issues/new) or add the change and create a pull request. If you file a bug please make sure to include as much information about your environment (compiler version, etc.) as possible to help reproduce the issue. If you add a new feature please make sure to also include test cases for it. + +## Dependencies +In order to use jwt-cpp you need the following tools. +* libcrypto (openssl or compatible) +* a compiler supporting at least c++11 +* basic stl support + +In order to build the test cases you also need +* gtest installed in linker path +* pthread + +## Troubleshooting +#### Missing _HMAC amd _EVP_sha256 symbols on Mac +There seems to exists a problem with the included openssl library of MacOS. Make sure you link to one provided by brew. +See [here](https://github.com/Thalhammer/jwt-cpp/issues/6) for more details. +#### Building on windows fails with syntax errors +The header "Windows.h", which is often included in windowsprojects, defines macros for MIN and MAX which screw up std::numeric_limits. +See [here](https://github.com/Thalhammer/jwt-cpp/issues/5) for more details. To fix this do one of the following things: +* define NOMINMAX, which suppresses this behaviour +* include this library before you include windows.h +* place ```#undef max``` and ```#undef min``` before you include this library |