Как сделать пользовательский фильтр авторизации НЕ проверять токен jwt? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение, в котором я использую тождество с токенами 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;
            }
        }
    }
}
...