An open API service indexing awesome lists of open source software.

https://github.com/aircastdev/nats-jwt

JWT library for creating NATS JWTs in Rust
https://github.com/aircastdev/nats-jwt

jwt nats rust

Last synced: 6 months ago
JSON representation

JWT library for creating NATS JWTs in Rust

Awesome Lists containing this project

README

        

# NATS JWT (Rust)

![Crates.io](https://img.shields.io/crates/l/nats-jwt)
[![Crates.io](https://img.shields.io/crates/v/nats-jwt)](https://crates.io/crates/nats-jwt)
[![Docs.rs](https://docs.rs/nats-jwt/badge.svg)](https://docs.rs/nats-jwt)

Generate JWTs signed using NKEYs for use with [NATS](https://nats.io)

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.

## Example

```rust
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);
```

## License

Licensed under either of

- Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.

## Contribution

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.