Crates.io | nats-jwt |
lib.rs | nats-jwt |
version | 0.3.0 |
source | src |
created_at | 2021-07-25 12:40:46.344104 |
updated_at | 2024-06-11 21:53:31.263761 |
description | JWT library for creating NATS JWTs |
homepage | |
repository | https://github.com/AircastDev/nats-jwt |
max_upload_size | |
id | 427061 |
size | 47,397 |
Generate JWTs signed using NKEYs for use with NATS
Supports generating account and user JWTs, operator JWTs are not typically generated on the fly and so aren't supported, although a PR adding support would be accepted.
use nats_jwt::{KeyPair, Token};
// You would probably load the operator's seed via a config and use KeyPair::from_seed
let operator_signing_key = KeyPair::new_operator();
let account_keypair = KeyPair::new_account();
let account_signing_key = KeyPair::new_account();
let account_token = Token::new_account(account_keypair.public_key())
.name("My Account")
.add_signing_key(account_signing_key.public_key())
.max_connections(100)
.sign(&operator_signing_key);
println!("account_token: {}", account_token);
let user_keypair = KeyPair::new_user();
let user_key_pub = user_keypair.public_key();
let user_token = Token::new_user(account_keypair.public_key(), user_key_pub)
.bearer_token(true)
.name("My User")
.max_subscriptions(10)
.max_payload(1024 * 1024) // 1MiB
.allow_publish("service.hello.world")
.allow_subscribe("_INBOX.>")
.sign(&account_signing_key);
println!("user_token: {}", user_token);
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.