using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Microsoft.IdentityModel.Tokens;
static void Main(string[] args)
MainAsync(args).GetAwaiter().GetResult();
static async Task MainAsync(string[] args)
const string auth0Domain = "https://tthad.b2clogin.com/ba6750d3-d0c9-47c5-b8f6-989c1e0c0312/v2.0/";
const string auth0Audience = "a8063c4f-3c0c-4c1b-8a29-98a3c117a22e";
const string testAccessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IkdfMnNIQ3VBbG82aUdNUjhOaC0wbUxvMWlET1BEZzNwbGE0blZYOG9hZEEifQ.eyJleHAiOjE2MTExODc5MTEsIm5iZiI6MTYxMTE4NDMxMSwidmVyIjoiMS4wIiwiaXNzIjoiaHR0cHM6Ly90dGhhZC5iMmNsb2dpbi5jb20vYmE2NzUwZDMtZDBjOS00N2M1LWI4ZjYtOTg5YzFlMGMwMzEyL3YyLjAvIiwic3ViIjoiYWVjMmQzYmUtMjlhZC00MDA0LWE2M2UtZjVmNmM3ZDBlNjg3IiwiYXVkIjoiYTgwNjNjNGYtM2MwYy00YzFiLThhMjktOThhM2MxMTdhMjJlIiwiYWNyIjoiYjJjXzFhX2hleV9zaWdudXBfc2lnbmluIiwibm9uY2UiOiJkZWZhdWx0Tm9uY2UiLCJpYXQiOjE2MTExODQzMTEsImF1dGhfdGltZSI6MTYxMTE4NDMxMSwiZW1haWwiOiJqcGZkaWFzQG5ldC5zYXBvLnB0IiwibmFtZSI6ImpvYW8gZGlhcyIsImdpdmVuX25hbWUiOiJqb2FvIiwiZmFtaWx5X25hbWUiOiJkaWFzIiwidGlkIjoiYmE2NzUwZDMtZDBjOS00N2M1LWI4ZjYtOTg5YzFlMGMwMzEyIn0.dSwVH45TppmtPBuf3q3yMPP0on2s_AgyhwXML1GofTUL9cjyJ6PdQOUHWxlbtlcFKu3o5C7T5FpYRzHfv7oJG-Tsh7QTBtAtBzP7-PYMx0dhgCRyFjl9kGNBIU9rG6OrY3eI04A_SsxStM8Ayy6LeIyktGx02qiRzxuxqIr2ZGWjhSSSj_05nSBhSXHb93vbNp03XfFRtCIJeVJKPgPNHQDl6sNrHfEpp1NipQOgZ5l6d4r2Ke2qyg25YmpZw3ith8gkoOjKH7AN_Gus-efg2Hz58vv0LAF5XhieLMvl_ax7s9rF1MtbHNzApTIwov5HQj1WVNNSbnhzujfUlZmdMw";
IConfigurationManager<OpenIdConnectConfiguration> configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>("https://tthad.b2clogin.com/tthad.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_Hey_signup_signin", new OpenIdConnectConfigurationRetriever());
OpenIdConnectConfiguration openIdConfig = await configurationManager.GetConfigurationAsync(CancellationToken.None);
Console.WriteLine(openIdConfig.SigningKeys.ToString());
TokenValidationParameters validationParameters =
new TokenValidationParameters
ValidIssuer = auth0Domain,
ValidAudiences = new[] { auth0Audience },
IssuerSigningKeys = openIdConfig.SigningKeys
SecurityToken validatedToken;
JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
var user = handler.ValidateToken(testAccessToken, validationParameters, out validatedToken);
Console.WriteLine($"Token is validated. User Id {user.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value}");
Console.WriteLine("Finished");