Title of Invention

MEHOD AND APPARATUS FOR PROVIDING AUTHORIZED REMOTE ACCESS TO APPLICATION SESSIONS

Abstract A method and apparatus for providing authorized remote access to one or more application sessions includes a client node, a collection agent, a policy engine, and a session server. The client node requests access to a resource. The collection agent gathers information about the client node. The policy engine receives the gathered information, and makes an access control decision based on the received information. The session server establishes a connection between a client computer operated by the user and the one or more application sessions associated with the user of the client node identified in response to the received information.
Full Text WO 2006/038985 PCT/US2005/028605
METHOD AND APPARATUS FOR PROVIDING AUTHORIZED REMOTE
ACCESS TO APPLICATION SESSIONS
FIELD OF THE INVENTION
The present invention relates to a method and apparatus for providing
authorized remote access to a plurality of application sessions and, in particular,
to a method and apparatus for providing authorized remote access to a plurality
of application sessions implementing enhanced security.
BACKGROUND OF THE INVENTION
Technologies for providing remote access to networked resources
include a variety of server/client software combinations. MetaFrameā„¢ server
software in communication with Intelligent Computing Architecture (ICA) clients,
available from Citrix Systems, Inc., Ft Lauderdale, Florida, and X Servers in
communication with X Windows clients available from the X Consortium are two
examples that provide remote access to applications executing on a server.
Computer user behavior and the stability of network communication
channels over which their computers communicate are often unpredictable.
Networked users on occasion need to change computing environments while
forgetting to, or without having the opportunity to fully save their work product or
to shut down their systems. In other cases, communication channels
unexpectedly fail or computers crash, which can result in the loss of work
product, if the session is not restored or terminated gracefully.
When a computer user changes from one computing environment to
another, access control decisions may change. Existing methods fail to provide
smooth reconnection of the user to sessions where access does not change
while maintaining unauthorized sessions for future reconnection when the user
returns to an authorized environment. A method that detects shifts in computing
environments, identifies changes in access control rights stemming from such
shifts, and reconnects the user only to authorized sessions would be desirable.
-1-

WO 2006/038985 PCT/US2005/028605
BRIEF SUMMARY OF THE INVENTION
The present invention relates to a method and apparatus providing
authorized remote access to a plurality of application sessions implementing
enhanced security.
In one aspect, the invention relates to a method for providing authorized
remote access to a plurality (e.g., two or more) of application sessions includes
receiving information associated with a user. A collection agent gathers the
information and transmits it to a policy engine. The policy engine makes an
access control decision based on the received information. in one embodiment,
the policy engine also identifies a plurality of application sessions already
associated with the user in response to the information. The method also
includes connecting a client node operated by the user to the identified plurality
of application sessions in response to the received information. In some
embodiments, there can be multiple applications sessions, and some of the
multiple applications sessions can be running on multiple servers.
In another aspect, the invention relates to a method and an apparatus for
granting authorized access to resources. The apparatus comprises a policy
engine including two components. The first component receives information
about a client node and generates a data set from the information. The second
component receives the data set, and provides to the first component an
enumeration of resources available to the client based on the received data set.
The first component presents the enumeration of resources to the client node.
In one embodiment, the first component receives the information from a
collection agent. In one embodiment, each component further comprises a
database. The database in the first component stores conditions. The database
in the second component stores policies. The first component applies the
conditions to the received information and the second component applies the
policies to the received data set. In this embodiment, the policies determine the
application sessions that the client node may access.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other aspects of this invention will be readily apparent from
the detailed description below and the appended drawings, which are meant to
illustrate and not to limit the invention, and in which:
-2-

WO 2006/038985 PCT/US2005/028605
FIG. 1A is a block diagram of an environment suitable for practicing the
illustrative embodiment of the present invention;
FIG. 1B and 1C are block diagrams depicting embodiments of computers
useful in connection with the present invention;
FIG. 1D is a block diagram of an embodiment of a computer network in
which the network provides a policy-based system of granting access to network
resources;
FIG. 2 is a more detailed block diagram of an embodiment of a policy
engine;
FIG. 3 is a flow diagram depicting one embodiment of the steps taken by
a policy engine to make an access control decision based upon information
received about a client node;
FIG. 4 is a block diagram of an embodiment of a computer network in
which the network provides policy-based access to file contents for a client
node;
FIG. 4B is a flow diagram depicting one embodiment of the steps taken
by an application server farm to provide file contents to a client node;
FIG. 5 is a block diagram of an embodiment of a computer network in
which the network grants access to transformed content of a resource;
FIG. 6 is a flow diagram depicting one embodiment of the steps taken by
a transformation server to transform the content of the requested file and
present the transformed contents to a client node;
FIG. 7 is a block diagram of an embodiment of a computer network in
which authorized remote access to a plurality of application sessions is
provided; and
FIG. 7B is a flow diagram depicting one embodiment of the steps taken
by a session server to connect a client node with its associated application
sessions.
DETAILED DESCRIPTION OF THE INVENTION
The illustrative embodiment of the present invention is applicable to a
distributed networking environment where a remote user requests access to
content. Prior to discussing the specifics of the present invention, it may be
-3-

WO 2006/038985 PCT/US2005/028605
helpful to discuss some of the network environments in which the illustrative
embodiment of the present invention may be employed.
FIG. 1A is a block diagram of an environment suitable for practicing the
illustrative embodiment of the present invention. A client node 102 includes a
web browser 110 and application programs 112a, 112b...112n. An application
program is any program that processes data to provide output and that uses an
operating system for access to system resources. Exemplary application
programs include: word processing applications, such as MICROSOFT WORD,
manufactured by Microsoft Corporation of Redmond, Washington; spreadsheet
programs, such as MICROSOFT EXCEL, manufactured by Microsoft
Corporation; electronic mail programs, such as MICROSOFT OUTLOOK,
manufactured by Microsoft Corporation and GROUPWISE, manufactured by
Novell Corp. of Provo, Utah; and productivity suites such as STAR OFFICE,
manufactured by Sun Microsystems of Mountain View, California.
A content server 126 includes content files 128 and may be connected to
data stores 122 and 130 holding additional content files 124 and 132
respectively. Those skilled in the art will recognize that other network storage
devices or document repositories holding content files may also be networked to
the content server 126 without departing from the scope of the present
invention. A user of the client node 102 may request content from the content
server 126 using the web browser 110 to send a request such as the depicted
Hypertext Transport Protocol. Secure (HTTPS) request 115, or an HTTP
(Hypertext Transport Protocol), FTP (File Transport Protocol) request, or, for
operations on file shares, SMB (Server Management Block Protocol) request.
In many embodiments, the content server 126, client node 102, and the
proxy server 120 are provided as personal computer or computer servers, of the
sort manufactured by the Hewlett-Packard Corporation of Palo Alto, California or
the Dell Corporation of Round Rock, TX. Figures 1B and 1C depict block
diagrams of a typical computer 100 useful as the content server 126, the proxy
server 120, or the client node 102 in those embodiments. As shown in Figures
1B and 1C, each computer 100 includes a central processing unit 102, and a
main memory unit 104. Each computer 100 may also include other optional
elements, such as one or more input/output devices 130a-130n (generally
-4-

WO 2006/038985 PCT/US2005/028605
referred to using reference numeral 130), and a cache memory 140 in
communication with the central processing unit 102.
The central processing unit 102 is any logic circuitry that responds to and
processes instructions fetched from the main memory unit 104. In many
embodiments, the central processing unit is provided by a microprocessor unit,
such as: the 8088, the 80286, the 80386, the 80486, the Pentium, Pentium Pro,
the Pentium II, the Celeron, or the Xeon processor, all of which are
manufactured by Intel Corporation of Mountain View, California; the 68000, the
68010, the 68020, the 68030, the 68040, the PowerPC 601, the PowerPC604,
the PowerPC604e, the MPC603e, the MPC603ei, the MPC603ev, the MPC603r,
the MPC603P, the MPC740, the MPC745, the MPC750, the MPC755, the
MPC7400, the MPC7410, the MPC7441, the MPC7445, the MPC7447, the
MPC7450, the MPC7451, the MPC7455, the MPC7457 processor, all of which
are manufactured by Motorola Corporation of Schaumburg, Illinois; the Crusoe
TM5800, the Crusoe TM5600, the Crusoe TM5500, the Crusoe TM5400, the
Efficeon TM8600, the Efficeon TM8300, or the Efficeon TM8620 processor,
manufactured by Transmeta Corporation of Santa Clara, California; the RS/6000
processor, the RS64, the RS 64 II, the P2SC, the POWER3, the RS64 III, the
POWER3-II, the RS 64 IV, the POWER4, the POWER4+, the POWER5, or the
POWER6 processor, all of which are manufactured by International Business
Machines of White Plains, New York; or the AMD Opteron, the AMD Athalon 64
FX, the AMD Athalon, or the AMD Duron processor, manufactured by Advanced
Micro Devices of Sunnyvale, California.
Main memory unit 104 may be one or more memory chips capable of
storing data and allowing any storage location to be directly accessed by the
microprocessor 102, such as Static random access memory (SRAM), Burst
SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory
(DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM),
Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO
DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM
(EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM,
Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM),
-5-

