private static void ConfigureClient(IServiceCollection services) { var mo = new Mock <IHttpClientFactory>(); mo.Setup(m => m.GetHttpClient()) .Returns(() => { var url = "http://localhost/custom-jwks"; var jwks = FakeJwks.GetInstance().Jwks; var keys = new JArray(); foreach (var jsonWebKey in jwks) { var key = new JObject(); keys.Add(jsonWebKey.GetPublicJwt()); } var result = new JObject { { "keys", keys } }; var dic = new Dictionary <string, HttpResponseMessage>(); dic.Add(url, new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(result.ToString(), Encoding.UTF8, "application/json") }); var fakeHttpMessageHandler = new FakeHttpMessageHandler(dic); return(new HttpClient(fakeHttpMessageHandler)); }); services.RemoveAll <IHttpClientFactory>(); services.AddSingleton <IHttpClientFactory>(mo.Object); }
private static void HandleCustomJwks(IApplicationBuilder app) { app.Run(async context => { var jwks = FakeJwks.GetInstance().Jwks; var keys = new JArray(); foreach (var jsonWebKey in jwks) { var key = new JObject(); keys.Add(jsonWebKey.GetPublicJwt()); } var result = new JObject { { "keys", keys } }; var data = Encoding.UTF8.GetBytes(result.ToString()); context.Response.ContentType = "application/json"; await context.Response.Body.WriteAsync(data, 0, data.Length); }); }