La autenticación de Active Directory de SqlClient se ha trasladado a un paquete independiente

ASP.NET Core 11 trae de forma transitiva Microsoft.Data.SqlClient 7.x (hasta 5.x en .NET 10). A partir de Microsoft.Data.SqlClient 6.0, los proveedores de autenticación de Microsoft Entra ID (anteriormente Azure Active Directory) ya no están en el paquete principal Microsoft.Data.SqlClient; se envían en un paquete de Microsoft.Data.SqlClient.Extensions.Azure independiente. Las aplicaciones que usan un valor de Entra ID Authentication= en su cadena de conexión SQL deben agregar una referencia a este paquete.

Versión introducida

.NET 11 Preview 3

Comportamiento anterior

Anteriormente, el paquete Microsoft.Data.SqlClient 5.x incluía los proveedores de autenticación de Entra ID. Una cadena de conexión como Server=...;Database=...;Authentication=Active Directory Default funcionaba de inmediato en cualquier aplicación ASP.NET Core que incluyera transitivamente Microsoft.Data.SqlClient (por ejemplo, a través de Microsoft.Extensions.Caching.SqlServer o de un proveedor de SQL Server para Entity Framework Core).

Nuevo comportamiento

A partir de la versión 11 de ASP.NET Core, la versión transitiva Microsoft.Data.SqlClient es la 7.x, que deja de incluir los proveedores de autenticación de Entra ID. Si el cadena de conexión usa uno de los valores de Active Directory *Authentication= y no ha agregado el paquete Microsoft.Data.SqlClient.Extensions.Azure, obtendrá un error en tiempo de ejecución similar al siguiente:

Cannot find an authentication provider for 'ActiveDirectoryDefault'.
Install the 'Microsoft.Data.SqlClient.Extensions.Azure' NuGet package to use Active Directory (Entra ID) authentication methods.

Esto afecta a las aplicaciones que usan Microsoft.Extensions.Caching.SqlServer (DistributedSqlServerCache), a las aplicaciones que usan el proveedor SQL Server de EF Core y a cualquier otra ruta de código que incorpore de forma transitiva Microsoft.Data.SqlClient y use la autenticación de Entra ID.

Tipo de cambio disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

El cambio para trasladar la autenticación de Microsoft Entra ID fuera de Microsoft.Data.SqlClient se realizó en la versión 6.0 de origen de Microsoft.Data.SqlClient. ASP.NET Core 11 selecciona ese cambio actualizando la versión de SqlClient de la que depende transitivamente. Para obtener más información, vea dotnet/aspnetcore#66179.

Si su aplicación usa una cadena de conexión SQL con cualquier valor en Active Directory *Authentication=, agregue un PackageReference a Microsoft.Data.SqlClient.Extensions.Azure:

<ItemGroup>
  <PackageReference Include="Microsoft.Data.SqlClient.Extensions.Azure" 
    Version="1.0.0" />
</ItemGroup>

Las plantillas de proyecto "Cuentas individuales" ASP.NET Core se actualizaron para agregar esta referencia para las configuraciones de Azure SQL que admiten. Los nuevos proyectos no requieren ningún cambio manual.

Las APIs afectadas

Ninguna. La interrupción es un requisito de tiempo de ejecución transitivo para instalar un paquete NuGet. No se ven afectados los tipos de Microsoft.AspNetCore.*.