В ASP.NET Core 2.0 промежуточное ПО .UseAuthentication() имеет прерывистое изменение, которое больше не позволяет использовать старый синтаксис
Предварительный просмотр ASP.NET Core 2.0 1: настройка аутентификации cookie с настраиваемым логином
Ответ 1
Обновлено, так как это немного изменилось в битах версии 2.0 RTM
Оказывается, это намного проще, чем ожидалось, но поскольку официальная документация еще не обновлена, вот что именно работает для обычного файла cookie:
Конфигурация:
В ConfigureServices()
настройте конкретный механизм проверки подлинности:
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(o =>
{
o.LoginPath = "/api/login";
o.LogoutPath = "/api/logout";
// additional config options here
});
Затем в Configure()
на самом деле подключить промежуточное ПО:
app.UseAuthentication();
Использование компонентов Auth
Затем, чтобы использовать фактические компоненты Auth, логика переместилась из объекта HttpContext.Authentication
, вплоть до всего HttpContext
в логике приложения, например, в коде контроллера:
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(identity));
или
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
Ответ 2
Приведенный вами пример, похоже, не является реальным кодом (т.е. new CookieAuthenticationOptions()
внутри вызова AddAuthentication, а не как аргумент AddCookieAuthentication
). Вы не добавляете авторизации внутри вызова AddAuthorization
, вы просто устанавливаете здесь стандарты middlewares, см. это объявление.
Старый:
services.AddAuthentication(sharedOptions =>
sharedOptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
AutomaticChallenge = true,
AutomaticAuthenticate = true,
Новое:
app.AddAuthentication(o => {
o.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
});
И
services.AddXxxAuthentication(new XxxOptions() { ... });
заменяются на
services.AddXxxAuthentication(options => {
});
чтобы быть встроенным со всеми другими методами, которые принимают конфигурацию.
Также всегда стоит взглянуть на ASP.NET Core Announcements Репозиторий GitHub, где основная команда ASP.NET объявляет о нарушениях для следующего версии, просто выберите конкретную веху там, то есть 2.0.0-preview1, 2.0.0-preview2 и т.д.