ASP.NET Core中提供了多种身份证认证模式,几种常见的身份认证模式有以下几种。本文将详细介绍一下Cookie身份认证在ASP.NET Core中如何使用。
认证模式 |
介绍 |
Cookie |
最常见的身份认证方式之一。用户登录成功后,服务器会生成一个加密的 Cookie 并发送给客户端,客户端在后续请求中携带该 Cookie 来验证用户身份。 |
JWT |
JSON Web Token)是一种基于 JSON 的开放标准(RFC 7519),用于在网络上安全地传输声明。JWT 认证通过在客户端和服务器之间传递加密的 Token 来验证用户身份。 |
OAuth |
一种开放标准,用于授权第三方应用程序访问用户数据。ASP.NET Core 提供了 OAuth 认证机制,允许应用程序通过 OAuth 协议与第三方身份提供者进行集成。 |
OpenID Connect |
建立在 OAuth 2.0 协议之上的身份认证协议,用于验证用户身份。ASP.NET Core 提供了对 OpenID Connect 的支持,可以与支持 OpenID Connect 的身份提供者集成。 |
Windows |
ASP.NET Core 支持 Windows 身份认证,允许用户使用他们的 Windows 凭据登录到应用程序。 |
Cookie
ASP.NET Core中如需使用Cookie身份证验证需要以下几个步骤:
- 使用AddAuthentication和AddCookie方法添加身份验证中间件服务。
- 调用 UseAuthentication 和 UseAuthorization 以设置 HttpContext.User 属性,并为请求运行授权中间件。 必须在调用 Map 方法(例如 MapRazorPages 和 MapDefaultControllerRoute)之前调用 UseAuthentication 和 UseAuthorization。
项目(新建的WebApi)结构如图所示:
实际代码示例如下:
Program.cs
using Microsoft.AspNetCore.Authentication.Cookies;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
//添加Cookie授权
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
//登陆地址
options.LoginPath = "/Auth/Login";
//禁止访问地址
options.AccessDeniedPath = "/Auth/AccessDenied";
//Cookie过期时间
options.ExpireTimeSpan = TimeSpan.FromMinutes(20);
//校验过期
});
builder.Services.AddAuthorization(options =>
{
//Claim中携带Admin即可通过认证
//options.AddPolicy("Admin", policy =>policy.RequireClaim("Admin"));
//Role角色为Admin通过认证
options.AddPolicy("Admin", policy => policy.RequireRole("Admin"));
});
builder.Services.AddMvcCore();
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseHttp