Abstract:
A management server manufactures a secure, tamper-resistant token for a particular user specifying the permissions and authorizations that user possesses. The token may be in the form of a digitally-signed message specifying, for example, a particular computer and associated port number that the user is permitted to access. The management server delivers the token to the user, preferably over a secure communications session. When challenged, the user presents the secure token to the security proxy server. The security proxy server examines the token to be sure it is authentic and has not be tampered with, and then extracts information contained in the token to determine the user&#39;s authorization to access a particular computer, particular port number and/or other resource. The security proxy server then establishes authorized communication with the authorized computing resource based on the information contained in the user&#39;s token, and thereafter may act in one embodiment as essentially a passthrough or proxy for permitting the user to access and communicate with the resource.

Description:
FIELD  
       [0001]     Exemplary embodiments herein generally relate to secure computing, and more particularly to authorization and permissions. Still more particularly, exemplary embodiments relate to authorizing users to access a remote computer using a secure proxy server that challenges the users to present secure authorization tokens issued e.g. by a management server.  
       BACKGROUND AND SUMMARY  
       [0002]     As we rely more and more on computers and computer networks, computing security becomes increasingly more important. We read in the newspaper about cyber criminals breaking into computers and computer networks and stealing critical information such as credit card and bank account information. We are always on the lookout for computer viruses that may attack and destroy information on our computers. Imagine the harm that could result if confidential computerized medical or personnel records are broken into and distributed over the Internet.  
         [0003]     Much has been done to solve these problems. For example, tools have been developed that allow computers to communicate securely. In the context of the World Wide Web, a security protocol known as Secure Sockets Layer (SSL) provides both privacy (e.g., secrecy) and authentication (e.g., confidence that a computer&#39;s and/or user&#39;s asserted identity is true). The SSL technology has been built into most Internet browsers and web servers, and so has become widely available to protect electronic commerce and other sensitive communications.  
         [0004]     The SSL protocol works by encrypting data passing between computers through use of encryption keys and associated encryption techniques. The SSL technology also provides secure authentication over a series of successive data exchanges. This authentication for example prevents an attacker from injecting his or her own computing device between already-communicating computers to intercept sensitive information and/or insert inauthentic information (e.g., substituting the attacker&#39;s own shipping address for that of a legitimate user) into the data stream being exchanged. See also a related Transport Layer Security (TLS) protocol that has become an Internet standard (RFC 2246).  
         [0005]      FIG. 1  shows an example use of such security protocols. In the illustrative example shown, a user operating an input-output device  50  wants to communicate with computer  52 . The user&#39;s device  50  (which may be a so-called “client”) has the SSL/TLS functionality in this example. The conventional computer  52  may or may not have this SSL/TLS functionality but it is nevertheless desired to provide secure communications between the user device and the computer. While it would be possible to modify the computer  52  to provide SSL/TLS capabilities, this may not always be practical or cost-effective.  
         [0006]     An alternative approach shown in exemplary illustrative  FIG. 1  is to introduce a security proxy server  54  between the user device  50  and the computer  52 . Security proxy server  54  has the requisite SSL/TLS capabilities to communicate securely with the user device  50 , and otherwise acts as a passthrough for the data content traveling between computer  52  and the user computer  50 . In a particular example shown, the user device  50  and the security proxy server  54  establish a secure data communications session using the SSL/TLS, SSH or any other desired secure protocol. In this particular example, a negotiation process  56  is performed between the user computer  50  and the security proxy server  54 . This negotiation process  56  results in negotiating a secure session including session encryption keys for use during the data exchange to follow.  
         [0007]     Based upon the security parameters set up through the negotiation phase  56 , the user computer  50  and security proxy server  54  establish a secure “tunnel”  58  over the network. This secure tunnel—which is in this example constructed using cryptography—provides a private, authenticable secure link for carrying the data between user device  50  and security proxy server  54 . This secure tunnel  58  can be supported by an insecure network such as the Internet and yet still provide both privacy and authentication for communications between user device  50  and server  54 .  
         [0008]     To communicate with computer  52 , user device  50  sends information through the secure tunnel  58  to the security proxy server  54 . The security proxy server  54  extracts the received information and passes it along to computer  52  over a further communications link  60  (which in this case may be unencrypted and rely on physical security such as controlled access to a physical facility as well as a secure firewall). When computer  52  wants to send a message to the user device  50 , it communicates the message to the security proxy server  54  over link  60 . The security proxy server  54  in turn communicates the message via secure tunnel  58  to user device  50 . While end-to-end security is not provided in this particular example, the arrangement shown is adequate and very useful for many situations where it is desirable to use a computing device  52  behind a firewall (which may be part of proxy server  54 &#39;s functionality) that does not have SSL/TLS protocol capabilities.  
         [0009]     These known security techniques and protocols have been widely successful and are very useful for allowing secure communications to proceed over an essentially insecure network such as the Internet. However, security problems remain requiring additional solutions.  
         [0010]     One area that the Secure Sockets Layer and Transport Security Layer protocols do not directly address relates to certain authorization issues. User or computer authorization generally relates to granting or withholding privileges or permissions to access particular computers or computing functions. For example, in connection with an enterprise such as a company or any other organization large or small, there may be some confidential computerized information and/or functions that are restricted for access by only certain users or classes of users. For example, some enterprises have especially confidential data stored on a special server that only certain users are allowed to log into. In other contexts, access to certain software functionality may be limited to only certain authorized users. Even within a particular software application, it is commonplace for some functionality to be restricted to only certain classes of users (e.g., all can view data but only certain users can change the data).  
         [0011]     Referring to the  FIG. 1  example, it is not readily apparent how flexible secure authorization can be provided. Computer  52  typically thinks it is communicating with security proxy server  54 —which in a sense acts as a secure “stand-in” for user device  50 . Many different user devices  50  may share the same security proxy server  54 . While the arrangement shown in  FIG. 1  can certainly accommodate ordinary user name/password based computer  52  authorization functionality, it would be desirable to permit additional, more secure and flexible authorization management.  
         [0012]     Preferred exemplary illustrative non-limiting embodiments solve these and other problems by introducing new authorization functionality within the security proxy server. Such authorization functionality may use tokens supplied to user devices by other trusted computers or agents such as a management server for example—these tokens specifying to the security proxy server which permissions and authorizations are being granted to particular users.  
         [0013]     In one example non-limiting illustrative arrangement, a management server manufactures a secure, tamper-resistant token for a particular user specifying the permissions and authorizations that user possesses. The token may be in the form of a digitally-signed message specifying, for example, a particular computer and associated port number that the user is permitted to access. The management server delivers the token to the user, preferably over a secure communications session. When challenged, the user then presents the secure token to the security proxy server. The security proxy server examines the token to be sure it is authentic and has not be tampered with, and then extracts information contained in the token to determine the user&#39;s authorization to access a particular computer, particular port number and/or other resource. The security proxy server then establishes authorized communication with the authorized computing resource based on the information contained in the user&#39;s token, and thereafter may act in one embodiment as essentially a passthrough or proxy for permitting the user to access and communicate with the resource.  
         [0014]     Non-limiting exemplary advantages and additional features of exemplary embodiments include: 
        The arrangement proves that the user is authorized by the management server or other trusted entity to access a computing resource indicated in the authorization token.     The arrangement hides the resource information. An attacker could learn how to access the security proxy server but is still not able to obtain the information needed to access the ultimate computing resource. The attacker can&#39;t reach past the security proxy server without a valid authorization token.     The authorization token may contain authorized user information. The security proxy server may log user information in a proxy server log file for monitoring and other purposes.     An administrator can configure the authorization token to expire after a predetermined time period. Different valid time periods may be used. This prevents the authorization token from being reused by an attacker or by a user who once had but no longer has authorization.     The session token can be reused within the time period, or the server can invalidate the token after it is used once.       
 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0020]     These and other features and advantages are better and more completely understood by referring to the following detailed description of presently preferred exemplary illustrative non-limiting embodiments in conjunction with the drawings, of which:  
         [0021]      FIG. 1  shows an example communication between a user device and a computer or other resource through a security proxy server;  
         [0022]      FIG. 2  shows an exemplary illustrative computing network including a management server that mints authorization tokens for examination by the security proxy server;  
         [0023]      FIG. 3  shows an exemplary non-limiting illustrative process; and  
         [0024]      FIG. 4  shows an exemplary illustrative non-limiting authorization token data structure. 
     
    
     DETAILED DESCRIPTION  
       [0025]      FIG. 2  shows an example overall non-limiting secure computing arrangement  100 . Computing arrangement  100  includes a user or client device  50  that wishes to communicate with a computer  52  or other computing resource. The user device  50  may be any sort of device including a data entry means and a display means. Examples include a personal computer workstation with World Wide Web browser running Microsoft Windows, Macintosh, Linux, Unix or any other suitable operating system, a web-enabled cellular telephone, personal data assistant, entertainment device, or any other networked computing device. Computer  52  may be any computing or networked resource. In one specific non-limiting example, computer  52  comprises a so-called “legacy” host computer such as a mini computer or main frame computer (e.g., an IBM or other main frame, an AS/400 or other midsize computer, a Unix host, an Open VMS host, Hpe3000, or any other environment).  
         [0026]     As discussed in connection with  FIG. 1 , user device  50  communicates with computer  52  through a security proxy server  54 . In the particular example shown, the user device  50  is located outside of a firewall  102 , and may be connected to the security proxy server  54  via any convenient networking or other data communications arrangement including for example the Internet, a Virtual Private Network (VPN), a wireless network or connection, a local area or wide area network, or any other desirable data communications link. In the exemplary arrangement shown, a suitable conventional secure protocol is used to provide privacy and authentication for the communications between user device  50  and security proxy server  54  occurring over link  104 . In one exemplary arrangement, the SSL/TLS protocol may be used but other embodiments may use additional and/or different security protocol arrangements depending upon a particular need and other circumstances.  
         [0027]     In the example shown, the security proxy server  54  communicates within the firewall  102  with computer  52  over an additional data link  106 . Data link  106  can but need not be protected (e.g., with encryption) depending upon the particular circumstances (e.g., physical security may be adequate to protect the data being communicated over the link). In the general case, there will be multiple user devices  50  communicating with security proxy server  54  and/or security proxy server  54  may be communicating with many different computers  52  or other computing resources.  
         [0028]     System  100  in the exemplary illustrative embodiment also includes a management server  110 . Management server  110  in the exemplary non-limiting arrangement shown manages communications between user device  50  and computer  52  by communicating with the user device  50 . Management server  110  does this by issuing authorization tokens to user device  50  that can be authenticated by security proxy server  54  and used to guide or control the permissions that the security proxy server grants to the user device. In this particular instance, the user device  50  is not trusted at least because it is outside of firewall  102 . In the exemplary embodiment, management server  110  generates authorization tokens which it supplies to the user device  50 . Security proxy server  54  will not allow the user device  50  to access computer  52  or other computing resources without an unexpired, appropriate security token.  
         [0029]     In the exemplary embodiment, management server  110  supplies such authorization tokens to user device  50  over a link  112  that passes outside of firewall  102 . In the example shown, a secure communications protocol (e.g., HTTPS) of conventional nature is used to protect link  112  and to authenticate user device  50  to the management server  110  so the management server can be assured it is not providing the authorization token to an attacker or other unauthorized user. As part of this secure protocol, user device  50  may be required to prove it is authentic (e.g., by providing a password, a certificate, etc.). Management server  110  in this example issues tokens only to authentic users.  
         [0030]     Management server  110  also has access to a conventional directory server  114  providing access control and authorization information (e.g., via conventional LDAP or other directory services) to determine which authorizations to grant to particular user devices  50 . Management server  110  in this illustrative example communicates with directory server  114  via a secure (e.g., SSL-protected) data link  116  within firewall  102 .  
         [0031]     As also shown in  FIG. 2 , the user device  50  may communicate with any number of additional computers  118  some of which may be capable of secure (e.g., SSL/TLS or other) communications. In such case, security proxy server  54  may not need to be placed between user device  50  and computer  118 , although additional policy management and other authorization functionality can be provided by the security proxy server  54  even if computer  118  could maintain a secure session with user device  50  without use of the security proxy server.  
         [0032]     In one example non-limiting embodiment, management server  110  may comprise a “Reflection for the Web” (RWeb) management server installed on a conventional web server computer. An application server such as Tomcat or Websphere may be used. User device  50  may provide a conventional web browser that supports JAVA or other applet technology—these applets being used to provide host or other emulation functionality in this particular example. The security proxy server  54  is placed, in the exemplary arrangement, in the same sub-net behind the same firewall  102  as computer  52 . Data between the security proxy server  54  and computer  52  are not encrypted in this particular example. In this example, only one port needs to be opened on the firewall  102  between the user device  50  and the security proxy server  54  for clients  50  to connect with multiple computing devices  52  from their web browsers. In the illustrative non-limiting example shown, the communications between the user device  50  and the management server  110  is HTTPS, although other secure communications protocols could be used instead. In the illustrative non-limiting example shown, the communication between the user device  50  and the security proxy server  54  is SSL/TLS over TCP/IP although other secure protocols and transport protocols may be used in other applications as desired.  
         [0033]      FIG. 3  shows an example non-limiting flow chart of illustrative non-limiting steps performed within the  FIG. 2  system  100 . In the example shown, a user at user device  50  directs his or her web browser to management server  110  in order to log into the management server ( FIG. 3 , block  202 ). The management server  110  first authenticates the user ( FIG. 3 , block  204 ). Management server  110  may perform this user authentication in a way that depends upon the particular access control model. For example, if the exemplary arrangement uses LDAP, the management server  110  may authenticate the user with an LDAP user name/password. If desired, the user device  50  may present a digital certificate or other credential so management server  110  can be assured that the user device  50  is authenticate.  
         [0034]     Once the management server  110  has determined who is operating user device  50  and is satisfied that the user and associated device are authenticate, it may retrieve a list of sessions and authorizations that the user device  50  and/or its associated user is authorized to access ( FIG. 3 , block  204 ). In one example embodiment, the management server  110  sends to the user device  50  a list of authorized sessions or other resources. For example, the management server  110  may send a “links list” in HTML or other format listing the sessions or other computing resources that the user is authorized to access. In such a case, the user may select a link from the “links list” for use in a secure session ( FIG. 3 , block  206 ).  
         [0035]     In a particular example shown, the management server may respond by sending user device  50  HTML or XML including or referencing a particular page, command, emulator applet or other functionality that user device  50  should begin executing, following or using in order to activate the secure session with proxy server  54 . In the example shown, the management server  110  also sends to user device  50  an “authorization token” ( FIG. 3 , block  208 ). In this particular non-limiting example, the authorization token (an example of which is shown in more detail in  FIG. 4 ) may contain the authorized computer  52  name and port number as well as other information. In the example shown, the authorization token is preferably digitally signed with the management server  110 &#39;s private key. The token is preferably also time stamped and/or provided explicitly or implicitly with a particular finite expiration date and time. See  FIG. 3 , block  210 . As shown in  FIG. 4 , the token&#39;s digital signature may include a hash message digest which ensures the data is not tampered with. The hash is digitally signed by the management server using its private key. This digital signature proves the token was issued by the management server.  
         [0036]     In the non-limiting example shown, the user device  50  connects to the security proxy server  54  via link  104 . For example, the user device  50  and security proxy server  54  may begin a standard SSL/TLS handshake. Both SSL server and client may be authenticated by its peer in the exemplary arrangement to provide additional security above the normal arrangement where client authentication is optional (in this case it is the user device  50  that is not trusted by the security proxy server  54 ). In the example shown, once the user device  50  has authenticated the security proxy server  54  and the security proxy server  54  has authenticated the user device  50 , the security proxy server challenges the user device  50  for the authorization token ( FIG. 3 , block  214 ). The user device  50  responds to this challenge by sending the encrypted authorization token to the security proxy server  54  ( FIG. 3 , block  216 ). The security proxy server  54  verifies that the authorization token is signed by the management server  110  (e.g., by decrypting the digital signature using the management server&#39;s public key), and also verifies that the authorization token has not been tampered with and is not expired. If the security proxy server  54  determines that the authorization token is unexpired and is authenticate (“yes” exit to  FIG. 3  decision block  218 ), the proxy server extracts the computer name and port number from the authorization token and uses this information to connect to the designated computer  52  via the appropriate port ( FIG. 3 , block  220 ). If, on the other hand, the security proxy server  54  determines that the token is not authentic and/or has expired (“no” exit to  FIG. 3  decision block  218 ), the security proxy server  54  declines to establish any connection with computer  52 .  
         [0037]     Once the security proxy server  54  establishes a connection with computer  52 , it functions as a conventional proxy server by passing through data communications between the computer  52  and user device  50 .  
         [0038]     While the standard SSL/TLS (RFC 2246) security protocol generally does not support authorization, the security proxy server  54  in the exemplary non-limiting embodiment adds authorization functionality by verifying, examining and acting in response to an authorization token created by management server  110 . Such an authorization token authorizes a user to access a specific system  52  in the exemplary illustrative embodiment. The authorization token contains authorized computer information and user information in the illustrative embodiment. It is digitally signed using the private key of the management server  110  and is time stamped. The authorization token is transferred from management server  110  to user device  50  over secure link  112  and from the user device  50  to the security proxy server  54  over secure link  104 . The authorization token proves that the user device  50  and/or the associated user is authorized by the management server  110  to access the computer  52  indicated in the authorization token.  
         [0039]     The authorization token and/or the way it is transferred hides the information identifying computer  52  and techniques for accessing it. An attacker outside of firewall  102  may learn the name and port number of the security proxy server  54 , but in this particular example it cannot obtain the information needed for accessing computer  52  such as host name and port number. An attacker cannot get through the security proxy server  54  without a valid authorization token. The authorization token also may contain authorized user information used for logging by the security proxy server  54 . An administrator can configure the authorization token valid or expiration time period to prevent the authorization token from being reused later—for using the user device  50  to obtain a new authorization token from management server  110 .  
         [0040]     It is to be understood that the invention is not to be limited to the disclosure, but on the contrary, is intended to cover various modifications and equivalent arrangements included within the scope of the claims.