| Crates.io | openfga-client |
| lib.rs | openfga-client |
| version | 0.5.1 |
| created_at | 2025-02-25 19:49:26.025906+00 |
| updated_at | 2026-01-06 07:18:51.782304+00 |
| description | Type-safe client SDK for OpenFGA with optional Authorization Model management and Authentication (Bearer or Client Credentials). |
| homepage | |
| repository | https://github.com/vakamo-labs/openfga-client.git |
| max_upload_size | |
| id | 1569504 |
| size | 1,437,479 |
OpenFGA Rust Client is a type-safe gRPC client for OpenFGA with optional Authorization Model management and Authentication (Bearer or Client Credentials).
tonicvendored-protoc for well-known types - Rust files are pre-generated.auth-middle)tls-rustls, tls-native-roots, tls-webpki-roots)read_all_tuples (handles pagination), get_store_by_name and more.To connect to OpenFGA servers over HTTPS, enable the TLS feature flags:
[dependencies]
openfga-client = { version = "0.4", features = ["tls-rustls", "tls-native-roots"] }
Available TLS features:
tls-rustls: Enables TLS support using rustlstls-native-roots: Uses the platform's native certificate storetls-webpki-roots: Uses Mozilla's root certificates (bundled)all: Enables tls-rustls, tls-native-roots, and auth-middle (does not include tls-webpki-roots)When TLS is enabled, HTTPS endpoints are automatically configured with TLS.
use openfga_client::client::OpenFgaServiceClient;
use tonic::transport::Channel;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let endpoint = "http://localhost:8081";
let service_client = OpenFgaServiceClient::connect(endpoint).await?;
// Use the client to interact with OpenFGA
Ok(())
}
use openfga_client::{client::BasicOpenFgaServiceClient, url};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let endpoint = url::Url::parse("http://localhost:8081")?;
let token = "your-bearer-token";
let service_client = BasicOpenFgaServiceClient::new_with_basic_auth(endpoint, token)?;
// Use the client to interact with OpenFGA
Ok(())
}
use openfga_client::client::BasicOpenFgaServiceClient;
use url::Url;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let endpoint = Url::parse("http://localhost:8081")?;
let client_id = "your-client-id";
let client_secret = "your-client-secret";
let token_endpoint = Url::parse("http://localhost:8081/token")?;
let scopes = vec!["scope1", "scope2"];
let service_client = BasicOpenFgaServiceClient::new_with_client_credentials(endpoint, client_id, client_secret, token_endpoint, &scopes).await?;
// Use the client to interact with OpenFGA
Ok(())
}
This project is licensed under the Apache-2.0 License. See the LICENSE file for details.
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
See DEVELOPMENT.md for some tips.