优化jwt首次无数据的异常。

This commit is contained in:
jianweie
2024-05-08 23:53:40 +08:00
parent 60613231d4
commit ce83544ed3

View File

@@ -103,15 +103,23 @@ namespace CoreCms.Net.Auth
{
OnMessageReceived = context =>
{
var token = context.Request.Headers["Authorization"].ObjectToString().Replace("Bearer ", "");
if (string.IsNullOrEmpty(token))
try
{
context.Response.Headers.Append("Token-Error-Token", "authorization decryption failure!");
var token = context.Request.Headers["Authorization"].ObjectToString().Replace("Bearer ", "");
if (!string.IsNullOrEmpty(token.Trim()))
{
context.Token = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
}
else
{
context.Response.Headers.Append("Token-Error-Token", "authorization decryption failure!");
}
}
else
catch
{
context.Token = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
context.Response.Headers.Append("Token-Error-Token", "authorization decryption failure ex!");
}
return Task.CompletedTask;
},
OnChallenge = context =>
@@ -122,35 +130,48 @@ namespace CoreCms.Net.Auth
OnAuthenticationFailed = context =>
{
var token = context.Request.Headers["Authorization"].ObjectToString().Replace("Bearer ", "");
if (string.IsNullOrEmpty(token))
if (!string.IsNullOrEmpty(token.Trim()))
{
try
{
//进行aes解密
var decodeToken = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
if (!string.IsNullOrEmpty(decodeToken))
{
var jwtToken = (new JwtSecurityTokenHandler()).ReadJwtToken(decodeToken);
if (jwtToken.Issuer != issuer)
{
context.Response.Headers.Append("Token-Error-Iss", "issuer is wrong!");
}
if (jwtToken.Audiences.FirstOrDefault() != audience)
{
context.Response.Headers.Append("Token-Error-Aud", "Audience is wrong!");
}
// 如果过期,则把<是否过期>添加到,返回头信息中
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Append("Token-Expired", "true");
}
}
else
{
context.Response.Headers.Append("Token-Error-Token", "token decryption failure!");
}
}
catch
{
context.Response.Headers.Append("Token-Error-Token", "token decryption failure ex!");
}
}
else
{
context.Response.Headers.Append("Token-Error-Token", "token is wrong!");
}
//进行aes解密
var decodeToken = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
if (string.IsNullOrEmpty(decodeToken))
{
context.Response.Headers.Append("Token-Error-Token", "token decryption failure!");
}
var jwtToken = (new JwtSecurityTokenHandler()).ReadJwtToken(decodeToken);
if (jwtToken.Issuer != issuer)
{
context.Response.Headers.Append("Token-Error-Iss", "issuer is wrong!");
}
if (jwtToken.Audiences.FirstOrDefault() != audience)
{
context.Response.Headers.Append("Token-Error-Aud", "Audience is wrong!");
}
// 如果过期,则把<是否过期>添加到,返回头信息中
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Append("Token-Expired", "true");
}
return Task.CompletedTask;
}
};
@@ -233,15 +254,23 @@ namespace CoreCms.Net.Auth
{
OnMessageReceived = context =>
{
var token = context.Request.Headers["Authorization"].ObjectToString().Replace("Bearer ", "");
if (string.IsNullOrEmpty(token))
try
{
context.Response.Headers.Append("Token-Error-Token", "authorization decryption failure!");
var token = context.Request.Headers["Authorization"].ObjectToString().Replace("Bearer ", "");
if (!string.IsNullOrEmpty(token.Trim()))
{
context.Token = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
}
else
{
context.Response.Headers.Append("Token-Error-Token", "authorization decryption failure!");
}
}
else
catch
{
context.Token = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
context.Response.Headers.Append("Token-Error-Token", "authorization decryption failure ex!");
}
return Task.CompletedTask;
},
OnChallenge = context =>
@@ -252,35 +281,48 @@ namespace CoreCms.Net.Auth
OnAuthenticationFailed = context =>
{
var token = context.Request.Headers["Authorization"].ObjectToString().Replace("Bearer ", "");
if (string.IsNullOrEmpty(token))
if (!string.IsNullOrEmpty(token.Trim()))
{
try
{
//进行aes解密
var decodeToken = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
if (!string.IsNullOrEmpty(decodeToken))
{
var jwtToken = (new JwtSecurityTokenHandler()).ReadJwtToken(decodeToken);
if (jwtToken.Issuer != issuer)
{
context.Response.Headers.Append("Token-Error-Iss", "issuer is wrong!");
}
if (jwtToken.Audiences.FirstOrDefault() != audience)
{
context.Response.Headers.Append("Token-Error-Aud", "Audience is wrong!");
}
// 如果过期,则把<是否过期>添加到,返回头信息中
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Append("Token-Expired", "true");
}
}
else
{
context.Response.Headers.Append("Token-Error-Token", "token decryption failure!");
}
}
catch
{
context.Response.Headers.Append("Token-Error-Token", "token decryption failure ex!");
}
}
else
{
context.Response.Headers.Append("Token-Error-Token", "token is wrong!");
}
//进行aes解密
var decodeToken = EncryptProvider.AESDecrypt(token, AppSettingsConstVars.JwtConfigSecretKey);
if (string.IsNullOrEmpty(decodeToken))
{
context.Response.Headers.Append("Token-Error-Token", "token decryption failure!");
}
var jwtToken = (new JwtSecurityTokenHandler()).ReadJwtToken(decodeToken);
if (jwtToken.Issuer != issuer)
{
context.Response.Headers.Append("Token-Error-Iss", "issuer is wrong!");
}
if (jwtToken.Audiences.FirstOrDefault() != audience)
{
context.Response.Headers.Append("Token-Error-Aud", "Audience is wrong!");
}
// 如果过期,则把<是否过期>添加到,返回头信息中
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Append("Token-Expired", "true");
}
return Task.CompletedTask;
}
};