WO 2006/038985 PCT/US2005/028605
SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric
RAM (FRAM).
In the embodiment shown in FIG. 1B, the processor 102 communicates
with main memory 104 via a system bus 120 (described in more detail below).
FIG. 1C depicts an embodiment of a computer system 100 in which the
processor communicates directly with main memory 104 via a memory port. For
example, in FIG. 1C, the main memory 104 may be DRDRAM.
FIG. 1B and FIG. 1C depict embodiments in which the main processor
102 communicates directly with cache memory 140 via a secondary bus,
sometimes referred to as a "backside" bus. In other embodiments, the main
processor 102 communicates with cache memory 140 using the system bus
120. Cache memory 140 typically has a faster response time than main
memory 104 and is typically provided by SRAM, BSRAM, or EDRAM.
In the embodiment shown in FIG. 1B, the processor 102 communicates
with various I/O devices 130 via a local system bus 120. Various busses may
be used to connect the central processing unit 102 to the I/O devices 130,
including a VESA VL bus, an ISA bus, an EISA bus, a MicroChannel
Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a
NuBus. For embodiments in which the I/O device is a video display, the
processor 102 may use an Advanced Graphics Port (AGP) to communicate with
the display. FIG. 1C depicts an embodiment of a computer system 100 in which
the main processor 102 communicates directly with I/O device 130b via
HyperTransport, Rapid I/O, or InfiniBand. FIG. 1C also depicts an embodiment
in which local busses and direct communication are mixed: the processor 102
communicates with I/O device 130a using a local interconnect bus while
communicating with I/O device 130b directly.
A wide variety of I/O devices 130 may be present in the computer system
100. Input devices include keyboards, mice, trackpads, trackballs, microphones,
and drawing tablets. Output devices include video displays, speakers, inkjet
printers, laser printers, and dye-sublimation printers. An I/O device may also
provide mass storage for the computer system 100 such as a hard disk drive, a
floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or
ZIP disks, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of
-6-

WO 2006/038985 PCT/US2005/028605
various formats, and USB storage devices such as the USB Flash Drive line of
devices manufactured by Twintech Industry, Inc. of Los Alamitos, California.
In further embodiments, an I/O device 130 may be a bridge between the
system bus 120 and an external communication bus, such as a USB bus, an
Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a
FireWire 800 bus, an Ethernet bus, an AppIeTalk bus, a Gigabit Ethernet bus,
an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a
SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small
computer system interface bus.
General-purpose desktop computers of the sort depicted in FIG. 1B and
FIG. 1C typically operate under the control of operating systems, which control .
scheduling of tasks and access to system resources. Typical operating systems
include: MICROSOFT WINDOWS, manufactured by Microsoft Corp. of
Redmond, Washington; MacOS, manufactured by Apple Computer of Cupertino,
California; OS/2, manufactured by International Business Machines of Armonk,
New York; and Linux, a freely-available operating system distributed by Caldera
Corp. of Salt Lake City, Utah, among others.
The client node 102 may be any personal computer (e.g., 286, 386,486,
Pentium, Pentium II, Macintosh computer), Windows-based terminal, Network
Computer, wireless device, information appliance, RISC Power PC, X-device,
workstation, mini computer, main frame computer, personal digital assistant, or
other computing device that has a windows-based desktop and sufficient
persistent storage for executing a small, display presentation program. The
display presentation program uses commands and data sent to it across
communication channels to render a graphical display. Windows-oriented
platforms supported by the client node 102 can include, without limitation,
WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS NT 3.51,
WINDOWS NT 4.0, WINDOWS 2000, WINDOWS CE, MAC/OS, Java, and
UNIX. The client node 102 can include a visual display device (e.g., a computer
monitor), a data entry device (e.g., a keyboard), persistent or volatile storage
(e.g., computer memory) for storing downloaded application programs, a
processor, and a mouse. Execution of a small, display presentation program
-7-

WO 2006/038985 PCT/US2005/028605
allows the client node 102 to participate in a distributed computer system model
(i.e., a server-based computing model).
For embodiments in which the client node 102 is a mobile device, the
device may be a JAVA-enabled cellular telephone, such as the i50sx, i55sr,
i58sr, i85s, i88s, i90c, i95cl, or the im11000, all of which are manufactured by
Motorola Corp. of Schaumburg, Illinois, the 6035 or the 7135, manufactured by
Kyocera of Kyoto, Japan, or the i300 or i330, manufactured by Samsung
Electronics Co., Ltd., of Seoul, Korea. In other embodiments in which the client
node 102 is mobile, it may be a personal digital assistant (PDA) operating under
control of the PalmOS operating system, such as the Tungsten W, the VII, the
Vllx, the i705, all of which are manufactured by palmOne, Inc. of Milpitas,
California. In further embodiments, the client node 102 may be a personal
digital assistant (PDA) operating under control of the PocketPC operating
system, such as the iPAQ 4155, iPAQ 5555, iPAQ 1945, iPAQ 2215, and iPAQ
4255, all of which manufactured by Hewlett-Packard Corporation of Palo Alto,
California, the ViewSonic V36, manufactured by ViewSonic of Walnut,
California, or the Toshiba PocketPC e405, manufactured by Toshiba America,
Inc. of New York, New York. In still other embodiments, the client node is a
combination PDA/telephone device such as the Treo 180, Treo 270 or Treo 600,
all of which are manufactured by palmOne, Inc. of Milpitas, California. In still
further embodiments, the client node 102 is a cellular telephone that operates
under control of the PocketPC operating system, such as the MPx200,
manufactured by Motorola Corp.
Referring now to FIG. 1D, one embodiment of a computer network 100
constructed in accordance with the invention is depicted, which includes a client
node 102, a collection agent 104, a policy engine 106, a policy database 108, an
application server farm 114, and an application server 116. Although only one
client node 102, collection agent 104, policy engine 106, application server farm
114, and application server 116 are depicted in the embodiment shown in Figure
1D, it should be understood that the system may provide multiple ones of any or
each of those components. For example, in one embodiment, the system 100
includes multiple, logically-grouped application server 116, each of which are
available to execute applications on behalf of a client node 102. In these
-8-

