Abstract:
A method of facilitating a blind referral comprising producing a referral communication for referring a client computer from a connection with a first server to a second server, wherein the referral communication comprises first server information defining a location of the first server, generating a placeholder for the first server information in the referral communication, and replacing the first server information with the placeholder in communications with the second server during the referral communication.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     Embodiments of the present invention generally relate to network computing and, more particularly, to a method and apparatus for facilitating a blind referral within a network environment wherein browsers are used. 
     2. Description of the Related Art 
     When using a browser, one server may refer a browser to another server to either receive certain information or to authorize a user for specific access. For example, upon selecting a specific link in a first server, the browser is referred to a second server for user identity verification. The second server confirms the identity of the user and refers the browser back to the first server with information that enables the user to access the information at the link. 
     During conventional referrals, a client computer is required to disclose information about the first server to the second server. In most cases, the second server needs the first server information in order to refer back to the first server upon redirection, i.e., after user identity confirmation. This creates privacy and security issues for the user of the client computer, i.e., the HTTP information is tagged with every website the browser has recently visited. As such, intercepting this list enables someone to know a user&#39;s history. Such information may provide a list of secure sites used by the user or may merely disclose types of sites the user enjoys visiting. In either case, this information is private information. No solution exists that prevents the second server (or any interceptor) from finding out about the client&#39;s use of the first server, and any other servers that are in the referral chain. 
     Accordingly, there exists a need for a method and apparatus that facilitates blind referrals within a network computing environment wherein browsers are used. 
     SUMMARY OF THE INVENTION 
     Embodiments of the present invention comprise a method and apparatus for facilitating a blind referral. One embodiment of the invention is a method of facilitating a blind referral comprising producing a referral communication for referring a client computer from a connection with a first server to a second server, wherein the referral communication comprises first server information defining a location of the first server, generating a placeholder for the first server information in the referral communication, and replacing the first server information with the placeholder in communications with the second server during the referral communication. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments. 
         FIG. 1  is a block diagram of a computer system according to various embodiments of the present invention; 
         FIG. 2  is a flow chart of a method for facilitating a blind referral according to an embodiment of the present invention; and 
         FIG. 3  is another flow chart of a method for facilitating a blind referral according to various embodiments of the present invention. 
     
    
    
     While the invention is described herein by way of example using several embodiments and illustrative drawings, those skilled in the art will recognize that the invention is not limited to the embodiments of drawing or drawings described. It should be understood that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the invention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to. Further, the word “a” means at least one. 
     DETAILED DESCRIPTION 
       FIG. 1  is a block diagram of a computer system  100  according to various embodiments of the present invention. The computer system  100  comprises a client computer  102 , a first server  104 , and a second server  106  running several applications and connected to a network  108  that generally forms a portion of the Internet which may comprise various sub-networks such as Ethernet networks, local area networks, wide area networks, wireless networks, and the like. Those skilled in the art will appreciate that the hardware depicted in the  FIG. 1  may vary from one computer system to another. For example, other peripheral devices, such as optical disk drives, graphics card, data storage devices, various other input devices, peripherals and the like, may also be used in addition to or in place of the hardware depicted. The network  108  provides access to the client computer  102  for various applications located on the first server  104  and the second server  106 . 
     The first server  104  comprises, without limitation, a CPU  124 , support circuits  126 , and a memory  128 . The CPU  124  may be one or more of any commercially available microprocessors or microcontrollers. The support circuits  126  comprise circuits and devices that are used in support of the operation of the CPU  124 . Such support circuits include, for example, one or more of cache, input/output circuits, system bus, PCI bus, clock circuits, power supplies or the like. The memory  128  may comprise random access memory, read only memory, optical memory, disk drives, removable memory, and the like. Various types of software processes or modules and information are resident within the memory  128 . For example, various processes such as an Operating System (OS) kernel (not shown), a software library (not shown), and software modules, for example, Web Page Data modules  130 , and Application module  132  are illustrated as being resident in the memory  128 . The Web Page Data module  130  may store the first server information that is used in a referral communication (e.g., a data segment in HTTP protocol). Application module  132  may be any application of interest to the user of client computer  104  e.g., a browser. 
     The second server  106  comprises, without limitation, a CPU  134 , support circuits  136 , and a memory  138 . The CPU  134  may be one or more of any commercially available microprocessors or microcontrollers. The support circuits  136  comprise circuits and devices that are used in support of the operation of the CPU  134 . Such support circuits include, for example, one or more of cache, input/output circuits, system bus, PCI bus, clock circuits, power supplies or the like. The memory  138  may comprise random access memory, read only memory, optical memory, disk drives, removable memory, and the like. Various types of software processes or modules and information are resident within the memory  138 . For example, various processes such as an Operating System (OS) kernel (not shown), a software library (not shown), and software modules, for example, web page data module  140 , and application module  144  are illustrated as being resident in the memory  138 . The web page data module  140  may store website information about a user of client computer  102 , e.g., data segments in HTTP protocol for every website recently visited by the user of client computer  102 . Application  144  may comprise software enables communications with the client computer  102  (e.g., completion of an age or identity verification) and then redirect the client computer to the first server  104 . 
     The client computer  102  comprises, also without limitation, a CPU  110 , support circuits  112 , and a memory  114 . The CPU  110  may be one or more of any commercially available microprocessors or microcontrollers. The support circuits  112  comprise circuits and devices that are used in support of the operation of the CPU  110  Such support circuits include, for example, one or more of cache, input/output circuits, system bus, PCI bus, clock circuits, power supplies or the like. The memory  114  may comprise random access memory, read only memory, optical memory, disk drives, removable memory, and the like. Various types of software processes or modules and information are resident within the memory  114 . For example, various processes such as an Operating System (OS) kernel (not shown), a software library (not shown), and software modules, for example, modules  118 ,  120 ,  122 , are illustrated as being resident in the memory  114 . The module  118  comprises mapping information in accordance with certain aspects of the present invention. The mapping information contains data that matches a placeholder generated by blind referral module  120  to the first server  104  address information. Generally, the placeholder is a set of dummy characters or may be a dummy address. The mapping information  118  and blind referral module  120  may form a portion of or may be coupled to a browser  122 . 
     One embodiment of the present invention is a method that is performed by the browser  122  of  FIG. 1  for facilitating a blind referral. For example,  FIG. 2  depicts a flow diagram of method  200  for facilitating a blind referral. The method  200  begins at step  202  and proceeds to step  204 , wherein the method  200  ascertains if a referral communication has been initiated. If no referral communication is detected (option “No”), the method ends at step  212 . The referral communication is detected when the browser  122  is informed that the first server  104  is redirecting the browser  122  to the second server  106 . 
     If the referral communication is detected (option “Yes”), then at step  206 , a placeholder for a first server information is generated (e.g., a set of dummy characters or a dummy address). The placeholder may also comprise at least one of a hash value, a client identification, a service identification, a proxy server, or a random alphanumeric string of characters. 
     At step  208 , the first server information (e.g., a data segment in HTTP protocol for every website recently visited by the user of client computer  102 ) is replaced with the placeholder. As such, the HTTP protocol cannot be analyzed to determine that the first server was visited by the user. To facilitate redirection back to the first server, the method  200  stores the first server information and the placeholder as mapping information. When redirection is needed, the browser uses the mapping information to identify the first server and redirect the connection to that server as described below. The method, again, ends at step  212 . 
       FIG. 3  depicts a flow diagram of a method  300  for performing a referral communication in accordance with an alternative embodiment of the invention wherein the second server redirects the browser back to the first server. The method begins at step  302  and proceeds to step  304 , wherein the method  300  ascertains if a referral communication has been initiated, e.g., has the browser detected a redirection. If a referral communication is not detected at step  304  (option “No”), the method ends at step  318 . 
     If it is ascertained that a referral communication has been initiated (option “Yes”), then, at step  306 , a first server tag (e.g., a data segment in HTTP protocol) is extracted from the referral communication. Next, at step  308 , the blind referral module such as the blind referral module  120  that is resident in the client computer  102 , generates a placeholder tag (e.g., an HTTP tag for HTTP headers). In step  310 , the placeholder tag is mapped to the first server tag. That is, for example, blind referral module  120  may relate the first server tag to the placeholder tag in a look-up table stored in the memory  114  as mapping information  118 . At step  312 , after the placeholder is mapped, the client computer  102  may communicate with the second server  106  using the placeholder tag which, for example, has been placed in the first server HTTP header. Now, the second server  106  does not have any information regarding the identity of the first server  104 . 
     Once the second server  106  has finished communicating with the client computer  102  (e.g., completion of an age or identity verification), the client computer  102  is redirected by the blind referral module  120  to the placeholder address, at step  314 . At step  316 , the blind referral module  120  extracts the placeholder tag and replaces it with the first server tag using the mapped information. Accordingly, the second server  106  blindly refers the client computer  102  to the first server  104 . In this manner a client computer always maintains control of the referral information. Method  300  ends at step  318 . 
     In yet another embodiment of the present invention, the placeholder generated for the second server is verified using a security service coupled to the second server. 
     While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.