aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/jwt-cpp/README.md
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/jwt-cpp/README.md
downloadydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/jwt-cpp/README.md')
-rw-r--r--contrib/libs/jwt-cpp/README.md79
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
+
+[![Codacy Badge](https://api.codacy.com/project/badge/Grade/5f7055e294744901991fd0a1620b231d)](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