@@ -232,10 +232,27 @@ public static IHttpClientBuilder AddUserAccessTokenHandler(
232232 this IHttpClientBuilder httpClientBuilder ,
233233 ITokenRequestCustomizer ? tokenRequestCustomizer ,
234234 UserTokenRequestParameters ? parameters = null ) =>
235- httpClientBuilder . AddHttpMessageHandler ( provider =>
235+ AddUserAccessTokenHandler ( httpClientBuilder , _ => tokenRequestCustomizer , parameters ) ;
236+
237+ /// <summary>
238+ /// Adds the user access token handler to an HttpClient
239+ /// </summary>
240+ /// <param name="httpClientBuilder"></param>
241+ /// <param name="tokenRequestCustomizerFactory"></param>
242+ /// <param name="parameters"></param>
243+ /// <returns></returns>
244+ public static IHttpClientBuilder AddUserAccessTokenHandler (
245+ this IHttpClientBuilder httpClientBuilder ,
246+ Func < IServiceProvider , ITokenRequestCustomizer ? > tokenRequestCustomizerFactory ,
247+ UserTokenRequestParameters ? parameters = null )
248+ {
249+ ArgumentNullException . ThrowIfNull ( tokenRequestCustomizerFactory ) ;
250+
251+ return httpClientBuilder . AddHttpMessageHandler ( provider =>
236252 {
237253 var httpContextAccessor = provider . GetRequiredService < IUserAccessor > ( ) ;
238254 var userTokenManagementService = provider . GetRequiredService < IUserTokenManager > ( ) ;
255+ var tokenRequestCustomizer = tokenRequestCustomizerFactory ( provider ) ;
239256
240257 var tokenRetriever = new OpenIdConnectUserAccessTokenRetriever (
241258 httpContextAccessor ,
@@ -244,9 +261,8 @@ public static IHttpClientBuilder AddUserAccessTokenHandler(
244261 tokenRequestCustomizer ) ;
245262
246263 return provider . BuildAccessTokenRequestHandler ( tokenRetriever ) ;
247-
248- #pragma warning restore CS0618 // Type or member is obsolete
249264 } ) ;
265+ }
250266
251267 /// <summary>
252268 /// Adds the client access token handler to an HttpClient
@@ -273,11 +289,28 @@ public static IHttpClientBuilder AddClientAccessTokenHandler(
273289 this IHttpClientBuilder httpClientBuilder ,
274290 ITokenRequestCustomizer ? tokenRequestCustomizer ,
275291 UserTokenRequestParameters ? parameters = null ) =>
276- httpClientBuilder . AddHttpMessageHandler ( provider =>
292+ AddClientAccessTokenHandler ( httpClientBuilder , _ => tokenRequestCustomizer , parameters ) ;
293+
294+ /// <summary>
295+ /// Adds the client access token handler to an HttpClient
296+ /// </summary>
297+ /// <param name="httpClientBuilder"></param>
298+ /// <param name="tokenRequestCustomizerFactory"></param>
299+ /// <param name="parameters"></param>
300+ /// <returns></returns>
301+ public static IHttpClientBuilder AddClientAccessTokenHandler (
302+ this IHttpClientBuilder httpClientBuilder ,
303+ Func < IServiceProvider , ITokenRequestCustomizer ? > tokenRequestCustomizerFactory ,
304+ UserTokenRequestParameters ? parameters = null )
305+ {
306+ ArgumentNullException . ThrowIfNull ( tokenRequestCustomizerFactory ) ;
307+
308+ return httpClientBuilder . AddHttpMessageHandler ( provider =>
277309 {
278310 var tokenManager = provider . GetRequiredService < IClientCredentialsTokenManager > ( ) ;
279311 var schemeProvider = provider . GetRequiredService < IAuthenticationSchemeProvider > ( ) ;
280312 var options = provider . GetRequiredService < IOptions < UserTokenManagementOptions > > ( ) ;
313+ var tokenRequestCustomizer = tokenRequestCustomizerFactory ( provider ) ;
281314
282315 var tokenRetriever = new OpenIdConnectClientAccessTokenRetriever ( tokenManager ,
283316 options ,
@@ -287,5 +320,5 @@ public static IHttpClientBuilder AddClientAccessTokenHandler(
287320
288321 return provider . BuildAccessTokenRequestHandler ( tokenRetriever ) ;
289322 } ) ;
290- #pragma warning restore CS0618 // Type or member is obsolete
323+ }
291324}
0 commit comments