Пример #1
0
        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);
        }
Пример #2
0
        public static FakeJwks GetInstance()
        {
            if (_instance == null)
            {
                _instance = new FakeJwks();
            }

            return(_instance);
        }
Пример #3
0
        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);
            });
        }