IdentityServer4框架、ASP.NET core Identity
OAuth2.0
IdentityServer4
官网
中文官网
ASP.NET Core Identity提供了一个用来管理和存储用户账户的框架.
IdentityServer4是基于ASP.NET Core实现的认证和授权框架,是对OpenID Connect和OAuth 2.0协议的实现。
IdentityServer是一个中间件,它可以添加符合OpenID Connect和OAuth2.0的终端(endpoints)到一个任意的ASP.NET Core应用.
通俗来讲,就是服务端对需要认证授权的资源(客户端请求资源)在外层使用IdentityServer4框架进行封装加壳,用户只能通过获取IdentityServer4颁发的Token令牌才能进行资源访问。
ASP.NET Core Identity是一个成员身份系统,可将用户注册和登录功能添加到 ASP.NET Core Web UI。 成员身份系统处理身份验证和授权问题。 身份验证涉及你的身份。 授权涉及允许你进行的操作。 因此,身份验证是授权的先决条件。 ASP .Net Core Identity内置了一组认证功能,用于简单的Web应用的认证和授权。
Core 自带JWT认证
》》》// Core 自带官方 JWT认证
// Core 自带官方 JWT认证
// 开启Bearer 认证
builder.Services.AddAuthentication(options =>
{
// 设置默认的身份验证和挑战方案为 JwtBearer
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}) // 配置 JWT Bearer 选项
.AddJwtBearer(options =>
{
// 配置 Token 验证参数
options.TokenValidationParameters = new TokenValidationParameters
{
// 验证发行者
ValidateIssuer = true,
// 验证受众
ValidateAudience = true,
// 验证令牌有效期
ValidateLifetime = true,
// 验证签名密钥
ValidateIssuerSigningKey = true,
// 发行者
ValidIssuer = builder.Configuration["TokenParameter:Issuer"],
// 受众
ValidAudience = builder.Configuration["JokenParameter:Audience"],
// 签名密钥
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["TokenParameter:Secret"])),
AudienceValidator = (m, n, z) => {
//自定义验证逻辑
return true;
}
};
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = context =>
{
// 如果过期,则把 是否过期 添加到 , 返回头信息中
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Add("Token-Expired", "true");
}
return Task.CompletedTask;
}
//OnForbidden
//OnChallenge
//OnMessageReceived
//OnTokenValidated
};
});
var app = builder.Build();
》》》 开启 IdentityServer4 认证