Patent Publication Number: US-6216101-B1

Title: Server and terminal emulator for persistent connection to a legacy host system with client token authentication

Description:
RELATED APPLICATIONS 
     This application is a continuation-in-part application of application Ser. No. 09/069,522 filed Apr. 29, 1998, entitled, Server and Web Browser Terminal Emulator for Persistent Connection to a Legacy Host System and Method of Operation, which is a continuation application of application Ser. No. 08/625,109, filed Apr. 1, 1996 by Thomas H. Butts, et al. entitled, Server and Web Browser Terminal Emulator for Persistent Connection to a Legacy Host System and Method of Operation, now issued as U.S. Pat. No. 5,754,830. 
    
    
     TECHNICAL FIELD OF THE INVENTION 
     This invention relates in general to the field of electronic systems, and more particularly to a server and a web browser terminal emulator for persistent connection to a legacy host system and a method of operation. 
     BACKGROUND OF THE INVENTION 
     Many organizations operate computer network environments that include legacy host systems which store data and provide applications important to the operation of the organization. Such legacy host systems can include IBM mainframes (MVS, VM and VSE environments), IBM AS/400 systems and UNIX host systems. 
     It is desirable for such organizations to provide connection to the legacy host systems through terminal sessions on distributed client systems such as personal computers and computer workstations. This connection to the legacy host system provides access for users of the client systems to the data and applications on the legacy host system. These terminal sessions can include 3270, 5250, NVT and VT220 type terminal sessions. 
     One conventional method for providing terminal sessions is to execute a terminal emulator application on the client systems that connects directly to a host legacy system using a TCP/IP socket connection. Another conventional method is to provide connection through a web browser application by translating standard legacy data flows into HTML pages. However, such conventional web browser methods suffer from an inability to handle real-time host updates to user screens as well as other significant problems. For example, forms-based HTML/TN3270 packages are unable to overcome a range of problems associated with common HTML implementations such as real-time host updates to user screens or finding a user&#39;s browser platform address on the network. 
     SUMMARY OF THE INVENTION 
     One aspect of the invention is a computer-implemented terminal session emulator for providing browser-based access to legacy host applications. An emulation server is in communication with a web server, by being built into an existing web server or otherwise. The emulation server negotiates a persistent connection between a legacy host system and a client system. Applet code is operable to create an applet process executing under a web browser on a client system. This applet code is downloadable to the client system in response to receiving a uniform resource locator associated with the legacy host system. When executed by the client system, the applet process is operable to communicate with the emulation server to provide a terminal session to a user of the client system via the persistent connection. The applet process has an associated protocol that handles communications between the applet process and the emulation server. The emulation server is further operable to generate a client token, to pass the client token to the client system, and to refuse the persistent connection if the applet process does not return the client token. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a computer network environment that allows connection of a client system to a legacy host system using a web/emulator server according to the teachings of the present invention; 
     FIG. 2 is a flow chart of a method for connecting a client system to a legacy host system using a web/emulator server according to the teachings of the present invention; and 
     FIG. 3 is a block diagram of load-balancing across multiple web/emulator servers according to the teachings of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 is a block diagram of a computer network environment, indicated generally at  10 . Network environment  10  includes a legacy/SNA environment  12 , a TCP/IP environment  14  and a public Internet/intranet environment  16 . 
     Legacy/SNA environment  12  includes one or more legacy host systems such as an IBM host system  18  and a UNIX host system  19 . IBM host system  18  can comprise an IBM mainframe (MVS, VM and VSE environment) or an IBM AS/400 system. UNIX host system  19  can comprise a computer workstation or server running a UNIX-type environment. 
     A gateway system  20  can be coupled to IBM host system  18  via a connection  22 . Connection  22  can comprise an SNA or channel attachment to IBM host system  18 . Gateway system  20  provides an interface between legacy/SNA environment  12  and TCP/IP environment  14 . Gateway system  20  can be integral with IBM host system  18  or can be a separate, add-on system extending the functionality of IBM host system  18 . For example, gateway system  20  can comprise an OC SERVER II™ gateway product available from OPENCONNECT SYSTEMS. UNIX host systems  19  and some IBM host systems  18  have built in TCP/IP connectivity such that the use of a gateway system  20  is unnecessary. 
     TCP/IP environment  14  includes a server system  24 . Server system  24  executes one or more web/emulator servers  26 . Web/emulation server  26  provides an interface between TCP/IP environment  14  and public Internet/intranet environment  16  and is operable to execute one or more client threads  28 . Web/emulator server  26  is operable to connect to gateway system  20 , to IBM host system  18  and to UNIX host system  19  via a persistent TCP/IP socket connection  30 . Server system  24  includes a data storage device  32  that stores applet code  34 . Applet code  34  comprises executable code for an applet process. Web/emulation server  26  can comprise an OC://WEBCONNECT™ server available from OPENCONNECT SYSTEMS, and applet code  34  can comprise a JAVA applet for use within SUN MICROSYSTEM&#39;s JAVA environment. 
     Public Internet/intranet environment  16  includes one or more client systems  36 . Client system  36  can comprise a desk top computer such as a personal computer or computer workstation. Client system  36  is operable to execute a web browser  38 . Web browser  38  is operable to establish a virtual machine  40  for executing an applet process  42 . Applet process  42  comprises an instance of applet code  34  downloaded to client system  36  by web/emulator server  26 . Applet process  42  is connected to client thread  28  via a persistent TCP/IP socket connection  44 . Web browser  38  can comprise a commercially available web browser application such as NETSCAPE NAVIGATOR that is JAVA-capable and applet process  42  can comprise a JAVA applet. 
     In operation, web/emulator server  26 , client thread  28  and applet process  42  form a web browser terminal emulator providing a persistent bidirectional connection between client system  36  and a legacy host system such as IBM host system  18  or UNIX host system  19 . Applet process  42  communicates with client thread  28  across persistent TCP/IP socket connection  44 . Client thread  28  communicates with an appropriate legacy host system, either IBM host system  18  or UNIX host system  19 , across a persistent TCP/IP socket connection  30 . Client thread  28  and applet process  42  allow a user of client system  36  to use web browser  38  to invoke a terminal session for accessing data and applications on a legacy host system. Each web/emulation server  26  is operable to manage a plurality of client threads  28  associated with a plurality of applet processes  42 . In one embodiment of the present invention, each web/emulation server  26  is operable to manage a thousand such connections. 
     Client thread  28  executes under web/emulator server  26  and is operable to communicate with a legacy host system across a persistent TCP/IP socket connection  30 . Client thread  28  is operable to interface between TCP/IP environment  14  and public Internet/intranet environment  16 . Applet process  42  executes under web browser  38  and is operable to communicate with client thread  28  across persistent TCP/IP socket connection  44 . In one embodiment of the present invention, client thread  28  and applet process  42  using a web/emulator data flow. Applet process  42  is further operable to provide a terminal session to a user of the client system  36 . The terminal session can comprise a 3270, 5250, NVT or VT220 type terminal session. This terminal session provided by applet process  42  and client thread  28  is supported by a persistent TCP/IP socket connection which allows real-time bidirectional communication with the legacy host system. 
     In one embodiment of the present invention, the applet process uses three threads to implement the terminal session. The applet process uses a READ thread, a WRITE thread and an EMULATION thread. The READ thread provides a buffer interface to persistent TCP/IP socket connection  44  and reads information from the socket. The WRITE thread provides a buffer interface to persistent TCP/IP socket connection  44  and writes to the socket. The EMULATION thread provides the user interface representing the terminal session on the legacy host system. In this embodiment, the applet process and the client thread communicate using a web/emulator data flow based upon the communication protocol that is set forth in APPENDIX A. 
     According to the present invention, a user of client system  36  can access data and applications on the legacy host system using web browser  38  where the access is provided through a persistent bidirectional connection to the legacy host system. Persistent TCP/IP socket connections  30  and  44  provide this persistent bidirectional connection to IBM host system  18  or UNIX host system  19  such that real-time host updates, security, encryption, help-desk support, and other real-time features are supported. One embodiment of the present invention uses SUN MICROSYSTEMS&#39; JAVA technology and includes JAVA-capable web browsers  38  and embedded JAVA applet processes  42  to provide terminal session connectivity to client systems  36 . 
     The present invention provides connectivity to legacy host systems such as IBM host system  18  and UNIX host system  19  through web browser  38  without the need for specialized emulation software to be manually loaded on each client system  36  and without the need for user programming. Web/emulator server  26  downloads applet code  34  to client system  36  when the uniform resource locator (URL) of the legacy host system is selected by the user. This is accomplished automatically without requiring service personnel to load software on client system  36 . 
     The present invention also allows the expansion of access to existing data and applications on legacy host systems from existing client systems  36  using existing network capabilities. The present invention provides a network environment  10  that allows the use of a public Internet/intranet environment  16  having web browser tools, such as JAVA tools, and web-serving to incorporate Internet-type technologies, through the Internet or an intranet, with existing network architectures. Thus, an organization can implement web browser  38  based access to legacy host systems, such as IBM host systems  18  and UNIX host systems  19 , without scrapping or significantly restructuring existing network resources. 
     FIG. 2 is a flow chart of a method for connecting a client system to a legacy host system using a web/emulator server according to the teachings of the present invention. 
     In step  50 , a uniform resource locator (URL) associated with a legacy host system is selected from a web browser executing on a client system. The web browser can comprise a JAVA-capable NETSCAPE NAVIGATOR web browser as mentioned above. The selected uniform resource locator is received by a web/emulator server in step  52 . In step  54 , the web/emulator server downloads executable code for an applet process to the client system for connecting to the legacy host system. In step  56 , the client system executes the applet process under the web browser. The applet process can comprise a JAVA applet for execution within a JAVA virtual machine within the NETSCAPE NAVIGATOR web browser. 
     In step  57 , the applet process connects to a client thread executed by the web/emulator server, and the client thread connects to the legacy host system across persistent TCP/IP socket connections. In step  58 , the client thread then communicates with the legacy host system across the persistent TCP/IP socket connection. This communication allows the client thread to establish and maintain a terminal connection to the legacy host system. In step  60 , the client thread communicates with the applet process across a persistent TCP/IP socket connection. This communication can be accomplished using a web/emulator data flow such as that based upon the communication protocol set forth in APPENDIX A. 
     In step  62 , the applet process provides a terminal session to a user of the client system. According to the present invention, this terminal session allows real-time bidirectional communication with the legacy host system across a persistent TCP/IP socket connection to the legacy host system. This terminal session, as mentioned above, can comprise a 3270, 5250, NVT or VT220 type terminal session. 
     The terminal session can be terminated by the user of the client system as desired. The applet process and client thread are terminated, in step  64 , when the terminal session is terminated. In one embodiment, after termination, the applet process is removed from execution memory and is no longer present on the client system. In another embodiment, the executable code for the applet can be stored on a data storage device associated with the client system. In this embodiment, the web/emulation server can check the client system to determine whether new executable code for the applet needs to be downloaded based upon the version present, if any, on the data storage device of the client system. 
     The present invention provides an interface to legacy data flows, such as telnet (TN) data flows, across persistent TCP/IP socket connections to give users persistent bidirectional access to legacy host system data in terminal sessions, such as 3270, 5250, NVT and VT220 type terminal sessions. According to the present invention, terminal emulation is partially provided by applet executable code downloaded from the web/emulation server. The user can select the uniform resource locator (URL) of the legacy host system via a web browser package, such as NETSCAPE&#39;s NETSCAPE NAVIGATOR, and transparently receive the applet code which is executed and invokes an appropriate terminal session. 
     The present invention provides users of the client system access to real-time legacy host system data and applications using a web browser. The web/emulator server system converts standard legacy data flows into web/emulator data flows and vice versa permitting multi-session, multi-protocol access to legacy data and applications. The applet process converts the web/emulator data flows into a terminal session for display to the user. As mentioned above, the web browser can comprise a JAVA-capable web browser, the applet process can be a JAVA applet, and the web/emulator data flow can be based upon the protocol set forth in Appendix A. This embodiment of the present invention can blend web browsers enhanced by SUN MICROSYSTEMS&#39; JAVA with legacy host systems having TCP/IP connectivity to allow users on any client system platform to connect to and access legacy host systems via 3270, 5250, NVT and VT220 type terminal emulation. 
     FIG. 3 is a block diagram of load-balancing across multiple web/emulator servers according to the teachings of the present invention. An HTTP server  70  is coupled to a client system  72 . HTTP server  70  receives request information, REQUEST, from client system  72  in the form of a uniform resource locator (URL) and provides redirection information, REDIRECT, to client system  72 . Client system  72  is then coupled to one of a plurality of web/emulation servers  74  according to the redirection information. In this manner HTTP server  70  can redirect access by a plurality of client systems  72  to manage the load on web/emulation servers  74  to ensure a balance across all available web/emulation servers  74 . 
     This load-balancing can remain transparent to a user of client system  72 . The user enters the uniform resource locator associated with the legacy host system. That information is transmitted to HTTP server  70  as a request. HTTP server  70  interprets the request, identifies the selected legacy host system, and selects a web/emulation server  74  to manage the connection. This selection of a web/emulation server  74  can be based upon information of the current loading of each web/emulation server  74 . HTTP server  70  transparently provides redirect information to client system  72  which identifies the uniform resource locator of the selected web/emulation server  74 . Client system  72  then initiates the above described terminal session through the selected web/emulation server  74  and the selected web/emulation server  74  connects to the legacy host system as described above. 
     The present invention provides web browser connectivity with relatively low initial and recurring cost. The need for individual emulation software products based upon each particular client system is removed. This eliminates many technical support, help desk and software distribution problems, including version level control and configuration management issues. Extensive user training is no longer necessary because web browsers generally offer intuitive common user interfaces and are known by many users. Implementation time is improved by taking advantage of an existing widely-installed web browser base. Specifically, the platform independence provided by the JAVA architecture allows the web browser terminal emulator of the present invention to avoid problems with operation differences between computer environments. In addition, numerous users can be supported concurrently by each web/emulation server. For example, the OC://WEBCONNECT™product from OPENCONNECT SYSTEMS can support a thousand users per instance. 
     The present invention provides connectivity from any client system, such as a personal computer or computer workstation, to a legacy host system, such as a mainframe or mid-range system, without costly redesign or rebuilding of legacy applications. The benefits of a distributed client/server type data exchange can be realized without requiring systems redesign. This approach means that the many advantages of Internet-type access and functionality can be blended into an organization&#39;s network architecture simply and efficiently, thus protecting existing information technology infrastructures and investments. 
     Client Token Authentication 
     Often, the invention is implemented with an existing web server  26  with an established URL, as well as user security features. A feature of the invention is that it provides an additional security feature that prevents unauthorized users from accessing the legacy host. This security feature uses a “client token” technique that is transparent to the user&#39;s existing security scheme. 
     Referring again to FIG. 1, as explained above, the invention is used within a “browser-based SNA-capable” communications network, where a server  26  downloads an applet process  42  to a client system  36  in response to a URL call from client system  36  to host system  10 . Host system  10  (with or without the aid of a separate gateway) provides a SNA-type data flow. The applet process  42  generates the terminal emulation session at client system  36 . Various embodiments of the invention use different SNA data to provide different terminal sessions, such as 3270, 5250, NVT, or VT220 terminal sessions. 
     The connection between host system  18  and client system  36  is a persistent connection. Various embodiments of the invention negotiate and maintain the persistent connection using different configurations. For example, the network may or may not include a TN server (gateway  20 ) or a built-in TN interface at host system  18 . Also, although FIG. 1 illustrates server  26  as having both web server and emulation server functions implemented on the same computer, they may be implemented on separate computers. Furthermore, the emulation server functions may be implemented on host system  18 , with or without a separate web server. Regardless of the specific configuration, common characteristics of the invention are the downloading of an applet process  42  to the client system and the negotiation of a persistent connection between legacy system  18  and client system  36 . 
     The terminal session data flow is established in accordance with a protocol associated with the applet process  42 , that is, a protocol that permits applet process  42  to communicate with host system  18 . This communication may be via a emulation programming at server  26 , which performs tasks such as encryption. In the example of this description, applet process  42  is a Java applet and the protocol is consistent with the Java language. However, the invention may be implemented with applets in other languages, with a common characteristic being that the applet is downloaded to provide client-executable code and has an associated protocol that permits it to communicate with server  26 . 
     When client system  36  requests access to server  26 , such as by requesting a URL, server  26  generates a client token. The client token may have any number of formats —in the example of this description, it is a 128-bit randomly generated number. 
     Server  26  downloads the token along with applet process  42 . When client system  36  begins to execute applet process  42 , the token is passed to the applet process as a parameter. Applet process  42  uses this token when it attempts to establish communications back to server  26 . An applet process not having the proper token is refused connection. The token has a configurable time-to-live, so that if a connection is not made within the specified time, the token is removed from the “valid token” list maintained by server  26 . 
     The client token may also be used for persistent connection maintenance. The establishment of persistent connections gives rise to the potential for lost connections. If a connection is lost, it is desirable to have a means for establishing the connection as transparently to the user as possible. For persistent connection maintenance, server  26  is configured to maintain a persistent connection state. This state includes the client token, as well as other information such as a copy of the screen display or incoming keystrokes. If for some reason, there is a loss of connection to client system  36 , server  26  maintains the connection to host system  10 . Applet process  42  retries connection attempts to server  26 . Once a new connection is established, applet process  42  presents the token to server  26  for validation. If the token is not valid, the connection is discontinued. The connection to the host system  10  continues until a valid token is presented or a time out value expires.