|
|
|
| United States Patent | 5481720 |
| Link to this page | http://www.wikipatents.com/5481720.html |
| Inventor(s) | Loucks; Larry K. (Austin, TX);
Smith; Todd A. (Austin, TX) |
| Abstract | In a distributed data processing system, the authentication of a process at
one node for the use of a service at another node is performed in a
facility that is separate from the requestor and service process. The
separate facility is also replaceable, thereby allowing different
authentication policies to be implemented within the distributed data
processing system. The requesting process and the service process merely
pass the authentication information between themselves without attempting
to interpret the work of the separate authentication facility. In addition
to authenticating the requestor to the service, the service is also
authenticated to the requestor. |
|
|
|
Title Information  |
|
|
|
|
|
Drawing from US Patent 5481720 |
|
|
Flexible interface to authentication services in a distributed data
processing environment |
|
|
|
|
|
| Publication Date |
January 2, 1996 |
|
|
|
|
|
| Filing Date |
September 14, 1994 |
|
|
|
|
|
|
|
|
|
|
|
| Parent Case |
This is a continuation of application Ser. No. 07/751,603, filed on Aug.
21, 1991 which is a continuation of application Ser. No. 07/352,518 filed
May 15, 1989, both now abandoned.
Application Ser. No. 07/014,897 filed Feb. 13, 1987, in the name of Johnson
et al for "A System And Method for Accessing Remote Files In A Distributed
Networking Environment", now U.S. Pat. No. 4,887,204, herein incorporated
by reference.
Application Ser. No. 07/352,090 filed May 15, 1989, in the name of Johnson
et al for "Maintenance Of File Attributes In A Distributed Data Processing
System", now U.S. Pat. No. 5,113,519 herein incorporated by reference.
Application Ser. No. 07/898,234, Jun. 12, 1992; continuation of Ser. No.
07/739, Aug. 1, 1991, abandoned; continuation of 07/352,220, abandoned,
filed May 15, 1989, in the name of Morgan et al for "File Extension By
Clients In A Distributed Data Processing System", now U.S. Pat. No.
5,305,440, herein incorporated by reference.
Application Ser. No. 07/352,025 filed May 15, 1989, now U.S. Pat. No.
4,908,978, in the name of Johnson et al for "Remote Authentication And
Authorization In A Distributed Data Processing System", herein
incorporated by reference.
Application Ser. No. 07/893,959, Jun. 4, 1992; continuation of Ser. No.
07/352,080 filed May 15, 1989, now abandoned in the name of D. W. Johnson
et al for "File Lock Management In A Distributed Data Processing System",
now U.S. Pat. No. 5,226,159, herein incorporated by reference.
Application Ser. No. 07/352,084 filed May 15, 1989, in the name of D. W.
Johnson et al for "System and Method For Efficient Control of Cached Data
In A Distributed Data Processing System", now U.S. Pat. No. 5,175,851,
herein incorporated by reference.
A portion of the disclosure of this patent document contains material which
is subject to copyright protection. The copyright owner has no objection
to the facsimile reproduction by anyone of the patent document or the
patent disclosure, as it appears in the Patent and Trademark Office patent
file or records, but otherwise reserves all copyright rights whatsoever. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
Description  |
|
|
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to a plurality of data processing systems connected
by a communications link, and more particularly to the authentication of a
process at one of the data processing systems for the use of a service at
another one the data processing systems in a distributed networking
environment.
2. Description of the Related Art
As shown in FIG. 1, a distributed networking environment 1 consists of two
or more nodes A, B, C, connected through a communication link or a network
3. The network 3 can be either a local area network (LAN), or a wide area
network (WAN).
At any of the nodes A, B, C, there may be a processing system 10A, 10B,
10C, such as a workstation. Each of these processing systems 10A, 10B,
10C, may be a single user system or a multi-user system with the ability
to use the network 3 to access files located at a remote node. For
example, the processing system 10A at local node A, is able to access the
files 5B, 5C at the remote nodes B, C, respectively.
Within this document, the term "server" will be used to indicate the
processing system where the file is permanently stored, and the term
"client" will be used to mean any other processing system having processes
accessing the file. It is to be understood, however, that the term
"server" does not mean a dedicated server as that term is used in some
local area network systems. The distributed services system in which the
invention is implemented is truly a distributed system supporting a wide
variety of applications running at different nodes in the system which may
access files located anywhere in the system.
As mentioned, the invention to be described hereinafter is directed to a
distributed data processing system in a communication network. In this
environment, each processor at a node in the network potentially may
access all the files in the network no matter at which nodes the files may
reside.
Other approaches to supporting a distributed data processing system are
known. For example, IBM's Distributed Services for the AIX operating
system is disclosed in Ser. No. 014,897 "A System and Method for Accessing
Remote Files in a Distributed Networking Environment", filed Feb. 13, 1987
in the name of Johnson et al. In addition, Sun Microsystems has released a
Network File System (NFS) and Bell Laboratories has developed a Remote
File System (RFS). The Sun Microsystems NFS has been described in a series
of publications including S. R. Kleiman, "Vnodes: An Architecture for
Multiple File System Types in Sun UNIX", Conference Proceedings, USENIX
1986 Summer Technical Conference and Exhibition, pp. 238 to 247; Russel
Sandberg et al., "Design and Implementation of the Sun Network
Filesystem", Conference Proceedings, Usenix 1985, pp. 119 to 130; Dan
Walsh et al., "Overview of the Sun Network File System", pp. 117 to 124;
JoMei Chang, "Status Monitor Provides Network Locking Service for NFS",
JoMei Chang, "SunNet", pp. 71 to 75; and Bradley Taylor, "Secure
Networking in the Sun Environment", pp. 28 to 36. The AT&T RFS has also
been described in a series of publications including Andrew P. Rifkin et
al., "RFS Architectural Overview", USENIX Conference Proceedings, Atlanta,
Ga. (June 1986), pp. 1 to 12; Richard Hamilton et al., "An Administrator's
View of Remote File Sharing", pp. 1 to 9; Tom Houghton et al., "File
Systems Switch", pp. 1 to 2; and David J. Olander et al., "A Framework for
Networking in System V", pp. 1 to 8.
One feature of the distributed services system in which the subject
invention is implemented which distinguishes it from the Sun Microsystems
NFS, for example, is that Sun's approach was to design what is essentially
a stateless server. This means that the server does not store any
information about client nodes, including such information as which client
nodes have a server file open or whether client processes have a file open
in read.sub.-- only or read.sub.-- write modes. Such an implementation
simplifies the design of the server because the server does not have to
deal with error recovery situations which may arise when a client fails or
goes off-line without properly informing the server that it is releasing
its claim on server resources.
An entirely different approach was taken in the design of the distributed
services system in which the present invention is implemented. More
specifically, the distributed services system may be characterized as a
"stateful implementation". A "stateful" server, such as that described
here, does keep information about who is using its files and how the files
are being used. This requires that the server have some way to detect the
loss of contact with a client so that accumulated state information about
that client can be discarded. The cache management strategies described
here cannot be implemented unless the server keeps such state information.
The problems encountered in accessing remote nodes can be better understood
by first examining how a stand-alone system accesses files. In a stand
alone system, such as 10 as shown in FIG. 2, a local buffer 12 in the
operating system 11 is used to buffer the data transferred between the
permanent storage 2, such as a hard file or a disk in a workstation, and
the user address space 14. The local buffer 12 in the operating system 11
is also referred to as a local cache or kernel buffer.
In the stand-alone system, the kernel buffer 12 is divided into blocks 15
which are identified by device number, and logical block number within the
device. When a read system call 16 is issued, it is issued with a file
descriptor of the file 5 for a byte range within the file 5, as shown in
step 101, FIG. 3. The operating system 11 takes this information and
converts it to device number, and logical block numbers in the device,
step 102, FIG. 3. If the block is in the cache, step 103, the data is
obtained directly from the cache, step 105. In the case where the cache
doesn't hold the sought for block at step 103, the data is read into the
cache in step 104 before proceeding with step 105 where the data is
obtained from the cache.
Any data read from the disk 2 is kept in the cache block 15 until the cache
block 15 is needed for some other purpose. Consequently, any successive
read requests from an application 4 that is running on the processing
system 10 for the same data previously read is accessed from the cache 12
and not the disk 2. Reading from the cache is far less time consuming than
reading from the disk.
Similarly, data written from the application 4 is not saved immediately on
the disk 2, but is written to the cache 12. This saves disk accesses if
another write operation is issued to the same block. Modified data blocks
in the cache 12 are saved on the disk 2 periodically.
Use of a cache in a stand-alone system that utilizes an AIX operating
system improves the overall performance of the system since disk accessing
is eliminated for successive reads and writes. Overall performance is
enhanced because accessing permanent storage is slower and more expensive
than accessing a cache.
In a distributed environment, as shown in FIG. 1, there are two ways the
processing system 10C in local node C could read the file 5A from node A.
In one way, the processing system 10C could copy the whole file 5A, and
then read it as if it were a local file 5C residing at node C. Reading a
file in this way creates a problem if another processing system 10A at
another node A modifies the file 5A after the file 5A has been copied at
node C as file 5C. The processing system 10C would not have access to
these latest modifications to the file 5A.
Another way for processing system 10C to access a file 5A at node A is to
read one block, e.g. N1, at a time as the processing system at node C
requires it. A problem with this method is that every read has to go
across the network communication link 3 to the node A where the file
resides. Sending the data for every successive read is time consuming.
Accessing files across a network presents two competing problems as
illustrated above. One problem involves the time required to transmit data
across the network for successive reads and writes. On the other hand, if
the file data is stored in the node to reduce network traffic, the file
integrity may be lost. For example, if one of the several nodes is also
writing to the file, the other nodes accessing the file may not be
accessing the latest updated data that has just been written. As such, the
file integrity is lost since a node may be accessing incorrect add
outdated files.
In a stand-alone data processing system, file access control is often
provided in order to protect sensitive information that users do not want
to share with each other. A problem confronted with distributed data
processing systems is how to distribute this same model of control and
provide secure access to a user's information remotely while keeping other
remote users from inadvertently or maliciously accessing or manipulating
data belonging to another user.
Two problems that must be solved in order to provide a secure remote access
for users are authentication and authorization. Authentication is the
process of identifying a user of a data processing system. Users typically
accomplish authentication by presenting the user's name, or account number
for the system, followed by a secret password which should only be known
by that user. Presenting the secret password, which can be validated by
the system, allows the system to authenticate the user to be who the user
claims to be. Once authenticated, the system may then authorize this user
to have access to resources managed by the data processing system.
Therefore, authentication is the identification of a user, and
authorization is the granting of a privilege to a user to gain some kind
of access to the system.
As mentioned above, authentication of local users is often accomplished
through the use of a shared secret. This secret is typically a password
which the user enters at a prompt. The system then compares this password
to a recorded version of the password. If the system determines that the
password is correct, the user is authenticated. Remote authentication is
more difficult than that previously described.
A procedure for remote authentication is described in the following papers.
"Kerberos: An Authentication Service For Open Network Systems", Steiner,
Jennifer G.; Neuman, Clifford; Schiller, Jeffrey I.; pages 1-15, USENIX,
Dallas, Tex., Winter, 1988. "Project Athena Technical Plan, Section E.2.1,
Kerberos Authentication and Authorization System", Miller, S. P.; Neuman,
B. C.; Schiller, J. I.; Saltzer, J. H.; pages 1-36, Massachusetts
Institute of Technology, Oct. 27, 1988. These above two references are
herein incorporated by reference. This Kerberos based remote
authentication authenticates users working at one node in a distributed
data processing system to services running on the same node or other nodes
in the distributed system. A distinctive property of the Kerberos protocol
is that users can be authenticated with services running on nodes which
share no secret with the user. If a simple password based authentication
scheme were used, each user would have to share a secret with each machine
in the entire distributed system. By using the Kerberos protocol, users
need to share a secret with only one machine; the machine running the
Kerberos authentication service.
Kerberos authentication works as follows. In order to be authenticated to a
remote service, the user must present a specially constructed data
structure, called a ticket, to the service that the user wishes to be
authenticated to. This ticket is particular to the user and the service.
That is, each service requires that these tickets are tickets intended for
that service. Moreover, these tickets are specially constructed for an
individual user who wants to be authenticated. These tickets are issued by
the part of the Kerberos authentication server called the ticket granting
service. Before using the service, say a remote print server, a user
acquires a ticket for that print server. The user requests the Kerberos
ticket granting service to issue a ticket for that user for the use of the
print server. The Kerberos ticket granting service constructs the ticket,
gives it to the user, and the user presents it to the print server. The
print server examines the ticket and can determine that the sender was
indeed the claimed user.
In detail, this Kerberos scheme is more complex in order to ensure that
tickets can not be forged or stolen by another user. ID addition, the
messages for passing tickets between machines are designed such that the
messages can not be recorded and replayed. The Kerberos scheme also
ensures that the the user can not trick the ticket granting service
itself. This last step can be accomplished by requiring a ticket to use
the ticket granting service. This master ticket is acquired by users
before any other ticket can be issued for that user. Once a user has a
master ticket, the user can present the master ticket to the ticket
granting service and be issued tickets for other services in the
distributed system.
Another distinctive feature of the Kerberos authentication scheme is that
while the user must go to the authentication server to request tickets,
the service to which these tickets are being presented does not need to
communicate with the Kerberos authentication service during the user
authentication.
The Kerberos protocol provides a sophisticated authentication scheme.
However, such schemes are not appropriate for small networks where the
overhead in administering a Kerberos server may not justify its use. In
such cases, other authentication schemes are possible which may just
simply involve the sharing of a secret between every user and every node
in the distributed system. If the distributed system has only a few
machines, such as three or so, it may be easier for each user to maintain
a password on each machine and to authenticate that password periodically
to ensure that the users are not compromised.
A third possible authentication scheme might be appropriate for networks
that are larger than those that can be conveniently managed by users
needing individual passwords on each machine yet are smaller than would
justify a Kerberos authentication protocol. This third scheme might use a
centralized authentication server which all of the nodes communicate with.
A password might be presented to a remote service by a user, and the
remote service checks with the central authentication server to determine
whether the password is correct. This requires services to communicate
with the authentication server instead of users. This is in contrast to
the Kerberos scheme where services do not need to communicate with the
authentication server during user authentication.
As illustrated above, there is a wide range of possible implementations of
authentication servers that may be appropriate for distributed systems
providing user authentication.
An operating system, such as the AIX operating system, which provides for
distributed functions such as in Distributed Services of the AIX operating
system, uses remote authentication to authenticate client machines to
servers, servers to client machines, and users to server machines.
However, it may be desirable to run an operating system having distributed
functions in various sizes of networks having a range of nodes from one or
two nodes to hundreds or thousands of nodes. Consequently, an operating
system providing distributed functions must run in the presence of various
authentication schemes from the simplest most straight forward scheme to
the most complex and sophisticated scheme.
An efficient way of implementing a distributed services function of an
operating system is to modify the operating system kernel to support
distributed service operations. This includes the communication between
nodes and the management add synchronization of the facilities being
distributed. When a user operation on one machine causes a request to be
sent to a remote machine, that user must be authenticated to the remote
machine. This activity causes programs to be executed at the remote
machine. The distributed service function of the operating system must
perform the authentication of the remote user, but to do so, it must use
the network's authentication scheme, for which various schemes are
possible and can operate very differently from one another. Additionally,
this authentication may require communications with the remote
authentication server at either the user side or at the remote machine
side. Since it is impossible to anticipate all possible authentication
schemes that the network may be using, it is desirable for a distributed
service function of the operating system to have a flexible authentication
protocol that allows it to use whatever available authentication scheme is
running on the network.
For example, a distributed service of the operating system gets to a remote
machine with a request from a user, but the remote machine may discover
that it has never seen this user before. The remote machine then may
require the user to authenticate itself to the remote machine. However,
the distributed service function may not know how the authentication is to
be performed. If the distributed service function determined how the
authentication process is to be performed, this would limit the users of
the distributed service function of an operating system to the one
predetermined authentication scheme. Furthermore, if the predetermined
authentication scheme requires remote communications with the server,
there is a variety of exceptions and failures which are difficult to
provide for inside the kernel of the operating system at the point where
the authentication process would need to be performed. If the
communications to the authentication server breaks, and the authentication
process is inside the kernel, all processing within the data processing
system may come to a halt while the operating system kernel is waiting
while trying to communicate with the remote authentication server.
SUMMARY OF THE INVENTION
It is therefore an object of this invention to provide a mechanism which is
general enough to interface to any of the previously known authentication
schemes.
The system and method of this invention defines an interface between an
operating system providing distributed service functions and a user
program providing an authentication scheme. This interface is well defined
and highly structured such that the kernel of the operating system does
not change at all depending upon the authentication services in the
network that are being utilized. A program providing an authentication
scheme can be interchangeable with other authentication programs whenever
the authentication scheme changes in the network. In addition, utilizing a
user program at the remote machine to perform the authentication allows
the user program to be killed, restarted, and scheduled as a regular
program without affecting the performance of the underlying operating
system. The complexity of authentication lies in the program and not in
the kernel of the operating system.
An authentication daemon program is used at both the user initiating node
and the receiving service node. A set of message flows allows a
distributed service function within the operating system to use the
results of these authentication daemons in a way that is transparent to
the distributed services function. The distributed services function
merely passes the information back and forth without attempting to
interpret the work of the authentication daemon. Accordingly, different
authentication daemon programs using different authentication schemes can
be used interchangeably within the network without affecting or changing
the underlying distributed service function of the operating system.
Likewise, the same distributed service function can be used within various
networks having different authentication schemes in the authentication
daemon used in each network.
More specifically, a request sent to a remote service that requires
authentication includes an object called the authentication information
object. This authentication information object and an associated
authentication acknowledgement value are constructed, at the requestor's
node, by the authentication daemon from information about the requestor.
The contents of these authentication items and the means for their
construction are preferably unknown outside of the authentication daemon
itself. The authentication acknowledgement value is retained and the
authentication information object is included in the message used for the
request. The service, before performing the request, extracts the
authentication information object from the request and passes it to a
second authentication daemon running at the service's node. This second
authentication daemon uses the authentication information object to
authenticate the requestor according to the authentication policy
supported by the daemons. The second authentication daemon also returns a
second authentication acknowledgement value that is returned to the
requestor in the reply to the request. This second authentication
acknowledgement is compared with the first authentication acknowledgement
previously retained by the requestor to ensure that the identity of the
remote service is that of the intended service.
BRIEF DESCRIPTION OF THE DRAWING
FIG. 1 is a block diagram of a distributed data processing system known in
the art.
FIG. 2 is a block diagram showing a stand-alone data processing system
known in the art for accessing a file through system calls.
FIG. 3 is a flow diagram of the data processing system of FIG. 2 accessing
a file through a system call.
FIG. 4A is a request.sub.-- for.sub.-- service message which is used by a
process running on a client machine in order to request that a remote
service be performed.
FIG. 4B illustrates the messages that flow between the authentication agent
and the requestor and between the authentication agent and the service.
FIG. 5 shows a client data processing system and a server data processing
system in a distributed data processing system having a separate
authentication agent for performing authentication.
FIG. 6 is a flow showing the operations of the requestor, the
authentication agent, and the service in the method of this invention.
DESCRIPTION OF THE PREFERRED EMBODIMENT
With reference to FIG. 4A, the internode message request.sub.-- for.sub.--
service 410 used herein is described. The request.sub.-- for.sub.--
service message 410 is used by a process running on a client machine in
order to request that a remote service be performed. The request 411 has
an opcode 413 indicating the specific operation requested. The request 411
also has an operation field 420 used to indicate the desired operation to
be performed by the server. The authentication info field 416 in the
request is used to pass enough information to the remote machine to
authenticate the process performing the request. The remote machine
responds with the reply 412. The opcode field 414 indicates that this is
the reply for the particular kind of request. The return code (rc) 417 in
the reply is used to indicate the success or failure of the remote
machines attempt to execute the request. An acknowledgement is returned in
the ack field 419. The ack is used to verify that correct identification
between the requesting process and the remote machine has occurred.
FIG. 4B shows the messages that flow between the authentication agent and
the requestor and between the authentication agent and the service. The
requestor to authentication agent message 520 contains information
describing the requestor 531 and information describing the service 532
that the request will be sent to. The authentication agent to requestor
message 521 contains an authentication information object 416 and an
authentication acknowledgement value 534. The service to authentication
agent message 523 contains only the authentication info object 416. The
authentication agent to service message 524 contains another
authentication acknowledgement value 419 and a set of credentials 536 that
are used by the service to authenticate the requestor.
Referring to FIG. 5, a machine 503 contains a requestor 504 that makes use
of an authentication agent 502 through messages 520, 521. The
authentication agent 502 refers to data stored on disk 501. A second
machine 513 contains a service 514 that makes use of an authentication
agent 512 through messages 523, 524. The requestor 504 communicates with
the service 514 via the request.sub.-- for.sub.-- service request 411 and
its reply 412.
In the preferred embodiment, a first machine 503 is communicating with a
second machine 513 over a network. Rather than performing the
authentication operation within the requestor process 504 and the service
process 514, which may be running in an operating system of the machines,
the authentication operation is performed in the authentication agent
programs 502, 512 at both of the nodes. These authentication agents may be
user level programs as used in systems running any type of operating
system or daemons as used in systems executing the AIX operating system,
or other operating systems based on the UNIX operating system.
The following description refers to FIG. 4A, FIG. 4B, FIG. 5, and FIG. 6,
concurrently. Before a process at a first machine begins to send a request
411, step 601, to use the services of a second machine, an authentication
procedure must first be performed. The requesting process 504 sends a
message 520 to the first authentication agent 502 at the first node in
order to initiate authentication, step 602. This message contains
information 531 describing the process making the request and information
532 identifying the requested service.
The first authentication agent 502 uses the contents of the message 520 to
construct a reply 521, step 603, returned to the requesting process, step
604. This reply 521 contains authentication information 416 and an
authentication ack 534. The way in which the authentication agent uses the
contents of message 520 depends upon the particular authentication policy
being supported; but the way that the requesting process uses the reply
521 is independent of the policy supported by the authentication agent.
The requesting process does not interpret either the authentication
information 416 or the authentication ack 534. The only operations that
the requesting process needs to perform with these elements are the
transmission of the authentication information to the remote service in a
request, steps 605, 606 and a bitwise comparison for equality between the
authentication ack 534 received and retained, step 606, from the local
authentication agent 502, and the authentication ack 419 in reply 412
received from the remote service.
In addition, the service receiving the request 411 does not need to
interpret the information contained in the authentication information
field 416. The service, like the requestor, treats the authentication
information in the same manner independent of the authentication policy
that it supports. The service always passes the authentication information
to the authentication agent 512, step 607, where interpretation of this
information is performed, step 608. The agent will find different contents
in the authentication information message 523 depending upon the
particular authentication policy being supported by the authentication
agents 502 and 512. In the message 524 sent from the agent 512 to the
service 514, step 609, the agent places a set of credentials 536 that
describe the remote requestor in a manner that is meaningful to the
service. Additionally, the agent places an authentication ack 419 in this
message that does not need to be interpreted by the service. Like the
authentication information, the authentication ack 419 is treated in the
same manner by the service for all authentication policies supported by
the authentication agent | | |