public async Task <IEnumerable <JsonWebKey> > ResolveJsonWebKeys(IHttpClientFactory httpClientFactory) { if (JsonWebKeys != null && JsonWebKeys.Any()) { return(JsonWebKeys); } Uri uri = null; if (string.IsNullOrWhiteSpace(JwksUri) || !Uri.TryCreate(JwksUri, UriKind.Absolute, out uri)) { return(new JsonWebKey[0]); } using (var httpClient = httpClientFactory.GetHttpClient()) { httpClient.BaseAddress = uri; var request = await httpClient.GetAsync(uri.AbsoluteUri).ConfigureAwait(false); request.EnsureSuccessStatusCode(); var json = await request.Content.ReadAsStringAsync().ConfigureAwait(false); var keysJson = JObject.Parse(json)["keys"].ToString(); var jsonWebKeys = JsonConvert.DeserializeObject <JArray>(keysJson).Select(k => JsonWebKey.Deserialize(k.ToString())); return(jsonWebKeys); } }