public async Task Invoke(IDictionary<string, object> environment)
        {
            var requestPath = (string) environment["owin.RequestPath"];
            if (REQUEST_PATH_USER_INFO == requestPath)
            {
                var httpContext = (HttpContext)environment["Microsoft.AspNetCore.Http.HttpContext"];
                var accessToken = await httpContext.GetTokenAsync(OpenIdConnectParameterNames.AccessToken);
                var tendukeClient = TendukeClient.Build(accessToken);

                var userInfo = await tendukeClient.UserInfoApi.GetUserInfoAsync();
                var jsonResponse = JsonConvert.SerializeObject(userInfo);
                var responseBytes = Encoding.UTF8.GetBytes(jsonResponse);

                var responseStream = (Stream)environment["owin.ResponseBody"];
                var responseHeaders = (IDictionary<string, string[]>)environment["owin.ResponseHeaders"];
                responseHeaders["Content-Length"] = new string[] { responseBytes.Length.ToString(CultureInfo.InvariantCulture) };
                responseHeaders["Content-Type"] = new string[] { "application/json" };
                await responseStream.WriteAsync(responseBytes, 0, responseBytes.Length);
            }
            else
            {
                await nextFunc(environment);
            }
        }
        public async Task <UserInfoData> UserInfo()
        {
            var tendukeClient = await TendukeClient.BuildAsync(HttpContext);

            return(await tendukeClient.UserInfoApi.GetUserInfoAsync());
        }