Udostępnij za pośrednictwem


Domyślny schemat uwierzytelniania

Począwszy od platformy .NET 7, wprowadziliśmy nowe zachowanie w obszarze uwierzytelniania w ASP.NET Core.

Wcześniej użytkownicy musieli ustawić domyślny schemat uwierzytelniania, który jest używany przez programy obsługi uwierzytelniania i autoryzacji w wywołaniu AddAuthentication :

builder.Services.AddAuthentication("MyDefaultScheme");

Po zarejestrowaniu pojedynczego schematu uwierzytelniania schemat ten jest traktowany jako schemat domyślny. Na przykład "MyDefaultScheme" jest traktowany jako schemat domyślny w poniższym kodzie.

builder.Services.AddAuthentication().AddOAuth("MyDefaultScheme");

Ta zmiana może uwidaczniać niezamierzone zmiany zachowania w aplikacjach, takie jak opcje uwierzytelniania weryfikowane wcześniej niż oczekiwano.

Wprowadzona wersja

ASP.NET Core 7.0

Poprzednie zachowanie

Wcześniej, gdy użytkownicy nie udostępnili schematu domyślnego w wywołaniu, nie ustawiono schematu domyślnego AddAuthentication .

builder.Services.AddAuthentication().AddCookie();

Miało to wpływ na zachowanie procedur obsługi uwierzytelniania w warstwie aplikacji.

Nowe zachowanie

Począwszy od ASP.NET Core 7.0, jeśli (i tylko wtedy) pojedynczy schemat jest zarejestrowany w aplikacji, ten schemat jest traktowany jako domyślny. W poniższym kodzie CookieDefaults.AuthenticationScheme element jest traktowany jako schemat domyślny.

builder.Services.AddAuthentication().AddCookie();

Jednak w następnym fragmencie kodu nie ustawiono wartości domyślnej, ponieważ zarejestrowano wiele schematów.

builder.Services.AddAuthentication().AddCookie().AddJwtBearer();

Typ zmiany powodującej niezgodność

Ta zmiana ma wpływ na zgodność binarną.

Przyczyna wprowadzenia zmiany

Ta zmiana została wprowadzona w celu zmniejszenia standardu podczas konfigurowania uwierzytelniania i konfigurowania rozsądnych ustawień domyślnych.

Zmiana ma wpływ tylko na aplikacje, które mają zarejestrowany pojedynczy schemat. W przypadku tych scenariuszy zaleca się zapewnienie, że aplikacja jest przygotowana do obsługi założenia, że pojedynczy schemat jest domyślny. Na przykład upewnij się, że opcje skojarzone z tym schematem są poprawnie skonfigurowane.

Alternatywnie możesz wyłączyć nowe zachowanie, ustawiając flagę Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme kontekstu aplikacji.

Dotyczy interfejsów API

Interfejsy API uwierzytelniania.