WO 2006/038985 PCT/US2005/028605
embodiments, the logical group of servers may be referred to as a "server farm."
In some of these embodiments, the servers may be geographically dispersed.
In brief overview, when the client node 102 transmits a request 110 to the
policy engine 106 for access to a resource, the collection agent 104
communicates with client node 102, retrieving information about the client node
102, and transmits the client node information 112 to the policy engine 106. The
policy engine 106 makes an access control decision by applying a policy from
the policy database 108 to the received information 112.
In more detail, the client node 102 transmits a request 110 for a resource
to the policy engine 106. In some embodiments, the client node 102 transmits
the request 110 over a network connection. The network can be a local area
network (LAN), a metropolitan area network (MAN), or a wide area network
(WAN) such as the Internet. The client node 102 and the policy engine 106 may
connect to a network through a variety of connections including standard
telephone lines, LAN or WAN links (e.g., T1, T3, 56 kb, X.25), broadband
connections (ISDN, Frame Relay, ATM), and wireless connections.
Connections between the client node 102 and the policy engine 106 may use a
variety of data-link layer communication protocols (e.g., TCP/IP, IPX, SPX,
NetBIOS, NetBEUI, SMB. Ethernet, ARCNET, Fiber Distributed Data Interface
(FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and
direct asynchronous connections).
Upon receiving the request, the policy engine 106 initiates information
gathering by the collection agent 104. The collection agent 104 gathers
information regarding the client node 102 and transmits the information 112 to
the policy engine 106.
In some embodiments, the collection agent 104 gathers and transmits the
information 112 over a network connection. In some embodiments, the
collection agent 104 comprises bytecode, such as an application written in the
bytecode programming language JAVA. In some embodiments, the collection
agent 104 comprises at least one script. In those embodiments, the collection
agent 104 gathers information by running at least one script on the client node
102. In some embodiments, the collection agent comprises an Active X control
on the client node 102. An Active X control is a specialized COM (Component
-9-

WO 2006/038985 PCT/US2005/028605
Object Model) object that implements a set of interfaces that enable it to look
and act like a control.
In some embodiments, the collection agent 104 executes on the client
node. In other embodiments, the collection agent 104 resides on the policy
engine 106. In still other embodiments, the collection agent 104 resides on a
server. In other embodiments, the policy engine 106 resides on the server. In
some of these embodiments, the collection agent 104 resides on both the policy
engine 106 and the server.
In one embodiment, the policy engine 106 transmits the collection agent
104 to the client node 102. In one embodiment, the policy engine 106 requires a
second execution of the collection agent 104 after the collection agent 104. has
transmitted information 112 to the policy engine 106. In this embodiment, the
policy engine 106 may have insufficient information 112 to determine whether
the client node 102 satisfies a particular condition. In other embodiments, the
policy engine 106 requires a plurality of executions of the collection agent 104 in
response to received information 112.
In some embodiments, the policy engine 106 transmits instructions to the
collection agent 104 determining the type of information the collection agent 104
gathers. In those embodiments, a system administrator may configure the
instructions transmitted to the collection agent 104 from the policy engine 106.
This provides greater control over the type of information collected. This also
expands the types of access control decisions, which the policy engine 106 can
make, due to the greater control over the type of information collected. The
collection agent 104 gathers information 112 including, without limitation,
machine ID of the client node, operating system type, existence of a patch to an
operating system, MAC addresses of installed network cards, a digital
watermark on the client device, membership in an Active Directory, existence of
a virus scanner, existence of a personal firewall, an HTTP header, browser type,
device type, network connection information, and authorization credentials.
In some embodiments, the device type is a personal digital assistant. In
other embodiments, the device type is a cellular telephone. In other
embodiments, the device type is a laptop computer. In other embodiments, the
-10-

WO 2006/038985 PCT/US2005/028605
device type is a desktop computer. In other embodiments, the device type is an
Internet kiosk.
In some embodiments, the digital watermark includes data embedding.
In some embodiments, the watermark comprises a pattern of data inserted into
a file to provide source information about the file. I n other embodiments, the
watermark comprises data hashing files to provide tamper detection. In other
embodiments, the watermark provides copyright information about the file.
In some embodiments, the network connection information pertains to
bandwidth capabilities. In other embodiments, the network connection
information pertains to Internet Protocol address. In still other embodiments, the
network connection information consists of an Internet Protocol address. In one
embodiment, the network connection information comprises a network zone
identifying the logon agent to which the client node provided authentication
credentials.
In some embodiments, the authorization credentials include a number of
types of authentication information, including without limitation, user names,
client names, client addresses, passwords, PINs, voice samples, one-time
passcodes, biometric data, digital certificates, tickets, etc. and combinations
thereof. After receiving the gathered information 112, the policy engine 106
makes an access control decision based on the received information 112.
Referring now to FIG. 2, it is a block diagram of one embodiment of a
policy engine 200, including a first component 202 comprising a condition
database 204 and a logon agent 206, and including a second component 210
comprising a policy database 212. The first component 202 applies a condition
from the condition database 204 to information received about client node 102
and determines whether the received information satisfies the condition.
In some embodiments, the first component 202 and the second
component 210 are logically separate but not physically separate. In some
embodiments, the first component 202 and the second component 210 are
logically and physically separate. In some embodiments, the condition database
204 resides on the first component 202. In other embodiments, the condition
database 204 resides on the second component 210.
-11-

WO 2006/038985 PCT/US2005/028605
In some embodiments, a condition may require that the client node 102
execute a particular operating system to satisfy the condition. In some
embodiments, a condition may require that the client node 102 execute a
particular operating system patch to satisfy the condition. In still other
embodiments, a condition may require that the client node 102 provide a MAC
address for each installed network card to satisfy the condition. In some
embodiments, a condition may require that the client node 102 indicate
membership in a particular Active Directory to satisfy the condition, in another
embodiment, a condition may require that the client node 102 execute a virus
scanner to satisfy the condition. In other embodiments, a condition may require
that the client node 102 execute a personal firewall to satisfy the condition. In
some embodiments, a condition may require that the client node 102 comprise a
particular device type to satisfy the condition. In other embodiments, a condition
may require that the client node 102 establish a particular type of network
connection to satisfy the condition.
If the received information satisfies a condition, the first component 202
stores an identifier for that condition in a data set 208. In one embodiment, the
received information satisfies a condition if the information makes the condition
true. For example, a condition may require that a particular operating system be
installed. If the client node 102 has that operating system, the condition is true
and satisfied. In another embodiment, the received information satisfies a
condition if the information makes the condition false. For example, a condition
may address whether spyware exists on the client node 102. If the client node
102 does not contain spyware, the condition is false and satisfied.
In some embodiments, the logon agent 206 resides outside of the policy
engine 200. In other embodiments, the logon agent 206 resides on the policy
engine 200. In one embodiment, the first component 202 includes a logon agent
206, which initiates the information gathering about client node 102. In some
embodiments, the logon agent 206 further comprises a data store. In these
embodiments, the data store includes the conditions for which the collection
agent may gather information. This data store is distinct from the condition
database 204.
-12-

WO 2006/038985 PCT/US2005/028605
In some embodiments, the logon agent 206 initiates information gathering
by executing the collection agent 104. In other embodiments, the logon agent
206 initiates information gathering by transmitting the collection agent 104 to the
client node 102 for execution on the client node 102. In still other embodiments,
the logon agent 206 initiates additional information gathering after receiving
information 112. In one embodiment, the logon agent 206 also receives the
information 112. In this embodiment, the logon agent 206 generates the data
set 208 based upon the received information 112. In some embodiments, the
logon agent 206 generates the data set 208 by applying a condition from the
database 204 to the information received from the collection agent 104.
In another embodiment, the first component 202 includes a plurality of
logon agents 206. In this embodiment, at least one of the plurality of logon
agents 206 resides on each network domain from which a client node 102 may
transmit a resource request. In this embodiment, the client node 102 transmits
the resource request to a particular logon agent 206. In some embodiments, the
logon agent 206 transmits to the policy engine 200 the network domain from
which the client node 102 accessed the logon agent 206. In one embodiment,
the network domain from which the client node 102 accesses a logon agent 206
is referred to as the network zone of the client node 102.
The condition database 204 stores the conditions which the first
component 202 applies to received information. The policy database 212 stores
the policies, which the second component 210 applies to the received data set.
In some embodiments, the condition database 204 and the policy database 212
store data in an ODBC-compliant database. For example, the condition
database 204 and the policy database 212 may be provided as an ORACLE
database, manufactured by Oracle Corporation of Redwood Shores, Calif. In
other embodiments, the condition database 204 and the policy database 212
can be a Microsoft ACCESS database or a Microsoft SQL server database,
manufactured by Microsoft Corporation of Redmond, Wash.
After the first component 202 applies the received information to each
condition in the condition database 204, the first component transmits the data
set 208 to second component 210. In one embodiment, the first component 202
transmits only the data set 208 to the second component 210. Therefore, in this-
-13-

WO 2006/038985 PCT/US2005/028605
embodiment, the second component 210 does not receive information 112, only
identifiers for satisfied conditions. The second component 210 receives the data
set 208 and makes an access control decision by applying a policy from the
policy database 212 based upon the conditions identified within data set 208.
In one embodiment, policy database 212 stores the policies applied to the
received information 112. In one embodiment, the policies stored in the policy
database 212 are specified at least in part by the system administrator. In
another embodiment, a user specifies at least some of the policies stored in the
policy database 212. The user-specified policy or policies are stored as
preferences. The policy database 212 can be stored in volatile or non-volatile
memory or, for example, distributed through multiple servers.
In one embodiment, a policy allows access to a resource only if one or
more conditions are satisfied. In another embodiment, a policy allows access to
a resource but prohibits transmission of the resource to the client node 102.
One of the policies stored in the policy database 212 might require or forbid
automatic connection to disconnected application sessions. Yet another policy
might make connection contingent on the client node 102 that requests access
being within a secure network. Another policy might require or forbid automatic
connection to active application sessions currently connected to a different client
node 102. A further policy might only allow connection to application sessions
after receiving user approval. Another policy might only allow connection for a
predetermined time after disconnection. Still another policy only allows
connection to application sessions that include specific applications. One policy
might allow viewing only of the transformed contents of a requested file. A
policy might allow the viewing of only an HTML version of the requested file. In
some embodiments, access to a resource is provided while download of the file
to the client node 102 is prevented. This may be accomplished in a number of
ways, including: transformation of the file contents into a viewer-only format,
transforming the file contents into HTML for viewing by a web browser, use of
file type association to open the file using an application hosted by a server in a
server farm instead of using an application hosted by the client node 102, or by
using a system of the sort described in US Application serial number 10/931405,
the contents of which are incorporated herein by reference.
-14-

WO 2006/038985 PCT/US2005/028605
In some of the embodiments above, the method and apparatus provide
document protection for proprietary information. In these embodiments, the
client node cannot access the networked resources unless the policy engine 106
grants the client node 102 permission to access the resources. In one of these
embodiments, the policy engine 106 is the single exposed network element, to
ensure that the client node 102 must access the policy engine 106 in. order to
access the networked resources. In another of these embodiments, the URLs
used to access the networked resources behind the policy engine 106 are
rewritten to prevent direct access by the client node 102. In others of the
embodiments above, the method and apparatus enhance the capabilities of the
client node to access resource otherwise inaccessible. In some of the
embodiments above, the method and apparatus provide both protection of
proprietary information and enhanced client node capabilities.
Referring now to FIG. 3, a flow diagram depicts one embodiment of the
steps taken by the policy engine 106 to make an access control decision based
upon information received about a client node 102. Upon receiving gathered
information about the client node 102 (Step 350), the policy engine 106
generates a data set based upon the information (Step 352). In some
embodiments, the policy engine 106 requests further information about the client
node 102 from the collection agent 104. In these embodiments, the policy
engine 106 requires more than one execution of the collection agent 104 on the
client node 102. In those embodiments, the policy engine 106 generates the
data set 208 after receiving the additional requested information. In these
embodiments, the policy engine 106 may have insufficient information 112 to
determine whether the client node 102 satisfies a particular condition. In others
of these embodiments, the conditions may be indeterminate. In some of the
embodiments where the conditions are indeterminate, the collection agent could
not gather the information required to satisfy the condition.
The data set 208 contains identifiers for each condition satisfied by the
received information 112. Then the policy engine 106 applies a policy to each
identified condition within the data set 208. That application yields an
enumeration of resources which the client node 102 may access (Step 354). In
one embodiment, the resources comprise proprietary data. In some
-15-

WO 2006/038985 PCT/US2005/028605
embodiments, the resources comprise web pages. In other embodiments, the
resources comprise word processing documents. In still other embodiments, the
resources comprise spreadsheets. In some embodiments, the enumeration
includes only a subset of the resources that the client node 102 may access.
The policy engine 106 then presents that enumeration to the client node 102. In
some embodiments, the policy engine 106 creates a Hypertext Markup
Language (HTML) document used to present the enumeration to the client node.
Referring now to FIG. 4, one embodiment of a computer network 400
constructed in accordance with the invention is depicted, which includes a client
node 402, a collection agent 404, an access control server 406, a policy
database 408, an application server farm 414, a first application server 416, an
application database 418, a second application server 420, and a second
application database 422. In some embodiments, there is a network boundary
separating the network on which the client node 402 resides from the network
on which the access control server 406 and application server farm 414 reside.
In brief overview, when the client node 402 transmits to the access
control server 406 a request 410 for access to a resource, the collection agent
404 communicates with client node 402, retrieving information about the client
node 402, and transmitting client node information 412 to access control server
406. In one embodiment, the client node 402 transmits the request 410 after
policy engine 106 presents the client node 402 with an enumeration of available
resources. The access control server 406 makes an access control decision by
applying a policy from the policy database 408 to the received information 412.
Finally, the access control server 406 transmits a file type to the application
server farm 414 for presentation of the file contents to the client node 402.
Additional components of the computer network 400 are omitted and will be
described further in FIG. 4B.
Referring now to. FIG. 4B, a flow diagram depicts one embodiment of the
steps taken by the access control server 406 and the application server farm
414 to provide file contents to the client node 402. Part of the application server
farm 414 is an application server 416.
In one embodiment, once the access control server 406 decides to grant
the client node 402 access to the requested file, the access control server 406
-16-

WO 2006/038985 PCT/US2005/028605
determines the file type for the requested file (Step 452). in other embodiments,
the application server 416 determines the file type for the requested file. In still
other embodiments, a server other than the application server 416 or the access
control server 406. In some embodiments, the server determining the file type
must first retrieve the requested file. In some of those embodiments, the file is
located on the same side of the network boundary 424 as the server determining
the file type. In others of those embodiments, the file is located on the same
side of the network boundary 424 as the client node 402. In these
embodiments, the method and apparatus enhance the capabilities of the client
node to access resources otherwise inaccessible, but they do not provide
document protection for proprietary information.
In some embodiments, the network boundary 424 physically separates at
least two networks. In other embodiments, the network boundary 424 logically
separates at least two networks. In one embodiment, the network boundary 424
is a firewall.
In one embodiment, the file extension is the file type and the server
determining the file type does so by extracting the file extension from the file. In
another embodiment, a resource fork is the file type. After determining file type,
the server determining the file type transmits the file type to the application
server farm 414 for retrieval and presentation to the client node 402 (Step 454).
The application server 416 receives the file type from the access control
server 406. (Step 456). In some embodiments, the application server 416
identifies an application program associated with that file type. In other
embodiments, the access control server 406 identifies an application program
associated with that file type. In still other embodiments, a server other than the
access control server 406 or the application server 416 identifies the application
program associated with that file type.
In one embodiment, the server identifying the application program
associated with the file type queries an application database 418 to retrieve an
identifier for the application program. In some embodiments, the application
database 418 is a registry file. In embodiments where either the application
server 416 or a separate server identify the application type based on the file
type, the identifying server then transmits to the access control server 406 the
-17-

WO 2006/038985 PCT/US2005/028605
identifier to the application program. In some embodiments, the identifying
server transmits the identifier to the access control server 406 over a network
connection.
In some embodiments, neither the access control server 406 nor a
separate server need to transmit the file type to the application server 416 to
determine the identifier of the associated application program. In one of these
embodiments, the application server 416 transmits to the access control server
406 a list of hosted application programs and the file types with which those
application programs are associated. In these embodiments, the access control
server 406 retrieves from the transmitted list the identifier for the application
program associated with the file type.
When the access control server 406 receives the identifier of the
application program, the access control server 406 creates and transmits to the
client node 402 an executable file (Step 458). In some embodiments, the
executable file contains the identifier of the application program. In some
embodiments, the executable file contains the identifier of an application server
in the application server farm 414 that will present the contents of the file to the
client node 402. In some embodiments, the same application server 416 that
identified the application program to use with the file type will present the
contents of the file to the client node 402. In other embodiments, a second
application server 420 presents the contents of the file to the client node 402. In
one embodiment, the executable file contains both the identifier of the
application program and the identifier of an application server in the application
server farm 414 what will present the contents of the file to the client node 402.
In some embodiments, the executable file enables the client node 402 to
connect with an identified server using a presentation-layer protocol such as the
Independent Computing Architecture (ICA) protocol, available from Citrix
Systems, Inc. of Fort Lauderdale, Florida. In other embodiments, the executable
file enables the client node 402 to connect with an identified server using the
Remote Desktop Protocol (RDP), manufactured by Microsoft Corporation. In
other embodiments, the presentation-layer protocol is wrapped in a higher
protocol.
-18-

WO 2006/038985 PCT/US2005/028605
The client node 402 receives the executable file from the access control
server 406. The client node 402 connects to the application server 416
identified in the executable file (Step 460). In one embodiment, the client node
402 connects to the identified application server 416 using the ICA protocol. In
another embodiment, the client node 402 connects to the identified application
server 416 using RDP.
The application server 416 selects a format for the presentation of the file
contents (Step 462). In other embodiments, the access control server 406
identifies the format used to present the file contents. In those embodiments,
the access control server 406 may apply a policy to identify the available
formats. In some embodiments, the application server 416 selects the format
based upon received information about the client node 402. In other
embodiments, the application server 416 selects the format by applying a policy
to the received information.
The application server 416 accepts the client node 402 connection and
retrieves the requested file (Step 464). In one embodiment, the application
server 416 retrieves the file from a web server. In another embodiment, the
application server 416 retrieves the file from a file server. In yet another
embodiment, the retrieved file is an email attachment. In this embodiment, the
application server 416 retrieves the file from an electronic mail server. In some
embodiments, the mail server is a Lotus mail server. In other embodiments, the
mail server is an Outlook mail server or an Outlook Web Access mail server.
The application server 416 then presents the contents of the file to the
client node 402 over the connection (Step 468). In one embodiment, the file
contents presented comprise an email attachment.
Referring to FIG. 5, one embodiment of a computer network 500
constructed in accordance with the invention is depicted, which includes a client
node 502, a collection agent 504, a policy engine 506, a first component 508, a
second component 512, a condition database 510, a policy database 512, a
transformation server 516, and a storage element 518. In brief overview, when
the client node 502 transmits a request 522 for access to a resource from the
policy engine 506, the collection agent 504 communicates with client node 502,
retrieving information about the client node 502, and transmitting client node
-19-

WO 2006/038985 PCT/US2005/028605
information 512 to the policy engine 506. The policy engine 506 makes an
access control decision as discussed in FIG. 3 above. Once the policy engine
506 decides to grant the client node 502 access to the requested file, the policy
engine 506 transmits the request to the transformation server 516 for
transformation and presentation to the client node 502.
In more detail, the policy engine 506 receives a request from the client
node 502 for the transformed contents of a file. In one embodiment, the policy
engine 506 identifies a transformation server 516 capable of presenting the
transformed contents of the file to the client node 502. In some embodiments,
the transformation server 516 is capable of presenting the transformed contents
of the file because it contains a copy of previously transformed contents. In
other embodiments, the transformation server 516 is capable of presenting the
transformed contents of the file because it has the capacity to transform the file
contents presently.
In one embodiment, the policy engine 506 identifies a transformation
server 516 by querying a storage element 518 to determine whether a
transformation server 516 previously transformed the contents of the file. In that
embodiment, the policy engine 506 transmits the identifier of the transformation
server 518 identified by the storage element 518 to the client node 502. In other
embodiments, no transformation server 516 has previously transformed the
contents. In those embodiments, the policy engine identifies instead a
transformation server 516 capable of presently transforming the contents of the
file and transmits the request of the client node 502 to that transformation server
516.
In other embodiments, a server other than the policy engine 506 identifies
the transformation server 516 capable of presenting the transformed contents of
the file to the client. In some of those embodiments, that same server also
transmits to the transformation server 516 the request for presentation of the file
to the client. In some of these embodiments, the same server identifying the
capable transformation server 516 routes transmits the request to the
transformation server 516 through a proxy server.
In one embodiment, the transformation server 516 receives the request
from the policy engine 506 for transformation of the contents of a requested file
-20-

WO 2006/038985 PCT/US2005/028605
and presentation to the client node 502. In another embodiment, the
transformation server 516 receives the request from the server other than the
policy engine 506. The transformation server 516 retrieves the file and
transforms the contents from a native format to a second format. The
transformation server 516 then accepts a connection from the client node 502
and presents the transformed contents of the file, transforming the contents if
not previously transformed. Finally, the transformation server 516 writes to the
storage element 518 the identifier of the server transforming the contents of the
file and the identifier of the file.
Referring now to FIG. 6, a flow diagram depicts one embodiment of the
steps taken by the transformation server 516 to transform the content of the
requested file and present the transformed contents to the client node 502.
The transformation server 516 receives the request for transformation of
the contents of a requested file and presentation to the client node 502 (Step
600). In one embodiment, the transformation server 516 receives this request
over a network connection.
The transformation server 516 transforms the contents of the requested
file from a native format into a second format (Step 602). In one embodiment,
the transformation server 516 transforms the contents of the file using regular
expressions, from a native format into a second format for presentation on the
client. In another embodiment, the transformation server 516 transforms the
contents of the file into a second format from a native format, which contains a
format conversion tool. In another embodiment, the transformation server 516
transforms the contents of the file from a native format into HTML. In another
embodiment, the transformation server 516 transforms the contents of the file
from a native format into a second format where the second format enables
presentation on a personal digital assistant. In another embodiment, the
transformation server 516 transforms the contents of the file from a native format
into a second format, where the second format enables presentation on a
cellular phone. In another embodiment, the transformation server 516
transforms the contents of the file from a native format into a second format,
where the second format enables presentation on a laptop computer. In another
embodiment, the transformation server 516 transforms the contents of the file
-21-

WO 2006/038985 PCT/US2005/028605
from a native format into a second format, where the second format enables
presentation at an Internet kiosk.
The transformation server 516 writes identifying information about the
transformation to the storage element 518 (Step 604). In one embodiment, the
identifying information includes an identifier for the transformation server 516
and an identifier for the transformed file. In some embodiments, the identifying
information includes a temporary file containing the transformed contents of the
file. In those embodiments, the storage element 518 functions as a global cache
of transformed file contents.
After the policy engine 506 identifies the transformation server 516
capable of presenting the transformed contents of the file for the client node
502, the policy server 506 transmits the identifier of the transformation server
516 to the client node 502. The client node 502 receives the identifier and
connects to the transformation server 516. The transformation server 516
accepts the connection and presents the transformed contents of the requested
file to the client node 502 over the connection (Step 606). In one embodiment,
the transformation server 516 retains the transformed contents of the requested
file after the presentation to the client node 502.
Referring to FIG. 7, one embodiment of a computer network 700
constructed in accordance with the invention is depicted, which includes a first
client node 702, a collection agent 704, an policy engine 706, a policy database
708, a condition database 710, a second client node 716, a session server 720,
a stored application database 722, an application server farm 724, a first
application server 726, a first database 728, a second application server 730,
and a second database 732. In brief overview, when the first client node 702
transmits to the access control server 706 a request 712 for access to a
resource, the collection agent 704 communicates with client node 702, retrieving
information about client node 702, and transmitting client node information 714
to the policy engine 706. The policy engine 706 makes an access control
decision, as discussed above in FIG. 3. Finally, the session server 720
establishes a connection between the client node 702 and a plurality of
application sessions associated with the client node 702. Additional
-22-

WO 2006/038985 PCT/US2005/028605
components of the computer network 700 are omitted and will be described
further in FIG. 7B.
Referring now to FIG. 7B, a flow diagram depicts one embodiment of the
steps taken by the session server 720 to connect the client node 702 with its
associated application sessions. The session server 720 receives information
about the client node 702 from the policy engine 706 containing access control
decision the policy engine 706 made. In one embodiment, the information also
includes the client node information 714.
In some embodiments, the policy engine 706 identifies a plurality of
application sessions already associated with the client node 702. In other
embodiments, the session server 720 identifies stored application sessions
associated with the client node 702. In some of these embodiments, the
session server 720 automatically identifies the stored application sessions upon
receiving the information from the policy engine 706. In one embodiment, the
stored application database 722 resides on the session server 720. In another
embodiment, the stored application database 722 resides on the policy engine
706.
The stored application database 722 contains data associated with a
plurality of servers in the application server farm 724 executing application
sessions. In some embodiments, identifying the application sessions associated
with the client node 702 requires consulting stored data associated with one or
more servers executing application sessions. In some of these embodiments,
the session store 720 consults the stored data associated with one or more
servers executing application sessions. In others of these embodiments, the
policy engine 706 consults the stored data associated with one or more servers
executing application sessions. In some embodiments, a first application
session runs on a first application server 726 and a second application session
runs on a second application server 730. In other embodiments, all application
sessions run on a single application server within the application server farm
724.
The session server 720 includes information related to application
sessions initiated by users. The session server can be stored in volatile or non-
-23-

WO 2006/038985 PCT/US2005/028605
volatile memory or, for example, distributed through multiple servers. Table 7-1
shows the data included in a portion of an illustrative session server 720.
Table 7-1
ApplicationSession App Session 1 App Session 2 App Session 3
User ID User 1 User 2 User 1
Client ID First Client First Client
Client Address 172.16.0.50 172.16.0.50
Status Active Disconnected Active
Applications Word Processor Data Base Spreadsheet
Process Number 1 3 2
Server Server A Server A Server B
Server Address 172.16.2.55 172.16.2.55 172.16.2.56
The illustrative session server 720 in Table 7-1 includes data associating
each application session with the user that initiated the application session, an
identification of the client computer 702 or 716, if any, from which the user is
currently connected to the server 726, and the IP address of that client comp liter
702a or 716. The illustrative session server 720 also includes the status of each
application session. An application session status can be, for example, "active"
(meaning a user is connected to the application session), or "disconnected"
(meaning a user is not connected to the application session). In an alternative
embodiment, an application session status can also be set to "executing-
disconnected" (meaning the user has disconnected from the application session,
but the applications in the application session are still executing), or "stalled-
disconnected" (meaning the user is disconnected and the applications in the
application session are not executing, but their operational state immediately-
prior to the disconnection has been stored). The session server 720 further
stores information indicating the applications 116 that are executing within each
application session and data indicating each application's process on the server.
In embodiments in which the server 726 is part of a server farm 724, the session
server 720 is at least a part of the dynamic store, and also includes the data in
-24-

