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.
Zalecana akcja
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.