Token Validation (ASP.NET)

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class TokenCheckController : ApiController
{
    [HttpPost]
    public async Task CheckToken()
    {
        var input = await Request.Content.ReadAsStringAsync();
        var data = JsonConvert.DeserializeObject>(input);

        if (data.ContainsKey("jwtToken") && !string.IsNullOrEmpty(data["jwtToken"]))
        {
            string jwtToken = data["jwtToken"];
            string apiKey = "xxxx-yyyy-zzzz"; // static api key from jwteauth vendor
            string origin = "https://yourdomain.com"; // domain name

            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("Origin", origin);
                client.DefaultRequestHeaders.Add("Authorization", "Bearer " + apiKey);
                client.DefaultRequestHeaders.Add("X-JWT-Token", jwtToken);

                string url = "https://server1.jwteauth/endpoint/checkToken"; // static url endpoint
                HttpResponseMessage response = await client.GetAsync(url);

                if (response.IsSuccessStatusCode)
                {
                    var responseData = await response.Content.ReadAsStringAsync();
                    var jsonResponse = JsonConvert.DeserializeObject(responseData);

                    return Ok(jsonResponse);
                }
                else
                {
                    return InternalServerError(new Exception("Error: " + response.ReasonPhrase));
                }
            }
        }
        else
        {
            return BadRequest("Token not found.");
        }
    }
}

📅January 13, 2025