We have a bunch of VNC servers located on our local network. We wish to give external customers access to these VNC servers, via some sort of "middle-man" software solution which can handle authentication and TCP proxying.
Ideally, a user would start an application of some sort on their client machine, and then enter their username and password; the application (after successful authentication) would then bind to a TCP port local to the customer's machine. When the customer starts a VNC viewer and tries to connect to the local port, the application would proxy the request to the correct VNC server located inside our local network.
How could we do this?