WO 2006/038985 PCT/US2005/028605
the last two rows of Table 1 that indicate on which server in the server farm each
application is/was executing, and the IP address of that server. In alternative
embodiments, the session server 720 includes a status indicator for each
application in each application session.
For example, in the example of Table 7-1, three application sessions
exist, App Session 1, App Session 2, and App Session 3. App Session 1 is
associated with User 1, who is currently using terminal 1. Terminal one's IP
address is 152.16.2.50. The status of App Session 1 is active, and in App
Session 1, a word processing program, is being executed. The word processing
program is executing on Server A as process number 1. Server A's IP address
is 152.16.2.55. App Session 2 in Table 1 is an example of a disconnected
application session 118. App Session 2 is associated with User 2, but App
Session 2 is not connected to a client computer 702a or 716. App Session 2
includes a database program that is executing on Server A, at IP address
152.16.2.55 as process number 3. App Session 3 is an example of how a user
can interact with application sessions operating on different servers 726. App
Session 3 is associated with User 1, as is App Session 1. App Session 3
includes a spreadsheet program that is executing on Server B at IP address
152.16.2.56 as process number 2, whereas the application session included in
App Session 1 is executing on Server A.
In one embodiment, the session server 720 is configured to receive a
disconnect request to disconnect the application sessions associated with the
client node 702 and does so disconnect the application sessions in response to
the request. The session server 720 continues to execute an application
session after disconnecting the client node 702 from the application session. In
this embodiment, the session server 720 accesses the stored application
database 722 and updates a data record associated with each disconnected
application session so that the record indicates that the application session
associated with the client node 702 is disconnected.
Unintentional termination of application sessions resulting from imperfect
network connections and users' failure to terminate their application sessions
themselves can lead to user difficulties. One embodiment of the invention limits
these difficulties by differentiating disconnection (which is treated as if the user
-25-

WO 2006/038985 PCT/US2005/028605
is not done working with an application session) from termination (which is
assumed to be an intentional end to the application session) and by correlating
application sessions with users as opposed to client nodes. When a user is
finished using an application operating in an application session, the user can
terminate an application session. Termination generally involves the affirmative
Input of the user indicating that the server should no longer maintain the
application session. Such affirmative user input can include selecting an "Exit"
option from a menu, clicking on an icon, etc. in response to the session server
720 receiving a termination request, the execution of the application session and
any application within that application session is halted. In one embodiment,
data related to the application session is also removed from the stored
application database 722.
Disconnection, either intentional or unintentional, on the other hand, does
not result in termination of application sessions. Since the application or
applications operating in an application session are executing on the server 720,
a connection to the first client node 702 is not usually necessary to continue
execution of the applications, and in one embodiment the applications can
continue to execute while waiting for the user to connect. In an alternative
embodiment, upon disconnection of a user, the session server 720 stalls the
execution of the applications operating in the application session. That is, the
session server 720 halts further execution of the applications, and the session
server 720 stores the operational state of the application and any data the
application is processing. In a further embodiment, the session server 720 can
selectively stall execution of specific applications after a user disconnects. For
example, in one embodiment, the session server 720 continues execution of an
application for a fixed time period, and if a user fails to connect within that time
period, the session server 720 stalls the application. In another embodiment,
the session server 720 stalls specified application sessions that cannot continue
executing without user input. In each of the above-described embodiments, if
the user of the first client node 702 disconnects from the server 726 and then
connects to the server 726 while operating the first client node 702, the second
client node 716, or a third client computer, the session server 720 can connect
the client computer operated by the user to one or more previously initiated,
-26-

