reqsign-azure-storage
Azure Storage signing implementation for reqsign.
This crate provides comprehensive signing support for Azure Storage services including Blob Storage, File Storage, Queue Storage, and Table Storage.
Quick Start
use ;
use ;
// Create context and signer
let ctx = default;
let config = default
.account_name
.from_env;
let loader = new;
let builder = new;
let signer = new;
// Sign requests
let mut req = get
.body
.unwrap
.into_parts
.0;
signer.sign.await?;
Features
- Multiple Auth Methods: Shared Key, SAS tokens, and Azure AD
- All Storage Services: Blob, File, Queue, and Table storage
- Managed Identity: Automatic authentication on Azure services
- Flexible Configuration: Environment variables, config files, or code
Authentication Methods
1. Shared Key (Storage Account Key)
let config = default
.account_name
.account_key;
2. SAS Token
&ss=b&srt=sco&sp=rwdlacx&se=2024-12-31T23:59:59Z&
let config = default
.account_name
.sas_token;
3. Azure AD / OAuth
let config = default
.account_name
.client_id
.client_secret
.tenant_id;
4. Managed Identity
Automatically used when running on Azure services:
// No explicit credentials needed
let config = default
.account_name;
Storage Services
Blob Storage
// List containers
let req = get
.header
.body?;
// Get blob
let req = get
.header
.body?;
// Upload blob
let req = put
.header
.header
.body?;
File Storage
// List shares
let req = get
.header
.body?;
// Get file
let req = get
.header
.body?;
Queue Storage
// List queues
let req = get
.header
.body?;
// Get messages
let req = get
.header
.body?;
Table Storage
// Query entities
let req = get
.header
.header
.body?;
Examples
Check out the examples directory:
- Blob storage operations - Complete blob storage examples
Credential Loading Order
The DefaultLoader tries credentials in this order:
- SAS Token (if provided)
- Shared Key (if provided)
- Azure AD Client Credentials
- Managed Identity (on Azure services)
- Azure CLI credentials
Advanced Configuration
Custom Authority Host
let config = default
.account_name
.authority_host;
Specific Credential Type
// Force Shared Key only
use ClientSecretLoader;
let loader = new;
License
Licensed under Apache License, Version 2.0.