For a detailed description of exemplary embodiments of the invention, reference wilt now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect, direct, optical or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, or through a wireless electrical connection.
In at least one embodiment, the allocation of resources 20 by the gateway 30 is based on the job role of the users of the clients. For example, a user that is a member of a “finance” user group is permitted access to certain resources pre-designated for use by members of the finance group. Users of one user group may be permitted access to resources that differ from, or may be the same as, the resources to which members of other user groups are permitted access. In accordance with the embodiments described herein, the gateway 30 is responsible for allocating resources to clients.
Referring still to the embodiment of
Referring now to
The storage 42 of the gateway contains software 44 that is adapted to be executed by processor 40. The software 44, when executed by the processor 40, causes the processor 40 to perform various actions described herein that give the gateway some or all of its functionality. The gateway's storage 42 also contains data 45 that is used by the software 44 to perform various tasks.
The architecture of the clients 12 may be the same as, or similar to, the architecture of the gateway 30 depicted in the illustrative embodiment of
The state of the resource identifies the current operational state of the associated resource. An exemplary list of states is provided in Table I below.
Each resource 20 can be allocated for use by a client user that is a member of one or more selected user groups. For example, resource A in
The user credential is used to authenticate the user of the client 12. Accordingly, the credential may comprise a password, a fingerprint template or any other suitable value by which the user can be authenticated. In some embodiments, in addition to the user's identity and/or user group, the gateway 30 determines which resource to assign to the user's client 12 based on the user's credential. Thus, a particular client 12 may be assigned to some resources when a first user uses the client, but to a different set of resources if a different user uses the same client 12. The credential is used in at least some embodiments to differentiate one user from another.
At 62, the client 12 establishes communication with the gateway 30. This act can be performed, for example, by a user of the client executing the client application 14 (
At this point, the gateway 30 has identified the user by, for example, the user's identifier and/or credential. By examining users data structure 34, the gateway determines whether the user is a member of more than one user group. If the user is a member of more than one user group, then at 68, the gateway 30 causes the client 12 to prompt the user to select one of the user groups to which the user is a member. In some embodiments, the user is provided with a menu of user groups from which the user selects.
At 70, the gateway, having been informed by the client 12 as to the user group for the user, selects a resource for use by the client based, in at least some embodiments, on the user's identity and/or the user's user group. The registered resources data structure 32 (
In other embodiments, the selection by the gateway 30 of a resource may also be based on the states of the various resources. For example, a resource that is not currently being used by a user will be given priority over a resource that is already in use.
In still other embodiments, the gateway 30 takes into account the user's credential when selecting a resource to allocate to a particular user, For example, a member of a given user group may be assigned a special password that gives that user the rights to access resources beyond the resources otherwise designated for use by that user's user group.
At 72, the gateway 30 determines the address of the selected resource 30 from the resource information field of the registered resources data structure 32. The gateway 30 then provides the address of the selected resource 30 to the client 12. At 74, the client 12 uses the address to operatively connect to the resource 30. At 76, the gateway 30 changes the state of the resource in the registered resources data structure 32 to reflect that the resource has been assigned to a user. The operative connection between the client 12 and the resource 30 need not include the gateway 30. That is, in at least some embodiments, data transmissions between client 12 and resource 20 do not flow through the gateway.
The embodiments described herein relieves a user of a client 12 from having to determine the address of a desired resource. Instead, that burden falls on the gateway 30.
Some embodiments comprise multiple gateways 30. Each such gateway 30 comprises a client web service 36 and a resource web service 38 and each such gateway 30 accesses, in some embodiments, a common database containing the registered resources 32 and users 34. When a client 12 attempts to establish a connection with a gateway to obtain access to a resource, the client 12 is automatically connected to one of the available gateways. If the connection between the client 12 and the gateway is slow, the client 12 can disconnect from that gateway and select, via, for example, a graphical user interface, a different gateway, or may simply request another gateway 30 to be used (selected automatically for the client).
In some embodiments, the gateway 30 enforces a “policy” for each session. A policy comprises at least one parameter regarding a screen appearance. A policy may comprise, for example, the colors that are used on a display of the client 12, the screen size of a window on the client's display, etc. The policy of one user group may be the same as or different from the policy of another user group. Accordingly, the gateway may enforce multiple policies. The policies may be enforced at the user group level, or for individual users.
In some embodiments, the connection between the client 12 and the resource 20 may become inoperative. Upon the client 12 attempting to re-establish the connection, the gateway 30 detects that the same user (same user detectable using the users credentials) is attempting to re-connect The gateway 30 facilitates re-establishing the connection between the client 12 and the same resource 20 on behalf of the client 12.
In some embodiments, a user may attempt to connect to the gateway from a different client 12 than the user has already used to connect to a resource 20. For example, the gateway 30 may have already facilitated assigning a particular resource to a user who accessed the gateway from that user's home computer (client). With that client-resource connection active, the user may then attempt to connect to the gateway 30 via the user's work-place computer. The user will again present his or her credential (e.g., password) to the gateway 30. On the basis of the credential, the gateway 30 determines that the user is the same user already assigned a resource. In some embodiments, the gateway redirects the connection from the user's home computer to the user's work-place computer so that the user will be connected to the resource via the work-place computer.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.