using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Http; using Microsoft.IdentityModel.Tokens; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Syc.Authorize.JwtBearer { public class JwtBearerAuthenticationOptions { public JwtBearerAuthenticationOptions() { } /// /// 加密算法,对应 SecurityAlgorithms 类中的算法 /// public virtual string Algorithms { get; set; } /// /// 是否验证密钥 /// public virtual bool ValidateIssuerSigningKey { get; set; } /// /// 签发方密钥 /// public virtual string SecurityKey { get; set; } /// /// 是否验证签发方 /// public virtual bool ValidateIssuer { get; set; } /// /// 签发方 /// public virtual string Issuer { get; set; } /// /// 是否验证接收者 /// public virtual bool ValidateAudience { get; set; } /// /// 接收者 /// public virtual string Audience { get; set; } /// /// 是否验证 token 过期时间 /// public virtual bool ValidateLifetime { get; set; } /// /// 过期时间(分钟) /// public virtual long ExpiredTime { get; set; } /// /// 令牌过期时间的偏移值,缓冲过期时间,总有效时间 = 过期时间 + 缓存时间,不设置的话默认是 5 分钟 /// public virtual long ClockSkew { get; set; } /// /// token 验证参数 /// public virtual TokenValidationParameters TokenValidationParameters { get; set; } /// /// 身份质疑,如无效token /// /// /// public virtual Task OnChallenge(JwtBearerChallengeContext context) { return Task.CompletedTask; } /// /// 权限验证失败 /// /// /// public virtual Task OnForbidden(ForbiddenContext context) { return Task.CompletedTask; } /// /// token 过期 /// /// /// public virtual Task OnAuthenticationFailed(AuthenticationFailedContext context) { //Token 过期 if (context.Exception.GetType() == typeof(SecurityTokenExpiredException) && !context.Request.Headers.ContainsKey("Token-Expired")) { context.Request.Headers.Add("Token-Expired", "true"); } return Task.CompletedTask; } } }