ASP.NET Core предоставляет несколько способов аутентификации, позволяя выбирать наиболее подходящий механизм для защиты приложений.
Cookie-аутентификация
Cookie-аутентификация хранит информацию о пользователе в HTTP-cookie, что позволяет сохранять состояние пользователя между запросами.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
options.LogoutPath = "/Account/Logout";
});
JWT-аутентификация
JWT (JSON Web Token) используется для аутентификации в API-приложениях, где состояние пользователя не сохраняется на сервере.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "yourdomain.com",
ValidAudience = "yourdomain.com",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key"))
};
});
OAuth 2.0 и OpenID Connect
OAuth 2.0 и OpenID Connect позволяют использовать сторонние сервисы для аутентификации, такие как Google, Microsoft или Facebook.
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://accounts.google.com";
options.ClientId = "your_client_id";
options.ClientSecret = "your_client_secret";
options.ResponseType = "code";
});
Windows-аутентификация
Windows-аутентификация полезна для корпоративных приложений, работающих в домене Windows.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Двухфакторная аутентификация
Двухфакторная аутентификация (2FA) добавляет дополнительный уровень безопасности, требуя ввода кода подтверждения.
var tokenProvider = new TotpSecurityStampBasedTokenProvider<IdentityUser>();
var isValid = await tokenProvider.ValidateAsync("TwoFactor", token, manager, user);
Аутентификация с помощью API-ключей
Используется для аутентификации сервисов через уникальные ключи API.
var apiKey = context.Request.Headers["X-Api-Key"];
if (apiKey == "your_api_key")
{
// Аутентификация успешна
}