HTTP 400错误通常表示请求有错误,导致服务器无法理解。在ASP.NET Core中,JWT和Windows身份验证的HTTP 400错误可能由各种原因引起。以下是一些可能的解决方法和代码示例:
System.IdentityModel.Tokens.Jwt
库验证JWT签名的示例代码:using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Tokens;
public bool ValidateJwtToken(string jwtToken, string secretKey)
{
var tokenHandler = new JwtSecurityTokenHandler();
var validationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey)),
ValidateIssuer = false,
ValidateAudience = false
};
try
{
tokenHandler.ValidateToken(jwtToken, validationParameters, out var validatedToken);
return true;
}
catch (Exception)
{
return false;
}
}
Startup.cs
文件中的ConfigureServices
方法中添加Windows身份验证的配置:public void ConfigureServices(IServiceCollection services)
{
// other configurations...
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();
// other configurations...
}
Authorization
字段中。下面是一个使用JWT进行身份验证的示例代码:var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwtToken);
var response = await httpClient.GetAsync("https://example.com/api/resource");
[Authorize(Policy = "RequireAdminRole")]
public IActionResult AdminOnlyAction()
{
// action logic...
}
请注意,以上解决方法是一般性的,具体的解决方法可能因应用程序的实际情况而有所不同。根据实际问题,请仔细检查代码和配置,并进行适当的调整。