Patent Publication Number: US-8978098-B2

Title: Centralized user authentication system apparatus and method

Description:
RELATED APPLICATIONS 
     The entire disclosure of each application listed in the foreign and domestic priority sections of the Application Data Sheet filed concurrently with this application is hereby incorporated by reference into this application. 
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to network authentication services. Specifically, the invention relates to apparatus, systems, and methods for authenticating a user. 
     2. Description of the Related Art 
     In recent years, computer networks have become vital to many aspects of life including business, education, and government in part due to their ability to transfer sensitive information securely and efficiently. As the proliferation of computer networks continues, the desirability of enhancing network security increases. An important aspect of network security includes user authentication processes. 
       FIG. 1  illustrates a typical prior art computer network  100 . The depicted network includes multiple computers  110  each having an authentication module  120 , an identification module  130 , an authentication data store  140 , and an identification data store  150 . To gain access to a computer  110 , a user must enter a valid username and authentication name. Accordingly, the identification module  130  receives the username and identifies the user against the local identification data store  150 . Similarly, the authentication module  120  receives the authentication name and authenticates the user against the local authentication data store  140 . 
     Though this approach enables user authentication, the approach includes certain limitations. For example, enabling a user to logon to any computer  110  requires each computer  110  to have an updated authentication and identification data store  140 , 150 . If computers are added to the network  100 , each new computer must be provided with updated data stores  140 , 150 . Furthermore, each data store  140 , 150  must be managed and updated as users are added or removed from the network. In short, providing each network computer  110  a locally managed authentication and identification data store  140 , 150  requires considerable time and effort. 
     One user authentication solution involves providing a merged repository of identification and authentication data available to network computers. A typical example of this includes merging all the user identification and authentication data into a NIS or LDAP repository. However, merging the identification and authentication data can involve considerable time and effort as some networks may include hundreds of users. 
     Given the aforementioned issues and challenges related to providing user authentication services, a need exists for an apparatus, system, and method for providing enhanced user authentication services. Beneficially, such a system, apparatus, and method would enable user authentication without requiring considerable time and effort in creating, managing, and maintaining the service. 
     SUMMARY OF THE INVENTION 
     The present invention has been developed in response to the present state of the art, and in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available user authentication means and methods. Accordingly, the present invention has been developed to provide a system, apparatus, and method for authenticating a user that overcome many or all of the above-discussed shortcomings in the art. 
     In one aspect of the present invention, a user authentication apparatus includes an identification module that receives a password request for a specified user and communicates an encrypted password field in response thereto. The encrypted password field references a directory object corresponding to the specified user. The authentication apparatus also includes an authentication module that communicates the password request to the identification module and receives the encrypted password field therefrom. The authentication module authenticates the specified user against the directory object. In some embodiments, the apparatus includes an identification data store that stores the encrypted password field and an authentication data store that stores the directory object. 
     In another aspect of the present invention, a user authentication system includes an identification subsystem that receives a password request for a specified user and provides an encrypted password field in response thereto. In some embodiments, the identification subsystem includes other identification modules such as a NSS-NIS module, a NSS-LDAP module, one or more NSS-Files modules, etc. The encrypted password field references a directory object corresponding to the specified user. In one embodiment, the encrypted password field comprises a Kerberos principal name. 
     The system may also include an authentication subsystem that communicates the password request to the identification subsystem, receives the encrypted password field therefrom, and authenticates the specified user against the directory object. In some embodiments, the authentication subsystem includes a pluggable authentication module (PAM) or Kerberos module. In some embodiments, the system includes an identification server that stores a reference to the directory object in the encrypted password field. In some embodiments, the system includes an authentication server that stores the directory object referenced by the encrypted password field. In certain embodiments, the identification subsystem and the authentication subsystem are part of a Linux or UNIX computer system. 
     The present invention is entirely backward compatible with authentication systems having an authentication and identification subsystem already in place. In some scenarios, implementing the present invention may only require installing an authentication module of the present invention in an existing authentication subsystem. Additionally, providing an authentication subsystem with centralized data stores facilitates creation, management, and maintenance of the system, even under the weight of hundreds of users. Accordingly, the present invention provides for backward compatibility, simple installation, and facilitated creation, management, and maintenance. 
     In another aspect of the present invention, a method for authenticating a user includes the operations of prompting a user for a username, retrieving an encrypted password field corresponding to the username, and authenticating the user against a directory object referenced by the encrypted password field. In certain embodiments, retrieving an encrypted password field includes accessing an identification data store that stores the encrypted password field. In some embodiments, authenticating the user against the directory object includes accessing an authentication data store that stores directory object referenced by the encrypted password field. 
     In another aspect of the present invention, a method for installing centralized user authentication services includes creating a directory object corresponding to a specified user, referencing the directory object with an encrypted password field in an identification data store, providing an identification module that receives a password request corresponding to the user and communicates the encrypted password field in response thereto, and providing an authentication module that communicates the password request and authenticates the specified user against the directory object. In some embodiments the method includes providing an authentication data store capable of storing directory objects. 
     It should be noted that reference throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages that may be realized with the present invention should be or are in any single embodiment of the invention. Rather, language referring to the features and advantages is understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment of the present invention. Thus, discussion of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment. 
     Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize that the invention can be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which: 
         FIG. 1  is a block diagram illustrating a typical prior art authentication system; 
         FIG. 2  is a block diagram illustrating one embodiment of a user authentication system in accordance with the present invention; 
         FIG. 3  is a block diagram illustrating one embodiment of a user authentication system typology in accordance with the present invention; 
         FIG. 4  is a block diagram illustrating one embodiment of a user authentication apparatus in accordance with the present invention; 
         FIG. 5  is a flow chart diagram illustrating one embodiment of a method for authenticating a user in accordance with the present invention; 
         FIG. 6  is a flow chart diagram illustrating one embodiment of a method for authenticating a user in accordance with the present invention; and 
     
    
    
       FIGS. 1-6  are described in more detail in the section entitled “DETAILED DESCRIPTION OF THE INVENTION.” 
     DETAILED DESCRIPTION OF THE INVENTION 
     It will be readily understood that the components of the present invention, as generally described and illustrated in the Figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the apparatus, method, and system of the present invention, as represented in  FIG. 2 , is not intended to limit the scope of the invention, as claimed, but is merely representative of selected embodiments of the invention. 
     Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like. 
     Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module. 
     Indeed, a module of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network. 
     In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention. 
     The features, structures, or characteristics of the invention described throughout this specification may be combined in any suitable manner in one or more embodiments. For example, reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” or similar language throughout this specification do not necessarily all refer to the same embodiment and the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. 
       FIG. 2  is a block diagram illustrating one embodiment of an authentication system  200  in accordance with the present invention. The depicted authentication system  200  includes a computer  210 , an authentication subsystem  220 , an identification subsystem  230 , an authentication server  240 , an authentication data store  242 , an identification server  250 , and an identification data store  252 . The system  200  significantly reduces the time and effort required in providing centralized user authentication services via subsystem cooperation  220 , 230  and a centralized authentication data store  242  and an identification data store  252  which may or may not be centralized. 
     The authentication subsystem  220  communicates a password request corresponding to a specified user to the identification subsystem  230 . The identification subsystem  250  receives the password request corresponding to the specified user from the authentication subsystem  220 . Upon receiving the request, the identification subsystem  250  communicates with the identification server  250  to retrieve the user&#39;s encrypted password field which references a directory object within the authentication data store  242 . The identification subsystem  230  then forwards the user&#39;s encrypted password field to the authentication subsystem  220 . In certain embodiments, the encrypted password filed includes non-encrypted authorization or identification information for the user. 
     Upon receiving the encrypted password field, the authentication subsystem  220  communicates with the authentication server  240  to authenticate the user against the referenced directory object. Accordingly, the authentication subsystem  220  relies on the identification module  230  and the centralized authentication data store  242  to complete the authentication processes. Additionally, the identification subsystem  230  participates in the authentication process by cooperating with the authentication module  220  and drawing upon the centralized identification data store  252 . 
     The computer  210  may include any computer system having an authentication subsystem  220  and an identification subsystem  230 . In certain embodiments, the computer  210  runs an operating system based on the Linux code base such as RedHat Linux, Turbo Linux, Laser5 Linux, Kondara MNU/Linux, Vine Linux, Slackware Linux, Plamo Linux, or Debian GNU/Linux. In other embodiments, the computer  210  runs a UNIX based operating system such as Hewlett-Packard Unix (HPUX), Advanced Interactive eXecutive (AIX), Berkeley Software Distribution (BSD Unix), SCO Unix, or Macintosh Operating System. 
       FIG. 3  is a block diagram illustrating one embodiment of a user authentication apparatus  300  in accordance with the present invention. The depicted authentication apparatus  300  includes one or more computers  310  with an authentication subsystem  320  and an identification subsystem  330 , an authentication server  340 , and one or more identification servers  350 . The components of the system  300  facilitate user authentication by enabling modular cooperation and providing centralized user identification and authentication. 
     The depicted authentication subsystem  320  includes an authentication module  322 . The authentication subsystem  320  may correspond to the authentication subsystem  220  of  FIG. 2 . The authentication module  322  may generate a password request  360  for a specified username, receiving an encrypted password field  362  in response thereto, and authenticating the specified user  364  against a directory object referenced by the encrypted password field. In certain embodiments, the password request  360  includes a request to the password hash field assigned to a UNIX or Linux user. In other embodiments, a password request includes a request for user information in addition to the encrypted password field of a user. In some embodiments the authentication module  322  is a pluggable authentication module (PAM) or a Kerberos module. 
     The depicted identification subsystem  330  may include one or more identification modules  332 . The identification subsystem  230  may correspond to the identification subsystem  220  of  FIG. 2 . The identification module  332  may include any variety of modules capable of receiving a password request  360  for a specified user and communicating the user&#39;s encrypted password field  362  in response thereto. In certain embodiments, the identification module  332  includes a plurality of identification modules  332 , each capable of interacting with the authentication module  322  and identification server  350 . In one embodiment, each identification module  332  communicates with a corresponding data store  352  to obtain the specified user&#39;s encrypted password field  368 . 
     The identification module  332  validates the identity of the specified user. For example, the identification module  332  may receive a username from the specified user and validate the user  366  by communicating with the identification server  350  and verifying that the user name is found within the identification data store  352 . In certain embodiments, the identification module  432  may include, but is not limited to, a NSS-NIS module, a NSS-LDAP module, or one or more NSS-Files module. 
     In certain embodiments, the user records (not shown) within the identification data store  352  include an encrypted password field. The user records may also include additional data such as the data described in  FIG. 6 . In some embodiments, the identification server  350  includes a plurality of identification data stores  352 , each corresponding to one or more identification modules  332 . Providing a centralized identification data store  352  facilitates the expeditious creation, maintenance, and distribution of usernames and encrypted password fields to any network computer  310 . 
     In certain embodiments, the authentication data store  342  includes a plurality of directory objects. A directory object may include any variety or sequence of data capable of representing a user or similar entity for authentication purposes. In certain embodiments, a directory object includes a Kerberos security principal. In certain embodiments, the directory object includes a unique authentication name or identifier. For example, the directory object may include a Kerberos principal name. Similar to an identification data store  352 , a centralized authentication data store  442  facilitates the creation, maintenance and distribution of authentication data to any network computer  310 . 
       FIG. 4  is a flow chart diagram illustrating a method for authenticating a user in accordance with the present invention. The depicted method  400  includes the operations of receiving  410  a username, identifying  420  the user, testing  430  if the user is identified, retrieving  440  the user&#39;s password, authenticating  450  the user&#39;s password, testing  460  if the user is authentic, and returning  470  a failure status for the user or providing  480  access to the user. The various operations of the method  400  enable user authentication via modular cooperation and centralized data stores. 
     Receiving  410  a username may include an identification subsystem  230  receiving a username from a user. In certain embodiments, receiving  410  a username may occur in response to prompting a user for a username. Identifying  420  the user may include the identification subsystem  230  communicating with an identification server  250  to ascertain the validity of the username. Returning  470  a failure may include returning an error message to the user and denying access to the computer. If the username is valid, the method  400  may continue by retrieving  440  the user&#39;s password. 
     Retrieving  440  the user&#39;s password may include an authentication subsystem  220  communicating a password request to an identification subsystem  230 , the identification subsystem  230  communicating with an identification server  250  to obtain the user&#39;s encrypted password field, and forwarding the encrypted password field to the authentication subsystem  220 . Authenticating  450  the user may include an authentication subsystem  220  communicating with an authentication server  240  to authenticate the user against a directory object referenced by the encrypted password field. If the user is not authenticated, the method  400  may continue by returning  470  a failure status. Otherwise, the method  400  may continue by providing  480  access to the user. 
       FIG. 5  is a flow chart diagram illustrating a method  600  for authenticating a user in accordance with the present invention. The depicted method  500  includes the operations of providing  510  an identification module, providing  520  an identification data store, providing  530  an authentication module, creating  540  a directory object, and  550  referencing the directory object. The method  500  provides a series of operations for setting up a user authentication environment consistent with the present invention. 
     Providing  510  an identification module may include providing one or more identification modules consistent with the identification module  532  of  FIG. 5 . More specifically, providing  510  an identification module may include an identification module  332  capable of receiving a password request  360  and communicating an encrypted password field  362  in response thereto. 
     Providing  520  an identification data store may include providing a location for storing multiple usernames and encrypted password fields such as an identification data store  352  placed on an identification server  350 . Providing  520  an identification data store may also include enabling the identification module  332  and the identification data store  352  to communicate with one another over a network. 
     Providing  530  an authentication module may include providing an authentication module consistent with the authentication module  322  of  FIG. 3 . Providing  430  an authentication module may include providing an authentication module capable of issuing a password request  360  to the identification module  332 , receiving an encrypted password field  362  in response thereto, and authenticating a user  364  against a directory object referenced by the encrypted password field. The authentication module  322  may be a PAM or Kerberos module capable of performing the operations described herein. 
     Creating  540  a directory object may include creating a directory object in a data store  342  of an authentication server  340 . Referencing  550  the directory object may include referencing the directory object in an encrypted password field stored in the aforementioned identification data store  352 . In certain embodiments, the encrypted password field is a password hash field of a UNIX system. In some embodiments, the encrypted password field corresponds to a Kerberos principal name. 
       FIG. 6  is a table illustrating one embodiment of an identification data store  600  in accordance with the present invention. The depicted data store  600  includes one or more user records entries  705 . In the depicted embodiment, each record  705  includes a UserID field  610 , a Group ID field  620 , a Home Directory field  630 , an Encrypted Password field  640 , a Login Shell field  650 , and a Gecos field  660 . The depicted user records  705  exemplify some of the data fields that might be found on an identification data store  352  of an identification server  352  (see  FIG. 3 ). 
     In certain embodiments, as the identification module  332  receives a password request for a specified user. The identification module  332  then queries the identification data store  600  for a record or entry  705  corresponding to the specified user. After locating an entry the specified user, the identification module  332  requests the encrypted password field  340  of the specified user. For example, the identification module may return the encrypted password field corresponding to User3 is Mike@home.com in response to a UNIX getpwnam( )function call invoked by the login shell (not shown. Accordingly, Mike@home.com is forwarded by the identification module  332  to the authentication module  322 . The authentication module  322  then authenticates the user against the directory object referenced by the encrypted password field (i.e. Mike@home.com). Accordingly, the present invention may reference a user&#39;s directory object with an encrypted password field. 
     The present invention facilitates providing authentication services to legacy applications and systems. Additionally, the present invention is entirely backward compatible with authentication systems having an authentication and identification subsystem already in place. In some scenarios, implementing the present invention may only require installing an authentication module of the present invention in an existing authentication subsystem. Additionally, providing an authentication subsystem with centralized data stores facilitates creation, management, and maintenance of the system, even under the weight of hundreds of users. Accordingly, the present invention provides for backward compatibility, simple installation, and facilitated creation, management, and maintenance. 
     The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.