WO 2006/038985 PCT/US2005/028605
non-terminated application session(s) associated with the user, and reinitiate
execution of any stalled applications.
In one embodiment, the session server 720 detects a disconnection. A
user can intentionally and manually instruct the server to disconnect an
application session from the client node 702 or 716 from which the user is
communicating. For example, in one embodiment, application sessions provide
a menu option for disconnection (as distinguished from termination above) that a
user can select. The session server 720 can also detect an unintentional
disconnection. For example, in one embodiment, session server 720 identifies
when a predetermined number of data packets transmitted to a client node 702
or 716 have not been acknowledged by the client node 702 or 716. In another
embodiment, the client node 702 or 716 periodically transmits a signal to the
server 726 to confirm that a connection is still intact. If the session server 720
detects that a predetermined number of expected confirmation signals from a
client node 702 or 716 have not arrived, session server 720 determines that the
client node 702 or 716 has disconnected. If the session server 720 detects that
a user has disconnected from an application session, either intentionally, or
unintentionally, the entry in the session server 720 related to the disconnected
application session is modified to reflect the disconnection.
After receiving authentication information, the session server 720
consults the stored applications database 722 to identify any active application
sessions that are associated with the user, but that are connected to a different
client node, such as the first client node 702, for example. In one embodiment,
if the session server 720 identifies any such active application sessions, the
session server 720 automatically disconnects the application session(s) from the
first client node 702 and connects the application session(s) to the current client
computer 716. In some embodiments, the received authentication information
will restrict the application sessions to which the client node 702 may reconnect.
In one embodiment, the user can trigger the automatic consultation of the
session server and subsequent connection with the selection of a single user
interface element.
After identifying the application sessions associated with the client node
702, the session server 720 connects the client node 702 to associated
-27-

