Skip to content

Commit 59c3cd2

Browse files
authored
Add Content-Length for AzurePipelinesCredential (Azure#2333)
1 parent 82698ed commit 59c3cd2

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

sdk/identity/azure_identity/src/azure_pipelines_credential.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use crate::{
88
use azure_core::{
99
credentials::{AccessToken, Secret, TokenCredential},
1010
error::ErrorKind,
11-
headers::{FromHeaders, HeaderName, Headers, AUTHORIZATION},
11+
headers::{FromHeaders, HeaderName, Headers, AUTHORIZATION, CONTENT_LENGTH},
1212
HttpClient, Method, Request, StatusCode, Url,
1313
};
1414
use serde::Deserialize;
@@ -68,7 +68,13 @@ impl AzurePipelinesCredential {
6868

6969
let options = options.unwrap_or_default();
7070
let env = options.credential_options.credential_options.env();
71-
let endpoint = env.var(OIDC_VARIABLE_NAME).map_err(|err| azure_core::Error::full(ErrorKind::Credential, err, format!("no value for environment variable {OIDC_VARIABLE_NAME}. This should be set by Azure Pipelines")))?;
71+
let endpoint = env
72+
.var(OIDC_VARIABLE_NAME)
73+
.map_err(|err| azure_core::Error::full(
74+
ErrorKind::Credential,
75+
err,
76+
format!("no value for environment variable {OIDC_VARIABLE_NAME}. This should be set by Azure Pipelines"),
77+
))?;
7278
let mut endpoint: Url = endpoint.parse().map_err(|err| {
7379
azure_core::Error::full(
7480
ErrorKind::Credential,
@@ -125,6 +131,7 @@ impl ClientAssertion for Client {
125131
String::from("Bearer ") + self.system_access_token.secret(),
126132
);
127133
req.insert_header(TFS_FEDAUTHREDIRECT_HEADER, "Suppress");
134+
req.insert_header(CONTENT_LENGTH, "0");
128135

129136
// TODO: Consider defining and using azure_identity-specific pipeline, or even from azure_core.
130137
let resp = self.http_client.execute_request(&req).await?;
@@ -177,12 +184,14 @@ impl FromHeaders for ErrorHeaders {
177184

178185
impl fmt::Display for ErrorHeaders {
179186
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
180-
write!(
181-
f,
182-
r#"{{ x-msedge-ref: "{}", x-vss-e2eid: "{}" }}"#,
183-
self.msedge_ref.as_ref().map_or("", AsRef::as_ref),
184-
self.vss_e2eid.as_ref().map_or("", AsRef::as_ref),
185-
)
187+
let mut v = f.debug_struct("Headers");
188+
if let Some(ref msedge_ref) = self.msedge_ref {
189+
v.field(MSEDGE_REF.as_str(), msedge_ref);
190+
}
191+
if let Some(ref vss_e2eid) = self.vss_e2eid {
192+
v.field(VSS_E2EID.as_str(), vss_e2eid);
193+
}
194+
v.finish()
186195
}
187196
}
188197

0 commit comments

Comments
 (0)