Skip to content

Commit df7d7fa

Browse files
heathsctaggart
andauthored
Export credentials from azure_identity (#756)
Co-authored-by: Cameron Taggart <[email protected]>
1 parent b4c4785 commit df7d7fa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+121
-118
lines changed

sdk/device_update/examples/delete_update.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/get_file.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/get_operation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/get_update.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/import_update.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/list_files.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/list_names.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/list_operations.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/list_providers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/list_updates.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/examples/list_versions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use azure_device_update::DeviceUpdateClient;
2-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
2+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
33
use std::{env, sync::Arc};
44

55
#[tokio::main]

sdk/device_update/src/client.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use azure_core::{
33
auth::{TokenCredential, TokenResponse},
44
Error as CoreError, HttpError,
55
};
6-
use azure_identity::token_credentials::AutoRefreshingTokenCredential;
6+
use azure_identity::AutoRefreshingTokenCredential;
77
use const_format::formatcp;
88
use serde::de::DeserializeOwned;
99
use std::sync::Arc;
@@ -18,7 +18,7 @@ pub(crate) const API_VERSION_PARAM: &str = formatcp!("api-version={}", API_VERSI
1818
///
1919
/// ```no_run
2020
/// use azure_device_update::DeviceUpdateClient;
21-
/// use azure_identity::token_credentials::DefaultAzureCredential;
21+
/// use azure_identity::DefaultAzureCredential;
2222
/// let creds = std::sync::Arc::new(DefaultAzureCredential::default());
2323
/// let client = DeviceUpdateClient::new("contoso.api.adu.microsoft.com", creds).unwrap();
2424
/// ```
@@ -37,7 +37,7 @@ impl DeviceUpdateClient {
3737
///
3838
/// ```no_run
3939
/// use azure_device_update::DeviceUpdateClient;
40-
/// use azure_identity::token_credentials::DefaultAzureCredential;
40+
/// use azure_identity::DefaultAzureCredential;
4141
/// let creds = std::sync::Arc::new(DefaultAzureCredential::default());
4242
/// let client = DeviceUpdateClient::new("contoso.api.adu.microsoft.com", creds).unwrap();
4343
/// ```

sdk/device_update/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub type Result<T> = std::result::Result<T, Error>;
3737
#[cfg(test)]
3838
mod tests {
3939
use azure_core::auth::{TokenCredential, TokenResponse};
40-
use azure_identity::token_credentials::AutoRefreshingTokenCredential;
40+
use azure_identity::AutoRefreshingTokenCredential;
4141
use chrono::{Duration, Utc};
4242
use oauth2::AccessToken;
4343
use std::sync::Arc;

sdk/identity/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# 0.3.0 (2022-05)
22

3+
- [#756](https://github.com/Azure/azure-sdk-for-rust/pull/756) Export credentials from azure_identity
4+
- BREAKING CHANGE: the credential types have moved. For example:
5+
- use `azure_identity::DefaultAzureCredential` instead of `azure_identity::token_credentials::DefaultAzureCredential`
36
- [#751](https://github.com/Azure/azure-sdk-for-rust/pull/751) datetime from azure cli token is in the local timezone
47
- [#748](https://github.com/Azure/azure-sdk-for-rust/pull/748) adding option to specify client_id for MSI
58

sdk/identity/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,5 @@ The supported authentication flows are:
5454
* [Device code flow](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-device-code).
5555

5656
This crate also includes utilities for handling refresh tokens and accessing token credentials from many different sources.
57+
58+
A list of changes can be found in [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-rust/blob/main/sdk/identity/CHANGELOG.md);

sdk/identity/examples/cli_credentials.rs renamed to sdk/identity/examples/azure_cli_credentials.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use azure_identity::token_credentials::*;
1+
use azure_identity::*;
22
use std::error::Error;
33
use url::Url;
44

sdk/identity/examples/client_certificate_credentials.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
/// please make sure to set the send_certificate_chain option to true otherwise
55
/// the authentication will fail.
66
use azure_core::auth::TokenCredential;
7-
use azure_identity::token_credentials::{
7+
use azure_identity::{
88
CertificateCredentialOptions, ClientCertificateCredential, DefaultAzureCredential,
99
};
1010
use azure_security_keyvault::KeyClient;

sdk/identity/examples/default_credentials.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use azure_identity::token_credentials::*;
1+
use azure_identity::*;
22
use url::Url;
33

44
#[tokio::main]
@@ -7,7 +7,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
77

88
let sub_id = std::env::var("AZURE_SUBSCRIPTION_ID")?;
99
let creds = DefaultAzureCredentialBuilder::new()
10-
.exclude_cli_credential() // disable using CLI for credentials (just as an example)
10+
.exclude_azure_cli_credential() // disable using CLI for credentials (just as an example)
1111
.build();
1212

1313
let res = creds
@@ -32,6 +32,6 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
3232
.text()
3333
.await?;
3434

35-
println!("\n\nresp {:?}", resp);
35+
println!("\n\n{:?}", resp);
3636
Ok(())
3737
}

sdk/identity/examples/environment_credentials.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use azure_identity::token_credentials::*;
1+
use azure_identity::*;
22
use std::error::Error;
33
use url::Url;
44

sdk/identity/src/errors.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ use std::fmt;
88
pub enum Error {
99
/// An error getting credentials from the Azure CLI
1010
#[error("Error getting token credentials from Azure CLI")]
11-
AzureCliCredential(#[from] crate::token_credentials::AzureCliCredentialError),
11+
AzureCliCredential(#[from] crate::AzureCliCredentialError),
1212
/// An error getting credentials through the client secrect token credential flow
1313
#[error("Client secret credentials error")]
14-
ClientSecretCredential(#[from] crate::token_credentials::ClientSecretCredentialError),
14+
ClientSecretCredential(#[from] crate::ClientSecretCredentialError),
1515
/// An error getting credentials from the environment
1616
#[error("Error getting environment credential")]
17-
EnvironmentCredential(#[from] crate::token_credentials::EnvironmentCredentialError),
17+
EnvironmentCredential(#[from] crate::EnvironmentCredentialError),
1818
/// An error getting managed identity credentials
1919
#[error("Error getting managed identity credential")]
20-
ManagedIdentityCredential(#[from] crate::token_credentials::ManagedIdentityCredentialError),
20+
ManagedIdentityCredential(#[from] crate::ManagedIdentityCredentialError),
2121
/// An error using the default token credential flow
2222
#[error("Error getting default credential")]
23-
DefaultAzureCredentialError(#[from] crate::token_credentials::DefaultAzureCredentialError),
23+
DefaultAzureCredentialError(#[from] crate::DefaultAzureCredentialError),
2424
/// An error getting a refresh token
2525
#[error("Error refreshing token")]
2626
RefreshToken(#[from] crate::refresh_token::Error),

sdk/identity/src/lib.rs

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,35 @@
1-
//! Azure OAuth2 helper 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](https://github.com/azure/azure-sdk-for-rust).
1+
//! 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](https://github.com/azure/azure-sdk-for-rust).
22
//! This crate provides mechanisms for several ways to authenticate against Azure
33
//!
4-
//! For example, to authenticate using the client credential flow, you can do the following:
4+
//! For example, to authenticate using the recommended DefaultAzureCredential, you can do the following:
55
//!
66
//! ```no_run
7-
//! use azure_identity::client_credentials_flow;
8-
//! use oauth2::{ClientId, ClientSecret};
7+
//! use azure_identity::{DefaultAzureCredential, TokenCredential};
98
//! use url::Url;
109
//!
1110
//! use std::env;
1211
//! use std::error::Error;
1312
//!
1413
//! #[tokio::main]
1514
//! async fn main() -> Result<(), Box<dyn Error>> {
16-
//! let client_id =
17-
//! ClientId::new(env::var("CLIENT_ID").expect("Missing CLIENT_ID environment variable."));
18-
//! let client_secret = ClientSecret::new(
19-
//! env::var("CLIENT_SECRET").expect("Missing CLIENT_SECRET environment variable."),
20-
//! );
21-
//! let tenant_id = env::var("TENANT_ID").expect("Missing TENANT_ID environment variable.");
22-
//! let subscription_id =
23-
//! env::var("SUBSCRIPTION_ID").expect("Missing SUBSCRIPTION_ID environment variable.");
24-
//!
25-
//! let client = reqwest::Client::new();
26-
//! // This will give you the final token to use in authorization.
27-
//! let token = client_credentials_flow::perform(
28-
//! client,
29-
//! &client_id,
30-
//! &client_secret,
31-
//! &["https://management.azure.com/"],
32-
//! &tenant_id,
33-
//! )
34-
//! .await?;
15+
//! let credential = DefaultAzureCredential::default();
16+
//! let response = credential
17+
//! .get_token("https://management.azure.com")
18+
//! .await?;
19+
//!
20+
//! let subscription_id = env::var("AZURE_SUBSCRIPTION_ID")?;
21+
//! let url = Url::parse(&format!(
22+
//! "https://management.azure.com/subscriptions/{}/providers/Microsoft.Storage/storageAccounts?api-version=2019-06-01",
23+
//! subscription_id))?;
24+
//! let response = reqwest::Client::new()
25+
//! .get(url)
26+
//! .header("Authorization", format!("Bearer {}", response.token.secret()))
27+
//! .send()
28+
//! .await?
29+
//! .text()
30+
//! .await?;
31+
//!
32+
//! println!("{:?}", response);
3533
//! Ok(())
3634
//! }
3735
//! ```
@@ -52,6 +50,7 @@ pub mod client_credentials_flow;
5250
pub mod development;
5351
pub mod device_code_flow;
5452
pub mod refresh_token;
55-
pub mod token_credentials;
53+
mod token_credentials;
5654

55+
pub use crate::token_credentials::*;
5756
pub use errors::Error;

sdk/identity/src/token_credentials/default_credentials.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ use azure_core::auth::TokenResponse;
88
pub struct DefaultAzureCredentialBuilder {
99
include_environment_credential: bool,
1010
include_managed_identity_credential: bool,
11-
include_cli_credential: bool,
11+
include_azure_cli_credential: bool,
1212
}
1313

1414
impl Default for DefaultAzureCredentialBuilder {
1515
fn default() -> Self {
1616
Self {
1717
include_environment_credential: true,
1818
include_managed_identity_credential: true,
19-
include_cli_credential: true,
19+
include_azure_cli_credential: true,
2020
}
2121
}
2222
}
@@ -33,22 +33,22 @@ impl DefaultAzureCredentialBuilder {
3333
self
3434
}
3535

36-
/// Exclude using credentials from the cli
37-
pub fn exclude_cli_credential(&mut self) -> &mut Self {
38-
self.include_cli_credential = false;
39-
self
40-
}
41-
4236
/// Exclude using managed identity credentials
4337
pub fn exclude_managed_identity_credential(&mut self) -> &mut Self {
4438
self.include_managed_identity_credential = false;
4539
self
4640
}
4741

42+
/// Exclude using credentials from the cli
43+
pub fn exclude_azure_cli_credential(&mut self) -> &mut Self {
44+
self.include_azure_cli_credential = false;
45+
self
46+
}
47+
4848
/// Create a `DefaultAzureCredential` from this builder.
4949
pub fn build(&self) -> DefaultAzureCredential {
50-
let source_count = self.include_cli_credential as usize
51-
+ self.include_cli_credential as usize
50+
let source_count = self.include_azure_cli_credential as usize
51+
+ self.include_azure_cli_credential as usize
5252
+ self.include_managed_identity_credential as usize;
5353
let mut sources = Vec::<DefaultAzureCredentialEnum>::with_capacity(source_count);
5454
if self.include_environment_credential {
@@ -61,7 +61,7 @@ impl DefaultAzureCredentialBuilder {
6161
ImdsManagedIdentityCredential::default(),
6262
))
6363
}
64-
if self.include_cli_credential {
64+
if self.include_azure_cli_credential {
6565
sources.push(DefaultAzureCredentialEnum::AzureCli(AzureCliCredential {}));
6666
}
6767
DefaultAzureCredential::with_sources(sources)
@@ -197,25 +197,25 @@ mod tests {
197197
#[test]
198198
fn test_builder_included_credential_flags() {
199199
let builder = DefaultAzureCredentialBuilder::new();
200-
assert!(builder.include_cli_credential);
200+
assert!(builder.include_azure_cli_credential);
201201
assert!(builder.include_environment_credential);
202202
assert!(builder.include_managed_identity_credential);
203203

204204
let mut builder = DefaultAzureCredentialBuilder::new();
205-
builder.exclude_cli_credential();
206-
assert!(!builder.include_cli_credential);
205+
builder.exclude_azure_cli_credential();
206+
assert!(!builder.include_azure_cli_credential);
207207
assert!(builder.include_environment_credential);
208208
assert!(builder.include_managed_identity_credential);
209209

210210
let mut builder = DefaultAzureCredentialBuilder::new();
211211
builder.exclude_environment_credential();
212-
assert!(builder.include_cli_credential);
212+
assert!(builder.include_azure_cli_credential);
213213
assert!(!builder.include_environment_credential);
214214
assert!(builder.include_managed_identity_credential);
215215

216216
let mut builder = DefaultAzureCredentialBuilder::new();
217217
builder.exclude_managed_identity_credential();
218-
assert!(builder.include_cli_credential);
218+
assert!(builder.include_azure_cli_credential);
219219
assert!(builder.include_environment_credential);
220220
assert!(!builder.include_managed_identity_credential);
221221
}
@@ -270,7 +270,7 @@ mod tests {
270270

271271
// remove cli source
272272

273-
builder.exclude_cli_credential();
273+
builder.exclude_azure_cli_credential();
274274
let credential = builder.build();
275275

276276
assert_eq!(credential.sources.len(), 1);

sdk/identity/src/token_credentials/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//! * Managed identity
77
//! * Client secret
88
mod auto_refreshing_credentials;
9-
mod cli_credentials;
9+
mod azure_cli_credentials;
1010
#[cfg(feature = "client_certificate")]
1111
mod client_certificate_credentials;
1212
mod client_secret_credentials;
@@ -15,7 +15,7 @@ mod environment_credentials;
1515
mod imds_managed_identity_credentials;
1616

1717
pub use auto_refreshing_credentials::*;
18-
pub use cli_credentials::*;
18+
pub use azure_cli_credentials::*;
1919
#[cfg(feature = "client_certificate")]
2020
pub use client_certificate_credentials::*;
2121
pub use client_secret_credentials::*;

sdk/security_keyvault/examples/backup_secret.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
1+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
22
use azure_security_keyvault::KeyClient;
33
use std::env;
44

sdk/security_keyvault/examples/delete_secret.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
1+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
22
use azure_security_keyvault::KeyClient;
33
use std::env;
44

sdk/security_keyvault/examples/get_secret.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use azure_identity::token_credentials::{ClientSecretCredential, TokenCredentialOptions};
1+
use azure_identity::{ClientSecretCredential, TokenCredentialOptions};
22
use azure_security_keyvault::KeyClient;
33
use std::env;
44

0 commit comments

Comments
 (0)