WO 2006/038985 PCT/US2005/028605
application sessions. The session server 720 determines whether each
application session in the plurality is active or disconnected. In one
embodiment, at least one application session in the plurality is active. In one
embodiment, at least one application session in the plurality is disconnected. In
one embodiment, the session server 720 receives the application output
automatically. In another embodiment, receipt of the application output is
triggered by client node 702 selection of a single user interface element. The
session server 720 identifies disconnected application sessions to which to
reconnect the client node 702 based upon the access control decision contained
in the received information 714. In one embodiment, upon identifying any
disconnected application sessions, the session server 720 prompts the user to
indicate whether connection is desired. If connection is not desired, the session
server 720 prompts user to indicate whether the disconnected applications
sessions should remain disconnected, or whether the application sessions
should be terminated.
In one embodiment, connection includes modifying the entry in the stored
applications database 722 to indicate that the user is connected to the
application session and to indicate from which client node 702 the user is
connected to the server. Upon connection, the server 726 resumes transmitting
application output data to the client node 702 or 716. In one embodiment, the
plurality of application sessions associated with the client node was connected
to the first client node 702 prior to connection and, after connection, the plurality
of application sessions is reconnected to the first client node 702. In another
embodiment, the plurality of application sessions associated with the client node
was connected to the first client node 702 prior to connection and, after
connection, the plurality of application sessions is reconnected to the second
client node 716.
The following illustrative examples show how the methods and apparatus
discussed above can be used to provide policy-based access to file contents for
a client node. These examples are meant to illustrate and not to limit the
invention.
-28-

