This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key feature or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
The use of multiple computer operating systems is common in modern corporations. A mixture of Microsoft Windows®, Sun Solaris®, Apple OSX® and various different versions of Unix and Linux are commonplace. Each of these operating systems provides its own mechanisms for maintaining username and password information (“credentials”). This results in considerable administrative overhead when users need to be given access to computers, have access taken away or have their credentials modified (for examples, to change passwords). System administrators may need to perform these operations on multiple operating systems and on multiple machines.
A common scenario (Scenario 1) is to have Microsoft Windows-based computers using Active Directory® by the Microsoft corporation (“AD”) for authentication but to have all Unix, Linux and Macintosh computers using local authentication. In this scenario, the Windows computers may authenticate with AD, but each of the other systems has its own, local, username/password database or table. Administrative changes have to be made once to AD and then N times for each of the other systems. Another common scenario (Scenario 2) is to use AD for Windows-based systems and then to use one or more Network Information Service (“NIS”) servers to provide authentication for Unix, Linux and Macintosh systems.
Modern operating systems support mechanisms for access control to assure that only authenticated users have access to protected resources. A user without a valid username and password may not have access to some or all resources (files, databases, devices, etc.). Even an authenticated user is typically restricted to accessing specific resources. Different operating systems use different techniques for specifying access controls based on user credentials. Ultimately, what they do is to specify which users have access to what resources.
All operating systems start out by converting user names into more useful representations. User names are not a good basis for access control for several reasons. First, dealing with variable length names imposes computational complexity in processing that should be fast. Second, users might want to change their names (for example, due to change in marital status) and, yet, keep access to their resources. Operating systems typically map user names into numerical representations. Windows® maps usernames into security identifiers (“SIDs”); Unix and Unix-variants map usernames into user ids (“UIDs”) and group ids (“GIDs”). These operating systems then base access control on these numerical representations. In the first scenario described above, each Unix, Linux and Macintosh system is independent of other identity management systems and performs its own name-to-UID/GID mapping. In the second scenario, each NIS server provides name-to-UID/GID mapping to its associated computers, though these mappings can be different between the NIS servers.
A mapping may be understood as a table that converts a username into a numerical representation: M(name)-->numerical identifier. In both scenarios described, there are multiple mappings: M1, M2, . . . Mn. In the first scenario, AD has a mapping and each Unix, Linux and Macintosh computer has its own mapping. In the second scenario, AD has a mapping and then each NIS server has a mapping.
The mappings utilized by AD are frequently supported by a directory service (“DS”). Directory services (DS'es) are used by organizations to store and organize information about users and computer resources distributed throughout their networks. This information is represented to users of the directory service as nodes on a hierarchy. Each node is an instance of an object class which itself is a collection of attributes. An object class is a template that lists a collection of attributes and their respective types. The schema of the DS is the definition of the object classes and associated attributes. Many modern directory services, such as AD, are based on the Lightweight Directory Access Protocol (LDAP). LDAP provides a hierarchical storage model to maintain information about users, computers and other entities.
By way of example, a user may be represented in a DS as an instance of the object class “user.” This object class lists a collection of attributes that describe a user, such as “sn” which holds the surname of the user and “mobile” which holds the primary mobile phone number of the user. Each type of resource, such as “user” or “computer,” is represented in the DS as an instance of an object class.
DS'es are used by software applications for a variety of purposes. Frequently, DS'es are used for user authentication purposes. When a user enters a username and password into an application, the application may communicate with the DS to assure that the user's password is correct and that the user has sufficient privileges to run the application.
To store additional information in a DS, such as the mappings maintained by NIS or an Unix/Linux computer when such are added to a DS utilized by AD, may require modifying the schema by adding new object classes with new attributes and/or attribute sets or by modifying existing object classes through the addition and/or modification of the attributes of such existing object classes. DS administrators may be reluctant to make schema modifications or to allow any other changes to be made to a DS that might affect the use and integrity of important directory service objects. There are several reasons for this reluctance. Schema modifications are frequently difficult to “undo” if anything goes wrong during the modification process. Poorly designed modifications can also impact DS performance. DS administrators might also be reluctant to allow applications to modify important data, such as may be found in “user” object instances. Software defects might accidentally result in data corruption that could severely impact system operations.
Migration to a unified identity management system (“IMS”) supported by one DS may simplify and allow central management of users and credentials. Migration to a unified IMS supported by one DS may be complicated by a desire to avoid having to unnecessarily change either i) the directory service (“DS”) which may continue to support an existing mapping service, other services, and a new IMS or ii) legacy computers and applications and processes to instruct such machines and processes to use the new IMS instead of the legacy system. If existing mappings are not preserved, users may lose access to resources that were previously available or, worse, if a user's name is inadvertently mapped to a numerical representation previously used by another user, the user might gain improper access to a resource that was previously inaccessible. If changes to a DS are made without sufficient knowledge of all application and process dependencies, then the changes may cause application and process failures.
The art has thus not demonstrated a satisfactory method to migrate credentials to a unified IMS with minimal changes to the DS supporting the unified IMS and with minimal changes to the legacy applications and processes which rely upon the legacy credential mappings.
Generally stated, this disclosure describes a method and technique for migrating credentials into a unified IMS which maintains existing mappings. The disclosed invention is directed to variations of a method for migrating non-native credentials into an IMS by associating the non-native credentials with existing DS object instances without the addition of attributes directly to the DS object classes. The variations involve creating an “Application Partition” (defined further herein). Nodes created in the Application Partition are referred to herein as “Cell Nodes.” One variation creates Cell Nodes as instances of existing object classes in the Application Partition; the certain of the mapping information is stored in the attributes of the new instances of the existing object classes. The schema of the DS in this variation is not modified. Another variation involves creating new object classes with attributes tailored to store the mapping information and creating Cell Nodes as instances of the new object classes in the Application Partition; certain of the mapping information is stored in the attributes of the new instances of the new object classes. The schema of the DS in this variation is modified.
The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings identify the same or similar elements. The following detailed description is for the purpose of illustrating embodiments of the invention only, and other embodiments are possible without deviating from the spirit and scope of the invention, which is limited only by the appended claims. Certain of the figures are labeled with terms associated with specific software applications or categories of software applications. The labels and the following discussion use these terms and related terms as examples and not as limitations. Equivalent functions may be provided by other software applications operating on general and/or specialty purpose devices. Thus, references in this document to a browser, a webserver, a directory service, or a database should be understood to describe any software application providing similar functions, operating on suitable hardware for such software application, and provided with suitable communication facilities. References to a “network” shall be understood to describe any suitable network capable of providing communication between the other components, such as but not limited to the Internet. The components depicted in the figures represent function groups; it should be understood that such function groupings need not exist as discrete hardware devices or software applications and that the functions described as occurring within, comprising, or being provided by a grouping may be provided within or by common or separate physical and/or logical hardware devices and software applications. The components within and comprising any of the function groupings may be regrouped in other combinations and certain of the functions and/or steps may be omitted or re-ordered without deviating from the spirit of the disclosed invention.
Computer One, 111, is a Windows computer comprising two users with usernames “One.1, 111.01, and “One2,” 111.02. The usernames depicted in this and other figures are not meant to be actual usernames (canonically correct or otherwise), merely examples used for convenience in this disclosure. Computer Two, 112, is a Unix/Linux and/or OSX computer comprising two registered users with usernames “Two.1, 112.01, and “Two.2,” 112.02, and mapping M1 112.03 which comprises entries mapping the user names to UID and GID numbers as shown. These users are referred to as “registered” because their credentials reside on Computer Two. Computer Three, 113, is a Unix/Linux and/or OSX computer comprising two users with usernames “Three.1, 113.01, and “Three.2,” 113.02. Computer Four, 114, is a Unix/Linux and/or OSX computer comprising two users with usernames “Four.1, 114.01, and “Four.2,” 114.02.
New features of the AD server 102 further comprise Cell Nodes 102.06. These Cell Nodes 102.06 are depicted as comprising cellnode1 and cellnode2; the common name (“CN”) for cellnode1 is shown as UUID1 while the common name for cellnode2 is shown as UUID2. Cellnode1 is depicted as having the following child nodes below it: subnode1 with a CN of SID3 and attribute values comprising UID1 and GID1, subnode2 with a CN of SID4 and attribute values comprising UID2 and GID1, and subnodeG3 with a CN of SID9 and attribute values comprising GID1. Cellnode2 is depicted as having the following child nodes below it: subnode4 with a CN of SID5 and attribute values comprising UID3 and GID1; subnode5 with a CN of SID6 and attribute values comprising UID4 and GID1 and GID2; subnode6 with a CN of SID7 and attribute values comprising UID5 and GID1; subnode7 with a CN of SID8 and attribute values comprising UID6 and GID2; subnodeG8 with a CN of SID9 and attribute values comprising GID1; and subnodeG9 with a CN of SID10 and attribute values comprising GID2.
Certain of the subnodes are depicted with a single subscript numeral while other of the subnodes are depicted with a subscript preceded by the letter “G.” The numbering of these features is for the sake of convenience only; the “G” is meant to be a reminder in this description only that these subnodes carry information for a group. Certain of the attribute value entries in the drawing are preceded by marks such as “Two.1-->” before the value entries. These marks may or may not be present in actual value entries or may be present in a different form, as discussed further below in relation to “pseudo-values.” Not all of the features of the object instances depicted in
As noted above, the Application Partition may exist in a discrete location within the DS heirarchy, as depicted above, or the Application Partition may comprise multiple branches and/or specific leaf nodes which are present throughout the DS tree structure.
Also depicted in
The OAL 102.08 and/or the transcoding processes 102.08.01 may further be comprise instructions to search for corresponding backlinks and partition links (discussed further below), to obtain values from attributes associated with identified object instances, to perform reverse transcoding on obtained values, to combine obtained values (whether in a native format or following a reverse transcoding process) from one or more object instances, and to properly format the obtained and/or combined values as data and to return such data as one or more unified data structures.
The OAL 102.08 and the transcoding processes 102.08.01 may be provided by hard-coded instructions and/or by a table which comprises such instructions in the form of regular expressions or similar programming techniques. The transcoding and conversion of attribute values may be as simple as noting that a “fax number” attribute be handled as a “phone number” or as complex as a multi-stage compression algorithm; for performance reasons, the transcoding and conversion may be chosen to be computational efficient, such as a mask.
Also new in
At step 404, computer nodes (instances of the computer object class) are created as child nodes below the created map reference OU's, one computer node for each computer which utilizes the mapping to which the parent map reference OU corresponds. For example, in
At step 406, user and group nodes are created for users and groups found in mappings M1, M2 . . . Mn and which are not already in the DS which supports the IMS. The created user and group nodes are depicted in
At step 408, for each map reference OU, OU1, OU2 . . . OUn, created at step 402, a Cell Node, cellnode1, cellnode2 . . . cellnoden, is created in the Application Partition. These are represented in
At step 412, for each user and/or group found in the mappings, M1, M2 . . . Mn, create a subnode below a cell node, which cell node corresponds to the map reference OU created at step 402 and which created map reference OU, in turn, corresponds to the mapping in which the user and/or group occurred. For example,
At step 414 a decision junction is depicted in which it is decided or determined whether or not the schema for the DS which supports the IMS may be modified. As noted above, a schema modification may occur when a new object class is added to a schema or when the attribute set of an existing object class is modified. The schema is not necessarily modified at step 414, but may have been modified previously. If schema modification is allowed or required, then the subnode created at step 412 is created as an instance of the new object class provided or identified at step 414; which new object class has attribute(s) which match or are at least compatible with the data type of the identifier which is to be stored as one or more values in the attribute(s). If schema modification is not allowed, then the subnode created at step 412 is created as an instance of an existing object class; which existing object class has attribute(s) which match or are at least compatible with the data type of the identifier which is to be stored as one or more values in the attribute(s).
At step 420, the subnode created between steps 412 and 418 is given a backlink attribute value, utilizing the common name attribute to be the backlink, per above, which is the same as the partition link value—per above, the value of the SID attribute—for the user and/or group created and/or preexisting at step 406. For example,
At step 422, the identification data is optionally transcoded into the data type of the attributes of the object instance created between steps 412 and 420. Such encoding may be performed by the OAL 102.08 and the transcoding processes 102.08.01. The identification data may then be embodied in a pseudo-value. At step 424, the attributes of the subnode created between steps 412 and 420 are set to contain the value(s) of the identification information, as is shown in
At step 504, the computer nodes below the map reference OU's, including OU's 102.04 are searched for the identifier associated with the computer. The identifier associated with the computer may be an attribute value of a computer node, such as a common name. At step 505, the partition link, defined above to be the UUID, of the OU which is the parent of the node identified in step 504 is obtained. In the case of the example of Computer Four 114, OU2 would be identified as the parent node of the computer node for Computer Four and UUID2 would be returned in step 505. At step 506, the cellnode with a backlink attribute value—defined above to be the common name—equal to the partition link value, the UUID, returned in step 505 is identified, such as through a search, navigation, or equivalent operation in the DS which supports the IMS. In the case of the example of Computer Four, cellnode2 would be found to have a backlink attribute or CN value equal to UUID2.
At step 508, the user nodes, which in
Computing device 800 includes one or more communication connections 808 that allow computing device 800 to communicate with one or more computers and/or applications 809. Device 800 may also have input device(s) 807 such as a keyboard, mouse, digitizer or other touch-input device, voice input device, etc. Output device(s) 806 such as a monitor, speakers, printer, PDA, mobile phone, and other types of digital display devices may also be included. These devices are well known in the art and need not be discussed at length here.
Additionally, device 800 may also have other features and functionality. For example, device 600 may also include additional storage (removable 804 and/or non-removable 805) including, but not limited to, magnetic or optical disks or tape. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Memory 803, removable storage 804 and non-removable storage 805 are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by device 800. Any such computer storage media may be part of device 800.
This application claims priority to copending provisional application titled, “Migrating Credentials to Unified Identity Management Systems,” Ser. No. 60/867,562, filed on Nov. 28, 2006.
Number | Date | Country | |
---|---|---|---|
60867562 | Nov 2006 | US |