Skip to content

Commit b2c59a8

Browse files
authored
Do not search for a password for requests with a token attached already (#15772)
1 parent 7c716d5 commit b2c59a8

3 files changed

Lines changed: 15 additions & 5 deletions

File tree

crates/uv-auth/src/cache.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@ impl CredentialsCache {
148148

149149
let mut realms = self.realms.write().unwrap();
150150

151-
// Always replace existing entries if we have a password
152-
if credentials.password().is_some() {
151+
// Always replace existing entries if we have a password or token
152+
if credentials.is_authenticated() {
153153
return realms.insert(key, credentials.clone());
154154
}
155155

crates/uv-auth/src/credentials.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,16 @@ impl Credentials {
141141
}
142142
}
143143

144+
pub fn is_authenticated(&self) -> bool {
145+
match self {
146+
Self::Basic {
147+
username: _,
148+
password,
149+
} => password.is_some(),
150+
Self::Bearer { token } => !token.is_empty(),
151+
}
152+
}
153+
144154
pub(crate) fn is_empty(&self) -> bool {
145155
match self {
146156
Self::Basic { username, password } => username.is_none() && password.is_none(),

crates/uv-auth/src/middleware.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ impl Middleware for AuthMiddleware {
328328
request = credentials.authenticate(request);
329329

330330
// If it's fully authenticated, finish the request
331-
if credentials.password().is_some() {
331+
if credentials.is_authenticated() {
332332
trace!("Request for {url} is fully authenticated");
333333
return self
334334
.complete_request(None, request, extensions, next, auth_policy)
@@ -420,7 +420,7 @@ impl Middleware for AuthMiddleware {
420420
.or(credentials);
421421

422422
if let Some(credentials) = credentials.as_ref() {
423-
if credentials.password().is_some() {
423+
if credentials.is_authenticated() {
424424
trace!("Retrying request for {url} with credentials from cache {credentials:?}");
425425
retry_request = credentials.authenticate(retry_request);
426426
return self
@@ -529,7 +529,7 @@ impl AuthMiddleware {
529529
let credentials = Arc::new(credentials);
530530

531531
// If there's a password, send the request and cache
532-
if credentials.password().is_some() {
532+
if credentials.is_authenticated() {
533533
trace!("Request for {url} already contains username and password");
534534
return self
535535
.complete_request(Some(credentials), request, extensions, next, auth_policy)

0 commit comments

Comments
 (0)