WO 2006/038985 PCT/US2005/028605
Evidence Collection
In one embodiment, a client node 102 requests access to a word
processing document located on a server residing on the same network as the
policy engine 106 resides. The policy engine 106 receives the request and
determines that it possesses no information about client node 102. The policy
engine 106 transmits a collection agent 104 to the client node 102. In some
embodiments, the collection agent 104 has pre-defined information to collect
from the client node. In other embodiments, the collection agent 104 first
analyzes the client node to determine what type of information to collect. In still
other embodiments, the collection agent 104 retrieves from the policy engine
106 the instructions as to what information to collect about the client node 102.
Once executing on the client node 102, the collection agent 104 gathers
the required information and transmits the information 112 to the policy engine
106. The policy engine 106 receives the information 112 and begins the
process of determining what conditions the information 112 satisfies. In some
embodiments, the policy engine 106 determines that the received information
112 does not suffice to determine whether the information 112 satisfies one or
more conditions. In those embodiments, the policy engine 106 transmits further
instructions to the collection agent 104 for gathering more information about the
client node 102.
Policy-Based Access Control
As the first component 202 of the policy engine 106 determines that one
or more conditions are satisfied, it stores an identifier for each satisfied condition
in a data set. Upon completion, the first component 202 transmits the data set
and the requested application to the second component 210. in an example of
this embodiment, the requested application may be a word processing
document and the conditions satisfied may indicate that the client device is a
personal digital assistant. In another example of this embodiment, the
requested application may be a spreadsheet and the conditions satisfied may
indicate that the client device is a trusted laptop connecting from an insecure
network such as a public internet kiosk. In a third example of this embodiment,
the requested application may be a file attached to an electronic mail message
and the conditions satisfied may indicate that the client device is on a personal
-29-

WO 2006/038985 PCT/US2005/028605
desktop connecting from a secure network but lacking the appropriate
application software to view the file.
The second component 210 receives the data set from the first
component 202 and applies one or more policies to the received data. In one
example of this embodiment, the second component 210 may apply a policy
requiring that when a client device type is a personal digital assistant if the
condition that the client node have on it application software is not satisfied, the
client node receive the transformed contents of the file. The client node would
then receive an executable file enabling connection to a transformation server,
which will present the contents of the file in a format accessible to the client
device type. Applying this policy enables the client node to view the contents of
the file in spite of inappropriate form factor for viewing
In another example of this embodiment, the second component 210 may
apply a policy prohibiting download to the client node 102 when a client device
type is a trusted laptop, containing the appropriate application software, but from
an insecure network such as an Internet kiosk. In this embodiment, the policy
might require that the policy engine 106 transmit an executable file to the client
node 102 enabling connection to an application server 416 for presentation of
the file contents. Applying a policy of this type, and retrieving the file only to the
application server 416, enables the client node 102 to view the contents of the
file without jeopardizing the proprietary contents of the file from inappropriate
dissemination.
In yet another example of this embodiment, the second component 210
may apply a policy requiring that a personal desktop making a secure
connection, but lacking appropriate application software, connect to an
application server 416 via an ICA session, and that the application server 416
execute the appropriate application and present the file to the client node 102.
Applying the policy enables the client node 102 to view the contents of the file
regardless of the lack of application software on the client node 102.
The present invention may be provided as one or more computer-
readable programs embodied on or in one or more articles of manufacture. The
article of manufacture may be a floppy disk, a hard disk, a compact disc, a
digital versatile disc, a flash memory card, a PROM, a RAM, a ROM, or a
-30-

WO 2006/038985 PCT/US2005/028605
magnetic tape. In general, the computer-readable programs may be
implemented in any programming language. Some examples of languages that
can be used include C, C++, C#, or JAVA. The software programs may be
stored on or in one or more articles of manufacture as object code.
While the invention has been shown and described with reference to
specific preferred embodiments, it should be understood by those skilled in the
art that various changes in form and detail may be made therein without
departing from the spirit and scope of the invention as defined by the following
claims.
-31-

WO 2006/038985 PCT/US2005/028605
What is claimed is:
1. A method for providing authorized remote access to one or more
application sessions, the method comprising:
requesting, by a client node, access to a resource;
gathering, by a collection agent, information about the ciient node;
receiving, by a policy engine, the gathered information;
making, by a policy engine, an access control decision based on the
received information;
identifying .one.or more application sessions already associated with
the user in response to the received information; and
establishing, by a session server, a connection between a client
computer operated by the user and the one or more application
sessions identified in response to the received information.
2. The method of claim 1 wherein step (a) further comprises requesting
the resource over a network connection.
3. The method of claim 1 wherein step (b) further comprises gathering
the information over a network connection.
4. The method of claim 1 wherein step (b) further comprises gathering
information by executing at least one script on the client node.
5. The method of claim 1 wherein step (d) further comprises determining
if the received information satisfies a condition.
6. The method of claim 5 further comprising determining if the received
information satisfies a condition by comparing the received
information to at least one condition.
7. The method of claim 6 wherein step (d) further comprises making an
access control decision by applying a policy to the condition.
-32-

WO 2006/038985 PCT/US2005/028605
8. The method of claim 1 wherein a first one of the application sessions
is running on a first server and a second one of the application
sessions is running on a second server.
9. The method of claim 1 wherein the step of establishing, by the
session server, a connection between the client and the one or more
application sessions is subject to a rule permitting the client computer
operated by the user to connect to the one or more application
sessions.
10. The method of claim 1 wherein the connection between the user and
the one or more application sessions is triggered by the selection of a
single user interface element.
11. The method of claim 1 further comprising the step of receiving, by a
session server, a disconnect request to disconnect the first
application session associated with the user and the second
application session associated with the user; and disconnecting, by
the session server, the first and second application sessions.
12. The method of claim 11 further comprising updating, by the session
server, at least one data record associated with the first and second
application sessions to indicate that the first and second application
sessions are disconnected.
13. The method of claim 12 further comprising the step of continuing, by
the session server, execution of at least one of the disconnected
application sessions.
14 The method of claim 1 wherein step (e) further comprises identifying,
by the policy engine, one or more application sessions already
associated with the user in response to the received information; and
15. The method of claim 1 wherein step (e) further comprises consulting
stored data associated with one or more servers executing
application sessions.
-33-

