zitadel 3.4.21

An implementation of ZITADEL API access and authentication in Rust.
Documentation
[package]
name = "zitadel"
description = "An implementation of ZITADEL API access and authentication in Rust."
version = "3.4.21"
edition = "2021"
license = "MIT OR Apache-2.0"
authors = ["Christoph Bühler <christoph@smartive.ch>"]
repository = "https://github.com/buehler/zitadel-rust"
keywords = ["ZITADEL", "gRPC", "clients", "authentication", "oidc"]
categories = ["authentication", "api-bindings"]
include = [
  "src/**/*.rs",
  "Cargo.toml",
  "LICENSE*",
  "README.md",
]

[features]
default = []

## The API feature enables the gRPC service clients to access the ZITADEL API.
api = ["dep:prost", "dep:prost-types", "dep:tonic", "dep:tonic-types", "dep:pbjson-types"]

## Feature that enables support for the [axum framework](https://docs.rs/axum/latest/axum/).
axum = ["credentials", "oidc", "dep:axum", "dep:axum-extra"]

## The credentials feature enables special credentials helpers for ZITADEL.
## For example, it allows the user to create a ZITADEL service account and
## authenticate against ZITADEL.
credentials = ["dep:jsonwebtoken", "dep:openidconnect", "dep:reqwest", "dep:serde", "dep:serde_json", "dep:serde_urlencoded", "dep:time"]

## The interceptors feature enables specific gRPC interceptors and
## new convenience functions to create a gRPC client with interceptors.
## The interceptors provide easy access to an authenticated ZITADEL API client.
## The interceptors work with the credentials from this crate.
interceptors = ["api", "credentials", "dep:time", "dep:tokio"]

## This feature enables caching of the OIDC discovery and introspection results.
## By default, only the in-memory cache is available. To use a different cache,
## enable specific features of this crate, or implement your own cache with
## the trait.
introspection_cache = ["dep:async-trait", "dep:time"]

## The OIDC module enables basic OIDC (OpenID Connect) features to communicate
## with ZITADEL. Two examples are the `discover` and `introspect` functions.
## The OIDC features are required for some of the web framework features.
oidc = ["credentials", "dep:base64-compat"]

## Feature that enables support for the [rocket framework](https://rocket.rs/).
## It enables authentication features for rocket in the form of route guards.
## Refer to the rocket module for more information.
rocket = ["credentials", "oidc", "dep:rocket"]

[dependencies]
async-trait = { version = "0.1.73", optional = true }
axum = { version = "0.6.20", optional = true, features = ["headers", "macros"] }
axum-extra = { version = "0.7.7", optional = true }
base64-compat = { version = "1", optional = true }
custom_error = "1.9.2"
document-features = { version = "0.2", optional = true }
jsonwebtoken = { version = "8.3.0", optional = true }
openidconnect = { version = "3.3.1", optional = true }
pbjson-types = { version = "0.5.1", optional = true }
prost = { version = "0.11", optional = true }
prost-types = { version = "0.11", optional = true }
reqwest = { version = "0.11.20", features = ["json", "rustls-tls"], default-features = false, optional = true }
rocket = { version = "0.5.0-rc.3", optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
serde_json = { version = "1.0", optional = true }
serde_urlencoded = { version = "0.7.1", optional = true }
time = { version = "0.3.28", optional = true }
tokio = { version = "1", optional = true, features = [
  "macros",
  "rt-multi-thread",
] }
tonic = { version = "0.9", features = [
  "tls",
  "tls-roots",
  "tls-roots-common",
], optional = true }
tonic-types = { version = "0.9", optional = true }

[dev-dependencies]
chrono = "0.4.30"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
tower = { version = "0.4.13" }

[package.metadata.docs.rs]
all-features = true