MicrosoftIdentityHttpClientBuilderExtensions.AddMicrosoftIdentityMessageHandler Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Overloads
| Name | Description |
|---|---|
| AddMicrosoftIdentityMessageHandler(IHttpClientBuilder) |
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with no default options. Options must be configured per-request using WithAuthenticationOptions(HttpRequestMessage, MicrosoftIdentityMessageHandlerOptions). |
| AddMicrosoftIdentityMessageHandler(IHttpClientBuilder, MicrosoftIdentityMessageHandlerOptions) |
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with the specified options. |
| AddMicrosoftIdentityMessageHandler(IHttpClientBuilder, Action<MicrosoftIdentityMessageHandlerOptions>) |
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with options configured via delegate. |
| AddMicrosoftIdentityMessageHandler(IHttpClientBuilder, IConfiguration, String) |
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with options bound from IConfiguration. |
AddMicrosoftIdentityMessageHandler(IHttpClientBuilder)
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with no default options. Options must be configured per-request using WithAuthenticationOptions(HttpRequestMessage, MicrosoftIdentityMessageHandlerOptions).
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddMicrosoftIdentityMessageHandler(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder builder);
static member AddMicrosoftIdentityMessageHandler : Microsoft.Extensions.DependencyInjection.IHttpClientBuilder -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder
<Extension()>
Public Function AddMicrosoftIdentityMessageHandler (builder As IHttpClientBuilder) As IHttpClientBuilder
Parameters
- builder
- IHttpClientBuilder
The IHttpClientBuilder to configure.
Returns
The IHttpClientBuilder for method chaining.
Exceptions
Thrown when builder is null.
Examples
// Configure the HTTP client
services.AddHttpClient("ApiClient")
.AddMicrosoftIdentityMessageHandler();
// Use the client with per-request configuration
public class MyService
{
private readonly HttpClient _httpClient;
public MyService(IHttpClientFactory factory)
{
_httpClient = factory.CreateClient("ApiClient");
}
public async Task<string> GetDataAsync()
{
var request = new HttpRequestMessage(HttpMethod.Get, "/api/data")
.WithAuthenticationOptions(options =>
{
options.Scopes.Add("https://api.example.com/.default");
});
var response = await _httpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
Remarks
This overload is useful when you need maximum flexibility to configure authentication options on a per-request basis. Since no default options are provided, every request must include authentication options via the WithAuthenticationOptions extension method.
The handler will resolve IAuthorizationHeaderProvider from the service provider at runtime to acquire authorization headers for outgoing requests.
Applies to
AddMicrosoftIdentityMessageHandler(IHttpClientBuilder, MicrosoftIdentityMessageHandlerOptions)
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with the specified options.
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddMicrosoftIdentityMessageHandler(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder builder, Microsoft.Identity.Web.MicrosoftIdentityMessageHandlerOptions options);
static member AddMicrosoftIdentityMessageHandler : Microsoft.Extensions.DependencyInjection.IHttpClientBuilder * Microsoft.Identity.Web.MicrosoftIdentityMessageHandlerOptions -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder
<Extension()>
Public Function AddMicrosoftIdentityMessageHandler (builder As IHttpClientBuilder, options As MicrosoftIdentityMessageHandlerOptions) As IHttpClientBuilder
Parameters
- builder
- IHttpClientBuilder
The IHttpClientBuilder to configure.
The authentication options to use for all requests made by this client.
Returns
The IHttpClientBuilder for method chaining.
Exceptions
Thrown when builder or options is null.
Examples
// Pre-configure options
var options = new MicrosoftIdentityMessageHandlerOptions
{
Scopes = { "https://graph.microsoft.com/.default" }
};
options.WithAgentIdentity("agent-application-id");
// Configure the HTTP client with the pre-built options
services.AddHttpClient("GraphClient", client =>
{
client.BaseAddress = new Uri("https://graph.microsoft.com");
})
.AddMicrosoftIdentityMessageHandler(options);
// Use the client - authentication is automatic
public class GraphService
{
private readonly HttpClient _httpClient;
public GraphService(IHttpClientFactory factory)
{
_httpClient = factory.CreateClient("GraphClient");
}
public async Task<string> GetUserProfileAsync()
{
var response = await _httpClient.GetAsync("/v1.0/me");
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
Remarks
This overload is useful when you have a pre-configured MicrosoftIdentityMessageHandlerOptions instance that should be used for all requests made by this HTTP client. Individual requests can still override these default options using the per-request extension methods.
The handler will resolve IAuthorizationHeaderProvider from the service provider at runtime to acquire authorization headers for outgoing requests.
Applies to
AddMicrosoftIdentityMessageHandler(IHttpClientBuilder, Action<MicrosoftIdentityMessageHandlerOptions>)
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with options configured via delegate.
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddMicrosoftIdentityMessageHandler(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder builder, Action<Microsoft.Identity.Web.MicrosoftIdentityMessageHandlerOptions> configureOptions);
static member AddMicrosoftIdentityMessageHandler : Microsoft.Extensions.DependencyInjection.IHttpClientBuilder * Action<Microsoft.Identity.Web.MicrosoftIdentityMessageHandlerOptions> -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder
<Extension()>
Public Function AddMicrosoftIdentityMessageHandler (builder As IHttpClientBuilder, configureOptions As Action(Of MicrosoftIdentityMessageHandlerOptions)) As IHttpClientBuilder
Parameters
- builder
- IHttpClientBuilder
The IHttpClientBuilder to configure.
- configureOptions
- Action<MicrosoftIdentityMessageHandlerOptions>
A delegate to configure the authentication options.
Returns
The IHttpClientBuilder for method chaining.
Exceptions
Thrown when builder or configureOptions is null.
Examples
// Configure the HTTP client with inline options configuration
services.AddHttpClient("MyApiClient", client =>
{
client.BaseAddress = new Uri("https://api.example.com");
})
.AddMicrosoftIdentityMessageHandler(options =>
{
options.Scopes.Add("https://api.example.com/.default");
options.RequestAppToken = true;
});
// Use the client - authentication is automatic
public class ApiService
{
private readonly HttpClient _httpClient;
public ApiService(IHttpClientFactory factory)
{
_httpClient = factory.CreateClient("MyApiClient");
}
public async Task<string> GetDataAsync()
{
var response = await _httpClient.GetAsync("/api/data");
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
With agent identity:
services.AddHttpClient("AgentClient")
.AddMicrosoftIdentityMessageHandler(options =>
{
options.Scopes.Add("https://graph.microsoft.com/.default");
options.WithAgentIdentity("agent-application-id");
options.RequestAppToken = true;
});
Remarks
This overload is useful for inline configuration of authentication options. The delegate is called once during service configuration to create the default options for the HTTP client. Individual requests can still override these default options using the per-request extension methods.
The handler will resolve IAuthorizationHeaderProvider from the service provider at runtime to acquire authorization headers for outgoing requests.
Applies to
AddMicrosoftIdentityMessageHandler(IHttpClientBuilder, IConfiguration, String)
Adds a MicrosoftIdentityMessageHandler to the HTTP client pipeline with options bound from IConfiguration.
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddMicrosoftIdentityMessageHandler(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder builder, Microsoft.Extensions.Configuration.IConfiguration configuration, string sectionName);
static member AddMicrosoftIdentityMessageHandler : Microsoft.Extensions.DependencyInjection.IHttpClientBuilder * Microsoft.Extensions.Configuration.IConfiguration * string -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder
<Extension()>
Public Function AddMicrosoftIdentityMessageHandler (builder As IHttpClientBuilder, configuration As IConfiguration, sectionName As String) As IHttpClientBuilder
Parameters
- builder
- IHttpClientBuilder
The IHttpClientBuilder to configure.
- configuration
- IConfiguration
The configuration section containing the authentication options.
- sectionName
- String
The name of the configuration section (used for diagnostics).
Returns
The IHttpClientBuilder for method chaining.
Exceptions
Thrown when builder, configuration, or sectionName is null.
Examples
Configuration in appsettings.json:
{
"DownstreamApi": {
"Scopes": ["https://api.example.com/.default"]
},
"GraphApi": {
"Scopes": ["https://graph.microsoft.com/.default", "User.Read"]
}
}
Configure the HTTP client:
// In Program.cs or Startup.cs
services.AddHttpClient("DownstreamApiClient", client =>
{
client.BaseAddress = new Uri("https://api.example.com");
})
.AddMicrosoftIdentityMessageHandler(
configuration.GetSection("DownstreamApi"),
"DownstreamApi");
services.AddHttpClient("GraphClient", client =>
{
client.BaseAddress = new Uri("https://graph.microsoft.com");
})
.AddMicrosoftIdentityMessageHandler(
configuration.GetSection("GraphApi"),
"GraphApi");
Use the clients:
public class MyService
{
private readonly HttpClient _apiClient;
private readonly HttpClient _graphClient;
public MyService(IHttpClientFactory factory)
{
_apiClient = factory.CreateClient("DownstreamApiClient");
_graphClient = factory.CreateClient("GraphClient");
}
public async Task<string> GetApiDataAsync()
{
var response = await _apiClient.GetAsync("/api/data");
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
public async Task<string> GetUserProfileAsync()
{
var response = await _graphClient.GetAsync("/v1.0/me");
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
Remarks
This overload is useful when you want to configure authentication options from appsettings.json or other configuration sources. The configuration section is bound to a new MicrosoftIdentityMessageHandlerOptions instance using standard configuration binding. Individual requests can still override these default options using the per-request extension methods.
The handler will resolve IAuthorizationHeaderProvider from the service provider at runtime to acquire authorization headers for outgoing requests.