@@ -32,6 +32,7 @@ import {
32
32
createManagedIdentityError ,
33
33
} from "../../error/ManagedIdentityError.js" ;
34
34
import { isIso8601 } from "../../utils/TimeUtils.js" ;
35
+ import { HttpClientWithRetries } from "../../network/HttpClientWithRetries.js" ;
35
36
36
37
/**
37
38
* Managed Identity User Assigned Id Query Parameter Names
@@ -50,17 +51,20 @@ export abstract class BaseManagedIdentitySource {
50
51
private nodeStorage : NodeStorage ;
51
52
private networkClient : INetworkModule ;
52
53
private cryptoProvider : CryptoProvider ;
54
+ private disableInternalRetries : boolean ;
53
55
54
56
constructor (
55
57
logger : Logger ,
56
58
nodeStorage : NodeStorage ,
57
59
networkClient : INetworkModule ,
58
- cryptoProvider : CryptoProvider
60
+ cryptoProvider : CryptoProvider ,
61
+ disableInternalRetries : boolean
59
62
) {
60
63
this . logger = logger ;
61
64
this . nodeStorage = nodeStorage ;
62
65
this . networkClient = networkClient ;
63
66
this . cryptoProvider = cryptoProvider ;
67
+ this . disableInternalRetries = disableInternalRetries ;
64
68
}
65
69
66
70
abstract createRequest (
@@ -151,20 +155,32 @@ export abstract class BaseManagedIdentitySource {
151
155
networkRequest . computeParametersBodyString ( ) ;
152
156
}
153
157
158
+ /**
159
+ * Initializes the network client helper based on the retry policy configuration.
160
+ * If internal retries are disabled, it uses the provided network client directly.
161
+ * Otherwise, it wraps the network client with an HTTP client that supports retries.
162
+ */
163
+ const networkClientHelper : INetworkModule = this . disableInternalRetries
164
+ ? this . networkClient
165
+ : new HttpClientWithRetries (
166
+ this . networkClient ,
167
+ networkRequest . retryPolicy
168
+ ) ;
169
+
154
170
const reqTimestamp = TimeUtils . nowSeconds ( ) ;
155
171
let response : NetworkResponse < ManagedIdentityTokenResponse > ;
156
172
try {
157
173
// Sources that send POST requests: Cloud Shell
158
174
if ( networkRequest . httpMethod === HttpMethod . POST ) {
159
175
response =
160
- await this . networkClient . sendPostRequestAsync < ManagedIdentityTokenResponse > (
176
+ await networkClientHelper . sendPostRequestAsync < ManagedIdentityTokenResponse > (
161
177
networkRequest . computeUri ( ) ,
162
178
networkRequestOptions
163
179
) ;
164
180
// Sources that send GET requests: App Service, Azure Arc, IMDS, Service Fabric
165
181
} else {
166
182
response =
167
- await this . networkClient . sendGetRequestAsync < ManagedIdentityTokenResponse > (
183
+ await networkClientHelper . sendGetRequestAsync < ManagedIdentityTokenResponse > (
168
184
networkRequest . computeUri ( ) ,
169
185
networkRequestOptions
170
186
) ;
@@ -189,7 +205,7 @@ export abstract class BaseManagedIdentitySource {
189
205
const serverTokenResponse : ServerAuthorizationTokenResponse =
190
206
await this . getServerTokenResponseAsync (
191
207
response ,
192
- this . networkClient ,
208
+ networkClientHelper ,
193
209
networkRequest ,
194
210
networkRequestOptions
195
211
) ;
0 commit comments