| | |
| | | using Furion.Authorization; |
| | | using Furion.DistributedIDGenerator; |
| | | using Furion.JsonSerialization; |
| | | using Furion.Logging.Extensions; |
| | | using Microsoft.IdentityModel.Tokens; |
| | | using NetTaste; |
| | | using SqlSugar.Extensions; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.IdentityModel.Tokens.Jwt; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Security.Claims; |
| | |
| | | return token; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 校验token 的有效性 |
| | | /// </summary> |
| | | /// <param name="Token"> Token校验</param> |
| | | /// <param name="validationParameters"></param> |
| | | /// <param name="securityToken"></param> |
| | | /// <returns></returns> |
| | | public bool CheckJwt(string Token, out SecurityToken? securityToken) |
| | | { |
| | | var configuration = App.Configuration; |
| | | // var value = configuration["xxx:xxx"]; |
| | | |
| | | string secretKey = configuration["ZCUserInfoJwtOP:SecurityKey"]; |
| | | if (secretKey == null) |
| | | { |
| | | "没有配置用户中心的安全秘钥 ZCUserInfoJwtOP:SecurityKey 找不到".LogInformation<TokenService>(); |
| | | throw Oops.Oh("配置错误,联系管理员"); |
| | | } |
| | | |
| | | JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler(); |
| | | //JwtSecurityToken jwt = tokenHandler.ReadJwtToken(Token); |
| | | |
| | | // 验证 JWT 签名并检查有效期 |
| | | TokenValidationParameters validationParameters = new TokenValidationParameters |
| | | { |
| | | ValidateIssuerSigningKey = true, |
| | | IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)), |
| | | ValidateIssuer = false, |
| | | ValidateAudience = false, |
| | | ClockSkew = TimeSpan.Zero // 禁用时间偏移量 |
| | | }; |
| | | try |
| | | { |
| | | ClaimsPrincipal claimsPrincipal = tokenHandler.ValidateToken(Token, validationParameters, out SecurityToken validatedToken); |
| | | |
| | | securityToken = validatedToken; |
| | | return true; |
| | | } |
| | | catch (SecurityTokenException) |
| | | { |
| | | securityToken=null; |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | string TokenKey = TokenKeys + jwt.EID?.ToString() + jwt.UID?.ToString() + jwt.TEID?.ToString(); |
| | | return TokenKey; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | } |