#azure-sdk #azure #azure-rest #sdk #cloud #iot #rest

azure_identity

Rust wrappers around Microsoft Azure REST APIs - Azure identity helper crate

19 breaking releases

0.20.0 Apr 24, 2024
0.19.0 Jan 5, 2024
0.18.1 Dec 11, 2023
0.17.0 Nov 3, 2023
0.1.1 Jan 25, 2022

#48 in Network programming

Download history 10176/week @ 2024-01-25 11830/week @ 2024-02-01 11005/week @ 2024-02-08 12100/week @ 2024-02-15 9552/week @ 2024-02-22 10178/week @ 2024-02-29 11141/week @ 2024-03-07 12546/week @ 2024-03-14 16913/week @ 2024-03-21 10633/week @ 2024-03-28 14924/week @ 2024-04-04 12339/week @ 2024-04-11 16829/week @ 2024-04-18 21583/week @ 2024-04-25 16143/week @ 2024-05-02 12499/week @ 2024-05-09

69,516 downloads per month
Used in 21 crates (15 directly)

MIT license

360KB
8K SLoC

azure_identity

Azure Identity crate for the unofficial Microsoft Azure SDK for Rust. This crate is part of a collection of crates: for more information please refer to https://github.com/azure/azure-sdk-for-rust.

This crate provides several implementations of the azure_core::auth::TokenCredential trait. It is recommended to start with azure_identity::create_credential()?, which will create an instance of DefaultAzureCredential by default. If you want to use a specific credential type, the AZURE_CREDENTIAL_KIND environment variable may be set to a value from azure_credential_kinds, such as azurecli or virtualmachine.

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
   let subscription_id =
       std::env::var("AZURE_SUBSCRIPTION_ID").expect("AZURE_SUBSCRIPTION_ID required");

   let credential = azure_identity::create_credential()?;

   // Let's enumerate the Azure storage accounts in the subscription using the REST API directly.
   // This is just an example. It is easier to use the Azure SDK for Rust crates.
   let url = url::Url::parse(&format!("https://management.azure.com/subscriptions/{subscription_id}/providers/Microsoft.Storage/storageAccounts?api-version=2019-06-01"))?;

   let access_token = credential
       .get_token(&["https://management.azure.com/.default"])
       .await?;

   let response = reqwest::Client::new()
       .get(url)
       .header(
           "Authorization",
           format!("Bearer {}", access_token.token.secret()),
       )
       .send()
       .await?
       .text()
       .await?;

   println!("{response}");
   Ok(())
}

The supported authentication flows are:

License: MIT

Dependencies

~9–24MB
~375K SLoC