Uwierzytelnianie usługi Active Directory w SqlClient przeniesiono do oddzielnego pakietu

ASP.NET Core 11 pośrednio uwzględnia Microsoft.Data.SqlClient 7.x (w porównaniu z 5.x w .NET 10). Począwszy od Microsoft.Data.SqlClient 6.0, dostawcy uwierzytelniania Microsoft Entra ID (wcześniej Azure Active Directory) nie znajdują się już w głównym pakiecie Microsoft.Data.SqlClient; są dostarczane w osobnym pakiecie Microsoft.Data.SqlClient.Extensions.Azure. Aplikacje używające wartości Entra ID Authentication= w parametry połączenia SQL muszą dodać odwołanie do tego pakietu.

Wersja wprowadzona

.NET 11 (wersja zapoznawcza 3)

Poprzednie zachowanie

Wcześniej pakiet Microsoft.Data.SqlClient 5.x zawierał dostawców uwierzytelniania Entra ID. Parametr połączenia, taki jak Server=...;Database=...;Authentication=Active Directory Default, działał od razu w przypadku dowolnej aplikacji ASP.NET Core, która pośrednio dołączała Microsoft.Data.SqlClient (na przykład za pośrednictwem Microsoft.Extensions.Caching.SqlServer lub dostawcy SQL Server dla Entity Framework Core).

Nowe zachowanie

Począwszy od ASP.NET Core 11, przechodnia wersja Microsoft.Data.SqlClient to 7.x, która nie dostarcza już dostawców uwierzytelniania Entra ID. Jeśli parametry połączenia używa jednej z wartości Active Directory *Authentication= i nie dodano pakietu Microsoft.Data.SqlClient.Extensions.Azure, zostanie wyświetlony błąd środowiska uruchomieniowego podobny do:

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

Ma to wpływ na aplikacje korzystające z Microsoft.Extensions.Caching.SqlServer (DistributedSqlServerCache), aplikacje korzystające z dostawcy SQL Server EF Core, a także wszelkie inne ścieżki kodu, które pośrednio obejmują Microsoft.Data.SqlClient i korzystają z uwierzytelniania Entra ID.

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Zmiana polegająca na przeniesieniu uwierzytelniania Microsoft Entra ID poza Microsoft.Data.SqlClient została wprowadzona w źródłowym wydaniu Microsoft.Data.SqlClient 6.0. ASP.NET Core 11 uwzględnia tę zmianę, aktualizując wersję SqlClient, od której jest zależny pośrednio. Aby uzyskać więcej informacji, zobacz dotnet/aspnetcore#66179.

Jeśli aplikacja używa parametrów połączenia SQL z dowolną wartością Active Directory *Authentication=, dodaj element PackageReference do Microsoft.Data.SqlClient.Extensions.Azure:

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

Szablony projektów "Indywidualne konta" ASP.NET Core zostały zaktualizowane w celu dodania tego odwołania do konfiguracji Azure SQL, które obsługują. Nowe projekty nie wymagają ręcznej zmiany.

Interfejsy API, których dotyczy problem

None. Przerwa jest przejściowym wymaganiem środowiska uruchomieniowego do zainstalowania pakietu NuGet. Żadne typy w Microsoft.AspNetCore.* nie są objęte zmianami.