Electrical computers and digital processing systems: support – Multiple computer communication using cryptography – Protection at a particular protocol layer
Reexamination Certificate
1999-09-02
2004-07-27
Sheikh, Ayaz (Department: 2131)
Electrical computers and digital processing systems: support
Multiple computer communication using cryptography
Protection at a particular protocol layer
Reexamination Certificate
active
06769068
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to a computer system, and deals more particularly with a method, system, and computer program product for dynamically refreshing client credentials in a distributed, client/server environment.
2. Description of the Related Art
The client/server networking environment provides for distribution of computer-performed work across multiple computers and allows sharing of resources (such as databases, processors, and applications) among multiple users. The benefits of the client/server environment are substantial, including cost savings and reliability, among others. These benefits, however, come at the expense of a number of problems which are associated with client/server or distributed processing. One such problem is the need to provide security to keep unauthorized users from accessing valuable assets such as company databases where trade secrets, financial information and employee information are stored. Even more problematic is the need to ensure that a server application, acting on behalf of an authorized client, has access to only those resources that the client is authorized to use.
Within the client/server environment, a user begins processing by using an application located on a client machine. The client-side application is typically focused on the task of communicating with the user via displays (for example, enabling the user to make requests and then see the results), while the server-side application is typically focused on the tasks of collecting the information needed for the user's request, processing the information, and sending the results of the processing back to the client machine. In the early days of client/server computing, a client application communicated with a server application which completed the processing, or series of tasks, on a single machine, and then returned the results of the processing to the requesting client. As technology in networks and computers evolved, however, so did the complexity of client/server environments. Today, a client/server application may ultimately interoperate with several servers before completing the request and returning the results of the processing to the client. The required processing, or series of tasks, may be distributed among several servers, with each server providing the processing of a particular task. For example, a simple client request may require extracting data from a database, processing the extracted data, and then returning the results to the requesting client. The server machine receiving the request may delegate the data extraction task to a database server, receive the data from the database server, delegate the task of processing the data to a processing server, and return the results to the client when the processing server has completed.
The complexity of the client/server environment has affected the way servers complete tasks initiated by a client. Since multiple servers may be involved in completing the client-initiated tasks, the server applications need to process tasks atomically (i.e. all parts of a task either complete successfully, or all modifications which may have been performed for the incomplete task must be “rolled back” or “backed out”). If a task on one server fails for any reason, then the other server's tasks may need to be terminated (in the case of those still running), canceled (for those tasks that have not been initiated), or backed out (for those tasks that did complete prior to the failure). This leads to very complex distributed application programming code.
With the increasing complexity in the client/server environment, several measures for providing secure communications and protecting resources have been developed. Two measures that address security issues in overall computer use, including the client/server environment, are authentication and authorization.
One aspect of protecting resources is the ability to ensure the person attempting to access the system is, in fact, the person they are purporting to be. This is known as “authentication” and typically involves a user providing a user name (or other identifier) to indicate to the system who the user is and a password (or a secret) used to indicate that it is, in fact, the legitimate user for that user name and not someone trying to impersonate him. Authentication may also include some determination of system-wide privileges or limitations placed on a user. For example, a user may have the ability to make administrative changes to a particular system or cluster of systems, but not to all systems in a computer complex. Authentication is typically done once at the beginning of each user session.
Another aspect of protecting resources is the ability to ensure that an authenticated user is authorized to access a protected resource. An employee, for example, may be authorized to access information related to the work calendar showing the company's designated holidays. This same employee, however, may not be authorized to access the salary database for all employees in the company. In this case, the user may be provided with credentials which indicate the privileges or limitations for this user to access specific information. This aspect is called “authorization”.
In a multi-server application environment, authenticating users against password databases may impede performance since the server may have to communicate to distant security servers over a busy network to get to the appropriate password database. When multiple servers are involved in the application, the impact of having multiple accesses to the password database can affect overall performance of the application. To alleviate the need for each server to check a client's password, a client can create a signed credential that includes a specification of the resources a user is authorized to access, as stated above. This credential is only provided after a client is authenticated and provides a valid password. The credential can then be passed along to the server application which can, in turn, validate the credential locally and thereby avoid performance problems associated with validating a user's password. This is common practice today and is well known to those familiar with the art.
To ensure that a user cannot gain indefinite access to protected resources once a credential is obtained, credentials typically expire after some period of time, after which they are no longer accepted as valid. If a credential expires before all associated tasks are completed, the server application typically causes completed tasks to be backed out and the client receives an error code indicating that the credential needs to be refreshed for the operation to be performed. Since the client's password is required to obtain a new credential, the server application cannot act on behalf of the client to request the refreshed credentials. Therefore, the client is required to repeat the process of revalidating the user with a password, obtaining another credential for the protected resources needed by the server application, and retrying the operation. The impact to the client is wasted time caused by the failed processing of the initial request and the need for the request to be re-started after the credentials are refreshed. The impact on the client/server environment can be significant in that the processing time up to the point of the credential expiration is wasted time. In addition, the servers which did complete tasks associated with the request have the additional burden of backing out those tasks which had completed. The need to deal with these problems as part of the normal path of request processing can also lead to increased program complexity.
Accordingly, what is needed is a technique for enabling a server to dynamically refresh a client's credentials in a client/server environment, without disruption to an ongoing secure process being performed for an otherwise authorized client. This technique must preserve a system administrator's ability
Brozowski Mathew James
Cox David E.
Greenfield Jonathan Scott
Lambert John J.
Reidelbach Anne Renee
Doubet Marcia L.
Herndon Jerry W.
International Business Machines - Corporation
Ray-Yarletts Jeanine S.
Revak Christopher
LandOfFree
Dynamic credential refresh in a distributed system does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Dynamic credential refresh in a distributed system, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Dynamic credential refresh in a distributed system will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3250418