WO 2006/038985 PCT/US2005/028605
16. The method of claim 1 wherein step (e) further comprises consulting,
by the session store, stored data associated with one or more servers
executing application sessions.
17. The method of claim 1 wherein step (e) further comprises consulting,
by the policy engine, stored data associated with one or more servers
executing application sessions.
18. The method of claim 1 wherein the one or more application sessions
was connected to a first client computer prior to connection and, after
connection, the one or more application sessions is reconnected to
the first client computer.
19. The method of claim 1 wherein the one or more application sessions
was associated with a first client computer prior to establishing the
connection and, after establishing the connection, the one or more
application sessions is connected to a second client computer.
20. The method of claim 1 wherein at least one application session is
disconnected.
21. The method of claim 1 wherein at least one application session is
active.
22. The method of claim 1 wherein the identifying one or more
applications sessions is automatic upon receipt of authentication
information.
23. The method of claim 1 further comprising the step of providing for
receiving application output from a one or more previously
disconnected application sessions associated with the user in
response to the transmitted information.
24. The method of claim 23 further comprising disconnecting at least one
active application session associated with the user in response to the
received information.
-34-

WO 2006/038985 PCT/US2005/028605
25. The method of claim 23 wherein the one or more active application
sessions is initially connected to a first client computer and, upon
requesting access to the resource, the user is operating a second
client computer.
26. The method of claim 23, wherein the receipt of application output
from the one or more active application sessions is subject to a rule
permitting the user to have a client computer operated by the user
connect to the one or more active application sessions.
27. The method of claim 23 wherein the receipt of application output from
the one or more active application sessions and the receipt of
application output from the one or more disconnected application
sessions are triggered by the selection of a single user interface
element.
28. The method of claim 23 wherein the one or more disconnected
application sessions was connected to a first client computer prior to
disconnection and, at connection, the one or more disconnected
application session is reconnected to the first client computer.
29. The method of claim 23 wherein the one or more disconnected
application sessions was connected to a first client computer prior to
disconnection and, at connection, the one or more disconnected
application session is connected to a second client computer.
30. A system for providing authorized remote access to an application
session, the policy engine comprising:
a collection agent gathering information about the client node; and
a policy engine receiving the gathered information, making an access
control decision based on the received information, and requesting an
enumeration of one or more application sessions associated with the
client node, the request including the access control decision; and
a session server generating an enumeration of one or more
-35-

WO 2006/038985 PCT/US2005/028605
application sessions associated with the client node responsive to the
access control decision.
31. The system of claim 30 wherein the collection agent executes on the
client node.
32. The system of claim 30 wherein the policy engine transmits the
collection agent to the client node.
33. The system of claim 30 wherein the policy engine transmits
instructions to the collection agent determining the type of information
the collection agent gathers.
34. The system of claim 30 wherein the policy engine makes an access
control decision based on applying a policy to the gathered
information.
35. The system of claim 30 wherein a first one of the application sessions
is running on a first server and a second one of the application
sessions is running on a second server.
36. The system of claim 30 wherein the session server connects the
client node to the one or more application sessions.
37. The system of claim 36 wherein the connection of th e client node to
the one or more application sessions, is triggered by selection of a
single user interface element.
38. The system of claim 36 wherein the session server is also configured
to receive a disconnect request to disconnect the first application
session associated with the user and the second application session
associated with the user and disconnect the first and second
application sessions in response to the request.
39. The system of claim 38 wherein the session server is further
configured to update at least one data record associated with each of
-36-

WO 2006/038985 PCT/US2005/028605
the first and second application sessions to indicate that the first and
second application sessions are disconnected.
40. The system of claim 38 wherein the session server is further
configured to continuing execution of at least one of the disconnected
application sessions.
41. The system of claim 30 wherein the policy engine further comprises
stored data associated with one or more servers executing
application sessions.
42. The system of claim 30 wherein the one or more application sessions
was connected to a first client computer prior to connection and, after
connection, the one or more application sessions is reconnected to
the first client computer.
43. The system of claim 30 wherein the one or more application sessions
was associated with a first client computer prior to connection and,
after connection, the one or more application sessions is connected
to a second client computer.
44. The system of claim 30 wherein at least one of the one or more
application sessions is disconnected.
45. The system of claim 30 wherein at least one of the one or more
application sessions is active.
-37-

A method and apparatus for providing authorized remote access to one or more application sessions includes a client
node, a collection agent, a policy engine, and a session server. The client node requests access to a resource. The collection agent
gathers information about the client node. The policy engine receives the gathered information, and makes an access control decision
based on the received information. The session server establishes a connection between a client computer operated by the user and
the one or more application sessions associated with the user of the client node identified in response to the received information.

Documents:

01449-kolnp-2007-abstract.pdf

01449-kolnp-2007-claims.pdf

01449-kolnp-2007-correspondence others 1.1.pdf

01449-kolnp-2007-correspondence others.pdf

01449-kolnp-2007-description complete.pdf

01449-kolnp-2007-drawings.pdf

01449-kolnp-2007-form 1.pdf

01449-kolnp-2007-form 3.pdf

01449-kolnp-2007-form 5.pdf

01449-kolnp-2007-international publication.pdf

01449-kolnp-2007-international search report.pdf

01449-kolnp-2007-pct priority document notification.pdf

1449-KOLNP-2007-(11-09-2013)-CORRESPONDENCE.pdf

1449-KOLNP-2007-(18-03-2013)-ASSIGNMENT.pdf

1449-KOLNP-2007-(18-03-2013)-CORRESPONDENCE.pdf

1449-KOLNP-2007-(18-03-2013)-OTHERS.pdf

1449-KOLNP-2007-(22-08-2013)-ABSTRACT.pdf

1449-KOLNP-2007-(22-08-2013)-AMANDED PAGES OF SPECIFICATION.pdf

1449-KOLNP-2007-(22-08-2013)-CLAIMS.pdf

1449-KOLNP-2007-(22-08-2013)-CORRESPONDENCE.pdf

1449-KOLNP-2007-(22-08-2013)-DRAWINGS.pdf

1449-KOLNP-2007-(22-08-2013)-FORM-1.pdf

1449-KOLNP-2007-(22-08-2013)-FORM-2.pdf

1449-KOLNP-2007-(22-08-2013)-FORM-3.pdf

1449-KOLNP-2007-(22-08-2013)-FORM-5.pdf

1449-KOLNP-2007-(22-08-2013)-OTHERS.pdf

1449-KOLNP-2007-(22-08-2013)-PA.pdf

1449-KOLNP-2007-(22-08-2013)-PETITION UNDER RULE 137-1.pdf

1449-KOLNP-2007-(22-08-2013)-PETITION UNDER RULE 137.pdf

abstract-01449-kolnp-2007.jpg


Patent Number 259274
Indian Patent Application Number 1449/KOLNP/2007
PG Journal Number 10/2014
Publication Date 07-Mar-2014
Grant Date 05-Mar-2014
Date of Filing 23-Apr-2007
Name of Patentee CITRIX SYSTEMS, INC.
Applicant Address 851, WEST CYPRESS CREEK ROAD FORT LAUDERDALE, FL
Inventors:
# Inventor's Name Inventor's Address
1 BRADDY, RICKY, GENE C/O CITRIX SYSTEM INC., 851, WEST SYPRESS CREEK ROAD FORT LAUDERDALE, FL 33309
2 STONE, DAVID, SEAN 248, ALLENWOOD DRIVE LAUDERDALE, BY-THE-SEA, FL 33308
3 SIMMONS, TIMOTHY C/O CITRIX SYSTEMS INC., 851, WEST CYPRESS CREEK ROAD FORT LAUDERDALE, FL 33309 UNITED STATES OF AMERICA
4 STONE, DAVID, SEAN 248, ALLENWOOD DRIVE, LAUDERDALE, BY-THE-SEA, FL 33308 UNITED STATES OF AMERICA
5 SIMMONS, TIMOTHY C/O CITRIX SYSTEM INC., 851, WEST SYPRESS CREEK ROAD FORT LAUDERDALE, FL 33309
PCT International Classification Number H04L 29/06
PCT International Application Number PCT/US2005/028605
PCT International Filing date 2005-08-10
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 10/711,731 2004-09-30 U.S.A.