|
@@ -18,9 +18,11 @@ namespace Utils.Jwt
|
|
|
public class TokenHelper : ITokenHelper
|
|
|
{
|
|
|
private readonly IOptions<JWTConfig> _options;
|
|
|
+ private NLog.Logger logger;
|
|
|
public TokenHelper(IOptions<JWTConfig> options)
|
|
|
{
|
|
|
_options = options;
|
|
|
+ logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -97,7 +99,9 @@ namespace Utils.Jwt
|
|
|
return false;
|
|
|
}
|
|
|
var header = JsonConvert.DeserializeObject<Dictionary<string, string>>(Base64UrlEncoder.Decode(jwtArr[0]));
|
|
|
+ logger.Info($"header:{header}");
|
|
|
var payLoad = JsonConvert.DeserializeObject<Dictionary<string, string>>(Base64UrlEncoder.Decode(jwtArr[1]));
|
|
|
+ logger.Info($"payLoad:{payLoad}");
|
|
|
//配置文件中取出来的签名秘钥
|
|
|
var hs256 = new HMACSHA256(Encoding.ASCII.GetBytes(_options.Value.IssuerSigningKey));
|
|
|
//验证签名是否正确(把用户传递的签名部分取出来和服务器生成的签名匹配即可)
|
|
@@ -144,11 +148,18 @@ namespace Utils.Jwt
|
|
|
return TokenType.Fail;
|
|
|
}
|
|
|
var header = JsonConvert.DeserializeObject<Dictionary<string, string>>(Base64UrlEncoder.Decode(jwtArr[0]));
|
|
|
+ logger.Info($"header:{Base64UrlEncoder.Decode(jwtArr[0])}");
|
|
|
var payLoad = JsonConvert.DeserializeObject<Dictionary<string, string>>(Base64UrlEncoder.Decode(jwtArr[1]));
|
|
|
+ logger.Info($"payLoad:{Base64UrlEncoder.Decode(jwtArr[1])}");
|
|
|
var hs256 = new HMACSHA256(Encoding.ASCII.GetBytes(_options.Value.IssuerSigningKey));
|
|
|
+ logger.Info($"jwtArr[2]:{jwtArr[2]}");
|
|
|
+
|
|
|
+ var str = Base64UrlEncoder.Encode(hs256.ComputeHash(Encoding.UTF8.GetBytes(string.Concat(jwtArr[0], ".", jwtArr[1]))));
|
|
|
+ logger.Info($"str:{str}");
|
|
|
//验证签名是否正确(把用户传递的签名部分取出来和服务器生成的签名匹配即可)
|
|
|
- if (!string.Equals(jwtArr[2], Base64UrlEncoder.Encode(hs256.ComputeHash(Encoding.UTF8.GetBytes(string.Concat(jwtArr[0], ".", jwtArr[1]))))))
|
|
|
+ if (!string.Equals(jwtArr[2], str))
|
|
|
{
|
|
|
+ logger.Info($"TokenType:{TokenType.Fail}");
|
|
|
return TokenType.Fail;
|
|
|
}
|
|
|
//其次验证是否在有效期内(必须验证)
|
|
@@ -167,6 +178,7 @@ namespace Utils.Jwt
|
|
|
//再其次 进行自定义的验证
|
|
|
if (!validatePayLoad(payLoad))
|
|
|
{
|
|
|
+ logger.Info($"validatePayLoad");
|
|
|
return TokenType.Fail;
|
|
|
}
|
|
|
//可能需要获取jwt摘要里边的数据,封装一下方便使用
|