У меня есть приложение, в котором я использую тождество с токенами jwt, и мне нужно проверить токен через API. Поэтому я написал собственный фильтр авторизации, но он выдает
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException
Я предполагаю, что если фильтр унаследован от AuthorizeAttribute и запрос имеет заголовок авторизации, он попытается проверить токен. Я делаю что-то не так или я должен вместо этого использовать фильтр действий?
Вот фильтр:
public class AuthFilter : AuthorizeAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
if (context.HttpContext.Request.Headers.ContainsKey("Authorization"))
{
var jwtToken = context.HttpContext.Request.Headers["Authorization"].ToString();
jwtToken = jwtToken.Replace("Bearer ", "");
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"urlToCheck");
request.Method = "GET";
request.Headers[HttpRequestHeader.Authorization] = jwtToken;
request.Headers.Add("Access-Control-Allow-Credentials", "true");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
var resp = string.Empty;
using (var sr = new StreamReader(response.GetResponseStream()))
resp = sr.ReadToEnd();
context.Result = new RedirectResult(context.HttpContext.Request.Path);
response.Close();
}
catch (Exception ex)
{
throw ex;
}
}
}
}