US20090300190A1 - Data Serialization In A User Switching Environment - Google Patents
Data Serialization In A User Switching Environment Download PDFInfo
- Publication number
- US20090300190A1 US20090300190A1 US12/496,500 US49650009A US2009300190A1 US 20090300190 A1 US20090300190 A1 US 20090300190A1 US 49650009 A US49650009 A US 49650009A US 2009300190 A1 US2009300190 A1 US 2009300190A1
- Authority
- US
- United States
- Prior art keywords
- user
- session
- implementations
- sessions
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims abstract description 79
- 230000000977 initiatory effect Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 abstract description 59
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 239000010410 layer Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 244000299461 Theobroma cacao Species 0.000 description 2
- 235000009470 Theobroma cacao Nutrition 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Definitions
- This invention relates to a computer system.
- Modern computer operating systems can be configured to support multiple users and to manage multiple user accounts by creating independent user sessions for each user on a single computing system (e.g., a personal computer). A user may simply log off his own session to allow another user to log on without being required to turning off the computer system.
- a single computing system e.g., a personal computer
- a logon and authentication process Prior to allowing a user access to a session, a logon and authentication process is invoked which often includes prompting the user to enter a password that was previously established when the user account for the computer system was created.
- a conventional logon and authentication process can include prompting the user to enter their password, and retrieving the user's previously encrypted and stored password for comparison. Based on the results of the comparison, the user is provided access to their session.
- the conventional authentication process described above requires that an encrypted password file be retrieved from a storage device and decrypted. Moreover, such a conventional process often requires several secondary applications (e.g., other than the primary logon application) to be invoked to perform the logon and authentication process. This can lead to an inefficient use of memory and processor cycles, and could translate into unnecessary delays in the logon process.
- secondary applications e.g., other than the primary logon application
- Systems, methods, computer-readable mediums, user interfaces and other implementations are disclosed for switching multiple user sessions using an object serialization scheme, and providing expedited access to a previously established user session.
- User configuration data or session information associated with each user can be converted into one or more objects.
- Each object can hold one or more additional objects containing distinct data including, but not be limited to, a user name and a path to a user's picture.
- the object can be serialized and transmitted to a window server for switching out a current user session and initiates a new user session.
- the serialized objects in addition to parameters and settings related to the new user session, can be read from the window server.
- the serialized object is deserialized such that after deserialization, the user configuration information or session information are confirmed. If the confirmation succeeds, the initiation of the new user session proceeds. Otherwise, an error message is returned to the user.
- a method of switching user sessions includes: retrieving user configuration data; receiving user input data; serializing the input data and the configuration data; deserializing the serialized input data and configuration data; and establishing a session based on the deserialized data.
- a method of switching user sessions includes: receiving configuration data associated with a user to establish a user account; storing the configuration data; and authenticating the user to create a new session associated with the user account, where authenticating the user includes: receiving input data; serializing the input data and the configuration data; deserializing the serialized input data and configuration data; initiating the new session using the deserialized input data and configuration data; and implementing the deserialized configuration data in the new session.
- a method of switching user sessions includes: establishing a first session for a first user, the first session being displayed as a current session under a first user account; receiving configuration data associated with a second user to establish a second user account; storing the configuration data; and authenticating the second user to create a second session associated with the second user account, where authenticating the second user includes: receiving input data; serializing the input data and the configuration data; deserializing the serialized input data and configuration data; and establishing the second session using the deserialized input data and configuration data.
- a method of switching user sessions includes: receiving a set of user accounts, each of which corresponds with an established session; receiving a selection of a user account included in the set of user accounts; receiving input data; retrieving configuration data associated with the user previously stored at the time the selected user account was created; and comparing the input data with the retrieved user configuration data without serializing the input data.
- the input device assistant can be adapted to detect existing input devices as well as continuously monitor any new input device being added.
- a message can be displayed, for example, together with a login window to alert an user when a new input device is detected.
- the device assistant also can be adapted to retrieve the device's description from either the drivers embedded in the device, or from a Uniform Resource Locator (URL) provided by the device.
- URL Uniform Resource Locator
- a method of switching user sessions includes: detecting an attempt to install a device in a computer system; determining if the device had been previously installed in the computer system; if the device had been previously installed, retrieving a device description associated with the previously installed device; and installing the detected device using the retrieved device description.
- a method of switching user sessions includes: detecting a first input device and a second input device; launching an input device assistant to retrieve device description from the first input device; storing the retrieved device description; and if it is determined that the first input device is similar to the second input device, activating the second input device using the stored device description retrieved from the first input device without launching the input device assistant.
- FIG. 1 is a block diagram of an exemplary software architecture for a multi-sessions manager.
- FIG. 2 is a conceptual diagram that illustrates an exemplary user switching process.
- FIG. 3 is a flow diagram of an exemplary user switching process.
- FIG. 4 is a flow diagram of an exemplary keyboard monitoring process.
- FIG. 5 is a block diagram illustrating an exemplary hardware system for supporting multiple sessions.
- a multi-sessions manager is provided to facilitate the management of multiple active user sessions, including multiple active user sessions of an individual or various users.
- a session as described herein generally refers to executions, processes or procedures that a user invokes at a computing device, including but not limited to running applications and/or viewing or modifying files or documents associated with the applications.
- a session can be specific to both the individual user and/or one or more application(s).
- every user of an application can have a separate user session and access to a separate set of user session variables associated with its own session managed by the multi-sessions manager.
- the same application can be executed in one or more new or existing user sessions.
- the multi-sessions manager displays one or more graphical user interfaces for establishing a user account and initiating a user session associated with the established user account.
- the user can retrieve a previously engaged user session by logging onto the associated user account.
- Techniques for initiating or retrieving a user session can include selecting a user account from a listing of the established user accounts (e.g., a drop-down list or a pull-down list). The listing can be invoked in any convenient manner, for example, by keyboard strokes or mouse navigation.
- the multi-sessions manager can provide multiple users with flexibility and efficiency in managing multiple sessions involving different user accounts. For example, through one or more graphical user interfaces, the multi-sessions manager can provide a user with the ability to switch out an active user session and display another active user session associated with another user without compromising the security associated with the user sessions.
- Graphical user interfaces associated with, for example, establishing a user account, initiating a user session, authenticating a user account and switching active sessions are described below by way of example, and are not intended to be limiting.
- FIG. 1 illustrates exemplary software architecture for a multi-sessions manager 100 .
- the multi-sessions manager 100 enables the management of one or more user sessions each of which can be associated with a different user.
- the multi-sessions manager 100 can be integrated as part of an operating system and executed by one or more processors.
- the multi-sessions manager 100 can facilitate fast switching between sessions associated with different users without terminating sessions or suspending any application running in a session. Once a session is established, the established session can be stored for later retrieval by a user.
- the multi-sessions manager 100 includes programming code or instructions (e.g., Java, Objective-C, etc.) for running a graphical user interface, for establishing a new user session or for reconnecting to a prior user session.
- the multi-sessions manager 100 provides a capability to switch from one user session to another user session, and permits any active applications in the former user session to remain active while allowing applications running in the latter user session to be executed simultaneously.
- the multi-sessions manager 100 keeps a list of applications, documents and other files that were previously active prior to the switching, and makes them available when a user logs into their session again.
- the multi-sessions manager 100 can be implemented as one or more software modules or objects as described below.
- the modules can interact to provide multiple active user sessions.
- the multi-sessions manager 100 generally includes an authentication module 102 configured to authenticate and validate an established user account, an initiation module 104 configured to establish a new user account, a switching module 106 adapted to facilitate switching between user accounts and a termination module 108 configured to terminate or log off one or more active sessions.
- the multi-sessions manager 100 may further include one or more additional modules and associated information.
- the multi-sessions manager 100 can incorporate one or more files, databases, services, combinations thereof, or other suitable means for establishing a new session or maintaining an established session associated with a user account.
- a GUI module 110 provides one or more graphical user interfaces for a user to create, access and modify a user account.
- a repository 112 can contain mappings between users, sessions and applications.
- the repository 112 also can contain session information that identify applications associated with a session.
- the session information can be stored in a configuration file, local storage or memory.
- the session information can contain configuration information related to a user account and can be created for the user at the time the user account is created.
- the session information can identify sessions and applications that are associated with a user account.
- the session information can contain information that identifies a session and one or more applications associated with a user account, or an application that is to be started immediately upon creation or initial access of a session.
- the session information can further identify running applications that are currently being executed in the session on behalf of the user.
- authentication and session management are configured by the authentication module 102 , the initiation module 104 and the switching module 106 for authenticating users, establishing user accounts and switching between sessions, respectively. In these implementations, because the authentication process is executed within the authentication module 102 , the manageability and security of multiple user sessions is improved.
- the multi-sessions manager 100 ensures that all data and applications remain secure.
- a user account can be established for a user via a graphical user interface provided by the multi-sessions manager 100 .
- the user can be assigned a user name, a password and other necessary configuration data by the multi-session manager 100 .
- the user can specify a user name, password, short name, password hint and other configuration parameters for the new user account. These data can then be stored in a local disk or the repository 112 .
- the user name or the password can be a string of numeric, alphabetical or alphanumeric characters of sufficient length so as to prevent being deciphered by unauthorized users. Administrative privilege also can be assigned to the new user account if desired. Then, a session is created for and subsequently associated with the new user account.
- configuration information including a user name and password specified by the user for accessing a particular user account during the set up of the user account, is processed based on object serialization and deserialization.
- Object serialization is the process of converting an object to and from an architecture-independent byte stream.
- Basic object serialization only stores the values of the objects and does not record the data type of the objects nor the relationships between the objects. However, in instances where property list serialization is used, values and structure of the objects can be stored and recorded.
- object deserialization is a process of taking and recreating one or more original objects from the serialized data to retrieve user information or session information.
- the authentication process for authenticating a user serializes the user's configuration data, and deserializes it to validate a user's identity prior to granting access to a session.
- user's configuration data are defined as a set of simple objects that can be serialized by the multi-sessions manager preserving only the general category of the objects, such as a dictionary, an array or the like.
- serialization/deserialization techniques are disclosed in a document “Archives and Serializations” published by Apple Computer, Inc., the disclosure of which can be found at http://developer.apple.com/documentation/Cocoa/Conceptual/Archiving/Archiving.pdf, and http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/PropertyLists.pdf, each of which is incorporated herein by reference in its entirety.
- the user switching process requires a user to be authenticated prior to initiating a session.
- the user switching process does not contain some elements that may be necessary in many practical applications.
- the user switching process does not contain elements for generating the graphical user interface adapted to receive users inputs. This additional element and other elements not mentioned will be discussed in the enhanced process below in association with FIG. 3 .
- a user account “Child User” has previously been established with the multi-sessions manager 200 .
- configuration data associated with this account e.g., user name, personal settings and the like
- the user of the user account “Child User” initiates a switching request by invoking, for example, the dialogue screen 216 , to validate his identity.
- the user switching process shown can include any mechanism that verifies the identity of the user to the operating system. A key or password known to the user, or biometric information also can be used to authenticate the user.
- the dialogue screen 216 as demonstrated above can be implemented using markup language-based GUIs.
- a dynamic hypertext markup language HTML
- Dynamic HTML provides a mechanism to include a wide variety of functional as well as non-functional features to dialogue screen 216 .
- Other types of markup languages may be used to define the dialogue screen 216 .
- extensible markup language (XML) or extensible hypertext markup language (XHTML) may be used.
- authentication can be performed including verifying a personal password entered by the user with that stored in a configuration file 210 .
- the user name 202 , the password 204 and the configuration file 210 are respectively converted into object 206 , object 208 and object 212 , and the objects are then serialized using an object serialization scheme by the multi-sessions manager 200 .
- object 212 includes user configuration information or session information.
- Object 212 also can hold one or more objects containing distinct data including, but not be limited to, a user name and a path to a user's picture.
- the password 204 entered by a user can be converted into object 204 , and subsequently merged or combined with object 212 prior to serialization.
- the multi-session manager 200 transmits the serialized objects containing various user configuration information or session information to a window server 214 with a command to create a new user session associated with the user account “Child User”.
- the window server 214 switches out the current user session, and starts a new user session.
- the serialized objects in addition to parameters and settings related to the new user session, are read from the window server 214 .
- the multi-sessions manager 200 deserializes the serialized objects. Generally, when a new user session is created, the serialized object is read from the window server 214 and deserialized. After deserialization, the user configuration information (e.g., password) or session information are confirmed. If the confirmation succeeds, a new user session is initiated, or a previous user session is redisplayed. Otherwise, an error message is returned to the user. That is, prior to granting access to the user associated with the new user session, the multi-sessions manager 200 processes the deserialized objects with an algorithm to verify the identity of the user using the submitted user name 202 and password 204 . If the identity of the user is not confirmed, the user switching process will then return an error code to the user and prompt the input of another user name and/or password. Alternatively, if the identity of the user is confirmed, the new session is displayed to the user.
- the user configuration information e.g., password
- session information e.g., password
- session information e.g
- the following illustrates an exemplary process for authenticating a user account.
- the window server 214 launches a login window application configured to read the serialized information from the window server 214 .
- the login window then submits a request to a security server for the right to login a user, and subsequently passes the serialized information to the security server.
- the security server initiates a security application, and the security application runs one or more plugins.
- One of the plugins deserializes the serialized information, and verifies the user configuration information or session information by querying a directory services.
- the directory services takes the user configuration information and verifies that it matches the one provided when the user account was created.
- the security server grants the login window's request to initiate a new user session via the multi-session manager. Otherwise, the security server notifies the login window with a failure code for generating an error dialog.
- the serialization process discussed above can be bypassed.
- the user can be prompted to re-enter a password that can be authenticated expeditiously with the window server 214 .
- a password that can be authenticated expeditiously with the window server 214 .
- an original password specified by a user at the time a user account was created is converted into a set of numerical representation that is unique to that password such that the original password cannot simply be reconstructed using the numerical representation.
- the received password Upon receiving a password for accessing a previously established session from a user, the received password is independently converted into a set of numerical representation, where it is then compared with the one created for the original password, for example, at the window server 214 . In this manner, the original password does not need to be stored anywhere that can be maliciously retrieved by an unauthorized entity. Password verification can be done expeditiously in the appropriate manner. Other security mechanisms also can be extended to authenticate the user in an expedited manner.
- the multi-sessions manager 200 may transmit the serialized objects to the window server 214 with a command to reinitiate a prior session, and to restore any files that were open or applications that were executed at the end of the user's previous session. That is, once a program or application is initiated, it continues to be active regardless of whether the session has been switched out.
- Settings and configuration data previously established by the user can be retrieved via the serialized objects by the multi-sessions manager 200 and restored to the user prior to displaying the session.
- Such settings and configuration data may include, but not be limited to, user files such as word processing documents, spreadsheets, presentations, media files, and application data such as templates for photo editing applications, instant messaging applications and spell checking dictionaries.
- serialized objects are deserialized prior to verifying the identity of the user, this order can be reversed so that the identity of the user is verified prior to deserializing the serialized objects.
- the state and status of any files or applications associated with a previous user need not be restored, as they can be configured to continue running as background applications invisible to the current user that can be displayed again by simply re-logging (e.g., through authentication) onto the previous user's account.
- the process identified above is implemented with a verification process, it also can be configured so that the user only needs to input a specific password only once, and subsequently can switch into a session without this repetitive step. Similarly, if a password has not been specified, the user can bypass the verification process to expeditiously access a session.
- the multi-session manager 200 also does not store a user's password or read the user's password from an encrypted password file when an access to a previously reestablished user session is requested.
- the serialized objects 206 , 208 and 212 may be serialized by a separate software application. Similarly, a separate software application may be incorporated for implementing the deserialization process for deserializing the serialized objects.
- the serialized objects may physically contain more data than is needed for deserialization. For example, source code serialization has user code mixed in with the code needed to deserialize an object. This user code can be preserved on serialization and passed over to the deserialization process when a user switching process is invoked.
- the user can interact with various applications and programs.
- the user also can execute new applications, continue existing programs or terminate existing services.
- the user can work in various word documents, check emails, browse internet web pages or listen to music files.
- the session can continue in existence, even if the session is switched out. That is, programs and applications continue execution during the time that the session is switched out and yet the user account remains logged on to the operating system.
- FIG. 3 is a flow diagram of a user switching process 300 for switching between sessions. Some of the steps of process 300 can be performed in parallel in multi-threading or multi-processing environments. In some implementations, the steps of process 300 are instructions in a computer-readable medium (e.g., hard drive, memory, buses, waveforms), which, when executed by a processor causes the processor to perform one or more steps of process 300 . The steps of process 300 can be implemented in hardware, software, firmware or any combination thereof. Process 300 may be performed, at least in part, by, for example, the multi-sessions manager 100 running on an operating system. The process 100 begins when a request to create a user account is received ( 302 ). The request can be initiated by a user through an input device (e.g., keyboard strokes or mouse clicks) or programmatically, either directly or through an application programming interface (API) or user graphical interface.
- API application programming interface
- the user establishes a user name and a password associated with the new user account.
- the user may manually specify configuration data associated with the user through one or more of the following: a supplied password field configured to receive inputs to specify a username and password of the new user account; a picture field configured to receive an input to modify a graphical identifier graphically representing the user account; a login items field configured to add or delete one or more applications or documents that automatically launch without user intervention upon access to the user account; and a parental controls field to facilitate monitoring and imposing restricted access of one or more applications for a particular user account.
- At least one user account (e.g., administrator or owner of the operating system) has already been established prior to operation 302 .
- operation 302 can request that the user adding a user account possess appropriate administrative privileges before a new account can be added. Otherwise, an error message can be returned to the user indicating that administrative privilege is required.
- a user's configuration data is securely stored, e.g., as a configuration file, at a local hard disk, or the repository of the multi-sessions manager ( 304 ).
- the user can select to access his own session by enabling the user switching process 300 ( 306 ), and entering input data ( 308 ) for verifying his identity.
- the user's configuration data has already been stored as a configuration file that can be retrieved.
- the user can bypass operations 302 and 304 when accessing a session subsequently.
- the input data, together with the configuration file previously stored, are then converted into one or more objects, and the object(s) is serialized ( 310 ).
- a command is also sent to a window server to create a new session or to initiate a process of switching out the current session ( 312 ).
- the serialized object can then be deserialized to retrieve user information or session information, and the identity of the user is verified ( 314 ). If the identity of the user is confirmed, the new session is displayed to the user. Prior to or after the second session is displayed, if personal settings (e.g., background settings, computing device color preferences, icons and location of those icons, audio settings, font settings and printing preferences) are previously specified, such information can be retrieved from the deserialized object and incorporated into the new session ( 316 ).
- personal settings e.g., background settings, computing device color preferences, icons and location of those icons, audio settings, font settings and printing preferences
- operations 310 , 312 , 314 and 316 may be performed in the order listed, in parallel (e.g., by the same or a different process, substantially or otherwise non-serially), or in reverse order to achieve the same result.
- the process 300 may create and display a new session first, subsequently serialize the received user input data and deserialize the serialized data prior to granting access to the user.
- the process 300 may sequentially verify the user's identity, create and display a new session, and serialize and deserialize input data incorporating the specified settings for the user.
- the process 300 may receive and serialize the user input data and create a new session incorporating the user's personal settings by deserializing the serialized data prior to verifying the identity of the user.
- any of the operations 302 - 316 may be performed by two or more entities rather than by a single entity.
- the initiation module 104 ( FIG. 1 ).
- the first user executes two applications (e.g., internet browser and word processor), and leaves without terminating the first session.
- the second user comes to use the desktop computer, and logs on to the second session without logging off the first user.
- the multi-session manager 100 recognizes that the second user is affiliated with a previously established session, namely the second session. Rather than creating a new session for the second user, if a password has previously been specified, the authentication module 102 prompts the second user for the password so as to verify that the second user has access to the second session.
- the authentication module 102 serializes the received password and other known data previously configured or stored by the second user including querying the information associated with the second user stored, e.g., in the repository 112 . If it is determined that the serialized information is not authentic, the authentication module 102 returns an error message to the second user indicating that the received password is incorrect. Alternatively, if it is determined that the serialized information is authentic, the switching module 106 communicates with, e.g., transmits a command, to a window server to re-associate the second user with the previously established second session, switches out the first session, and displays the desktop environment of the second session.
- the switching module 106 communicates with, e.g., transmits a command, to a window server to re-associate the second user with the previously established second session, switches out the first session, and displays the desktop environment of the second session.
- the state and status of any running application associated with the second session are retrieved, e.g., from the repository 112 , and restored for the second user prior to displaying the second session.
- the state and status of these applications need not be restored or retrieved from the repository 112 , as they are already running as background applications invisible to the previous user that can be displayed again by simply re-logging (e.g., through authentication) onto the associated user account.
- the process identified above is implemented with an authentication procedure, it can be configured so that the user only needs to input a specific password only once, and subsequently can switch into a session without this repetitive step. Similarly, if a password has not been specified, the user can bypass the authentication procedure to expeditiously access a session.
- the internet browser and the word processor executed by the first user during the first session remain active in the background while the first session is switched out.
- the status of these applications remains unchanged, and the first user can continue with these applications at their previous state without a need to restart and restore them.
- the second user can choose to terminate or log off the second session (e.g., via the termination module 108 ).
- the modules described above are implemented as independent memory-resident processes including, but not limited to, UNIXTM processes capable of communicating with each other using inter-process communication facilities such as queues, semaphores, sockets, pipes, shared memory and the like.
- These modules can be programmed using programming languages and techniques such as C, Objective-C, C++ and Java. The number, nature and functionality of the modules described herein could be differently designed, and therefore should not be a limiting factor in construing the multi-sessions manager 100 .
- modules identified above are described as being separate or distinct, one or more of the modules may be combined in a single process or routine.
- the functional description provided herein including separation of responsibility for distinct functions is exemplary. Other groupings or other divisions of functional responsibilities can be made as necessary or in accordance with specific design preferences.
- Input devices such as a keyboard
- a keyboard allow each user to interact with the operating system and its installed applications.
- one user may prefer using a particular input device that may be different from those used by other established users. For example, some users may prefer using US-enhanced keyboards, while other users may prefer using keyboards having a foreign language and/or layout.
- the operating system can automatically launch a keyboard assistant application for detecting the actual type of the new input device to ensure that the new input device can be properly installed.
- the keyboard assistant can be configured to support automatic discovery, zero-configuration and easy installation for a breadth of input device categories from a wide range of vendors.
- the keyboard assistant can be integrated as part of or separated from an operating system or the multi-sessions manager. Information relating to previously installed keyboards (e.g., manufacture ID, device ID, etc.) can be stored locally, and used by the keyboard assistant to guide the user to configure the keyboard for use with the operating system.
- a device assistant can be adapted to detect existing input devices as well as continuously monitor any new input device being added.
- a message can be displayed, for example, together with the login window 316 , to alert an user when a new input device is detected.
- the device assistant may know nothing about the functionality of the new input device.
- the device assistant can be adapted to retrieve the device's description from either the drivers embedded in the device, or from a Uniform Resource Locator (URL) provided by the device. For example, if a device has a URL, then the device assistant can retrieve a driver of the device from this URL, load the driver into the hardware system 100 , and allow the user to control the device and/or view device status.
- URL Uniform Resource Locator
- the device assistant retrieves a description of the detected device including vendor-specific, manufacturer information such as the model name and number, serial number, manufacturer name, URLs to vendor-specific Web sites and the like.
- the device assistant also can retrieve a list of commands or actions the device functions to provide as well as parameters or arguments for responding to each action.
- the detected device may contain other logical devices, functional units, or services.
- the keyboard assistant can be adapted to also retrieve these embedded devices or services.
- the device assistant may assign a name for the new device, and allow the device to advertise its services to each user based on the assigned name. The device may also use that name in subsequent operations.
- a device assistant also can prompt the user to, for example, manually enter configuration information associated with the detected device, or install the necessary software for activating the detected device. Any configuration information entered by the user can be stored so that if a similar input device is subsequently detected, such information can be retrieved to activate this input device.
- a user may want to add a new keyboard having a French layout to the list of existing input devices of a computer system.
- An operating system of the computer system detects that configuration data associated with the new keyboard does not exist, and therefore launches a keyboard assistant to retrieve necessary data from either the user or the new keyboard for activating the new keyboard.
- the user then manually enters description (e.g., product ID, serial number and the like) of the new keyboard based on the configuration data provided by the manufacturer or vendor, and the keyboard assistant installs the new keyboard based on this information.
- the keyboard assistant also stores this data entered by the user at a local storage or database.
- a second new keyboard having a French layout is detected.
- the operating system discovers that this second new keyboard is the same type as that installed previously. Rather than launching the keyboard assistant to retrieve configuration data, the operating system proceeds to activates the second new keyboard using the configuration data previously entered by the user and stored at the local storage.
- FIG. 4 is a flow diagram illustrating an exemplary input device detection process 400 .
- the process 400 begins with monitoring existing input devices and any new input device ( 402 ).
- the process 400 can be configured to monitor for new input devices on a scheduled or continuous basis. If a new input device is detected, the process 400 may first verify to determine if the input device has previously been installed. If it is determined that the input device was previously installed and yet was removed, the process 400 can proceed to retrieve the driver for the detected device from, for example, a local disk (e.g., hard disk, RAM or ROM). Once the driver is loaded to the computer system, and the detected device can be manually controlled, the process 400 restarts from the operation 402 .
- a local disk e.g., hard disk, RAM or ROM
- a device assistant can be launched by the process 400 ( 406 ).
- the device assistant can be configured to retrieve description of the detected device including vendor-specific, manufacturer information such as the model name and number, serial number, manufacturer name, and URLs to vendor-specific Web sites ( 408 ).
- the operation 406 may further include retrieving a list of commands or actions the detected device functions to provide as well as parameters or arguments for responding to each action.
- the new input device is then installed by the device assistant ( 410 ), and the retrieved description of the new input device is subsequently stored ( 412 ) for later retrieval if a similar input device is detected.
- FIG. 5 is a block diagram illustrating a hardware system 500 that supports multiple active user sessions.
- the hardware system 500 shown can be implemented as a computing device including a desktop or portable computer, an electronic device, a telephone, a cellular telephone, a display system, a television, a monitor, a navigation system, a portable music device, a personal digital assistant, a handheld electronic device, an embedded electronic device or appliance or other forms of devices with user interfaces.
- the hardware system 500 can be a standalone computer that can interface with other desktop computers, network computers and servers to access and exchange files or information that is not stored locally.
- the hardware system 500 can include one or more processors 502 (e.g., IBM PowerPC®, Intel® Pentium IV, etc.) for executing program instructions embedded in the processors 502 or other hardware components coupled to the processors through one or more buses 514 .
- the hardware system 500 also can include one or more display devices 504 (e.g., CRT, LCD) that can be part of or separate from the hardware system 500 .
- the hardware system 500 further includes a local storage 506 (e.g., computer hard disk) for storing program instructions, data or both, a network interface 508 (e.g., Ethernet connection), input devices 510 (e.g., keyboard, mouse, touch pad or stylus pen) to allow user input, output devices 512 (e.g., scanner, speaker and printer) to provide information to the user, and one or more computer-readable mediums 516 .
- the computer-readable mediums 516 can be one of a floppy disk or CD-ROM that may be used to transfer computer instructions or data to the processors 502 or other hardware components for execution.
- Each of the hardware components described in the hardware system 500 can exchange communications and data via the bus(es) 514 (e.g., PCI, PCI Express, USB, FireWireTM, NuBUSTM and PDS).
- the keyboard can be a physical QWERTY device, a phone dial pad, a keypad, mouse, jog wheel, joystick, game pad or other input device.
- the keyboard can be a virtual or soft key keyboard displayed on, for example, the display device 504 or other touch screen device.
- the keyboard allows a user to input information with keystrokes which can be translated to electrical or data signals.
- Information provided by the input devices 510 can be in the form of navigational, functional, textual or other input. Navigation information can be directional (e.g., up, down, left, or right).
- the keyboard also can provide other forms of input including functions (e.g., a selection function for selecting an object), text input and the like.
- Information can be provided by the user manipulating the input devices 510 .
- the processor(s) 502 can generate and display information to the display device 512 in response to user interactions received through the input devices 112 .
- the computer-readable medium(s) 516 refers to any medium that participates in providing instructions to the processor(s) 502 for execution, including without limitation, non-volatile media (e.g., optical or magnetic disks), volatile media (e.g., memory) and transmission media.
- Transmission media includes, without limitation, coaxial cables, copper wire and fiber optics. Transmission media can also take the form of acoustic, light or radio frequency waves.
- the computer-readable medium 516 further includes a window server 518 adapted to execute tasks (e.g., serving windows) on behalf of a user (or operating system), an operating system 520 responsible for the direct control and management of hardware and software operations, a network communication module 522 for providing data communication through one or more networks to other data devices that can use electrical, electromagnetic or optical signals, a device assistant 524 adapted to monitor new and existing input devices, a multi-sessions manager 526 configured to provide multiple active window users, including the various task described with respect to FIGS.
- tasks e.g., serving windows
- an operating system 520 responsible for the direct control and management of hardware and software operations
- a network communication module 522 for providing data communication through one or more networks to other data devices that can use electrical, electromagnetic or optical signals
- a device assistant 524 adapted to monitor new and existing input devices
- a multi-sessions manager 526 configured to provide multiple active window users, including the various task described with respect to FIGS.
- configuration files 528 for storing previously connected input device information and information associated with one or more users associated with the hardware system 500 , and a serialization/deserialization module 530 for serializing or deserializing data contained, for example, in the configuration file 528 .
- the operating system 520 can be multi-user, multiprocessing, multitasking, multithreading, real-time and the like.
- the operating system 520 can be, for example, MAC OS® by Apple Computer, Inc. of Cupertino, California, a Microsoft Windows® operating system, Linux, a mobile operating system, control software, and the like.
- a kernel layer (not shown) in operating system 520 can be responsible for general management of system resources and processing time.
- a core layer can provide a set of interfaces, programs and services for use by the kernel layer.
- a user interface layer can include APIs (Application Program Interfaces), services and programs to support user applications.
- the operating system 520 in coordination with multi-sessions manager 526 , displays one or more graphical user interfaces.
- the graphical user interface can display individual items including, for example, an icon, a shortcut, a program launcher, a button, a menu bar, navigation items, a window, selections and the like. Each item can provide access to functionality, applications, configuration of a user account, and data associated with a particular user.
- the operating system 520 can perform basic tasks, including, but not limited to: recognizing input from input devices 510 ; sending output to display devices 504 ; keeping track of files and directories on computer-readable mediums 516 (e.g., memory or a storage device); and managing traffic on the bus 514 .
- basic tasks including, but not limited to: recognizing input from input devices 510 ; sending output to display devices 504 ; keeping track of files and directories on computer-readable mediums 516 (e.g., memory or a storage device); and managing traffic on the bus 514 .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
A method for sharing a common computing system among multiple users is disclosed. A user can perform a login process during which an input data, such as a user name or a password can be entered by the user to access a session. The user name and/or the password are then serialized into an object or a set of objects. If the serialized object or objects are authentic, a session is created and the session properties of the session are defined. Any applications that are subsequently executed during the session remain active after the session is switched out.
Description
- This application is a divisional application of and claims the benefit of priority to U.S. application Ser. No. 11/326,849, filed Jan. 6, 2006.
- This invention relates to a computer system.
- Modern computer operating systems can be configured to support multiple users and to manage multiple user accounts by creating independent user sessions for each user on a single computing system (e.g., a personal computer). A user may simply log off his own session to allow another user to log on without being required to turning off the computer system.
- Prior to allowing a user access to a session, a logon and authentication process is invoked which often includes prompting the user to enter a password that was previously established when the user account for the computer system was created. A conventional logon and authentication process can include prompting the user to enter their password, and retrieving the user's previously encrypted and stored password for comparison. Based on the results of the comparison, the user is provided access to their session.
- The conventional authentication process described above requires that an encrypted password file be retrieved from a storage device and decrypted. Moreover, such a conventional process often requires several secondary applications (e.g., other than the primary logon application) to be invoked to perform the logon and authentication process. This can lead to an inefficient use of memory and processor cycles, and could translate into unnecessary delays in the logon process.
- Systems, methods, computer-readable mediums, user interfaces and other implementations are disclosed for switching multiple user sessions using an object serialization scheme, and providing expedited access to a previously established user session. User configuration data or session information associated with each user can be converted into one or more objects. Each object can hold one or more additional objects containing distinct data including, but not be limited to, a user name and a path to a user's picture. The object can be serialized and transmitted to a window server for switching out a current user session and initiates a new user session. As the new user session initializes, the serialized objects, in addition to parameters and settings related to the new user session, can be read from the window server. As the new user session is created, the serialized object is deserialized such that after deserialization, the user configuration information or session information are confirmed. If the confirmation succeeds, the initiation of the new user session proceeds. Otherwise, an error message is returned to the user.
- In some implementations, a method of switching user sessions includes: retrieving user configuration data; receiving user input data; serializing the input data and the configuration data; deserializing the serialized input data and configuration data; and establishing a session based on the deserialized data.
- In some implementations, a method of switching user sessions includes: receiving configuration data associated with a user to establish a user account; storing the configuration data; and authenticating the user to create a new session associated with the user account, where authenticating the user includes: receiving input data; serializing the input data and the configuration data; deserializing the serialized input data and configuration data; initiating the new session using the deserialized input data and configuration data; and implementing the deserialized configuration data in the new session.
- In some implementations, a method of switching user sessions includes: establishing a first session for a first user, the first session being displayed as a current session under a first user account; receiving configuration data associated with a second user to establish a second user account; storing the configuration data; and authenticating the second user to create a second session associated with the second user account, where authenticating the second user includes: receiving input data; serializing the input data and the configuration data; deserializing the serialized input data and configuration data; and establishing the second session using the deserialized input data and configuration data.
- In some implementations, a method of switching user sessions includes: receiving a set of user accounts, each of which corresponds with an established session; receiving a selection of a user account included in the set of user accounts; receiving input data; retrieving configuration data associated with the user previously stored at the time the selected user account was created; and comparing the input data with the retrieved user configuration data without serializing the input data.
- Systems, methods, computer-readable mediums, user interfaces and other implementations also are disclosed for detecting an input device using an input device assistant. The input device assistant can be adapted to detect existing input devices as well as continuously monitor any new input device being added. A message can be displayed, for example, together with a login window to alert an user when a new input device is detected. The device assistant also can be adapted to retrieve the device's description from either the drivers embedded in the device, or from a Uniform Resource Locator (URL) provided by the device.
- In some implementations, a method of switching user sessions includes: detecting an attempt to install a device in a computer system; determining if the device had been previously installed in the computer system; if the device had been previously installed, retrieving a device description associated with the previously installed device; and installing the detected device using the retrieved device description.
- In some implementations, a method of switching user sessions includes: detecting a first input device and a second input device; launching an input device assistant to retrieve device description from the first input device; storing the retrieved device description; and if it is determined that the first input device is similar to the second input device, activating the second input device using the stored device description retrieved from the first input device without launching the input device assistant.
- The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.
- The accompanying drawings, which are incorporated into and form a part of the specification, illustrate several aspects and implementations of the present invention and, together with the general description given above and detailed description given below, serve to explain the principles of the present invention. The drawings are only for the purpose of illustrating preferred implementations of the present invention, and are not to be construed as limiting the present invention. In the drawings:
-
FIG. 1 is a block diagram of an exemplary software architecture for a multi-sessions manager. -
FIG. 2 is a conceptual diagram that illustrates an exemplary user switching process. -
FIG. 3 is a flow diagram of an exemplary user switching process. -
FIG. 4 is a flow diagram of an exemplary keyboard monitoring process. -
FIG. 5 is a block diagram illustrating an exemplary hardware system for supporting multiple sessions. - Like reference symbols in the various drawings indicate like elements.
- In the following description, various implementations of the present invention will be described. However, it will be apparent to those skilled in the art that the implementations may be practiced with only some or all aspects of the invention. For purposes of explanation, specific numbers and configurations are set forth in order to provide a thorough understanding of the implementations. However, it will also be apparent to one skilled in the art that the implementations may be practiced without the specific details.
- Systems, methods, computer program products, computer programs, media and means for switching an active user session associated with an established user account to another active user session associated with another established user account will be described. In some implementations, a multi-sessions manager is provided to facilitate the management of multiple active user sessions, including multiple active user sessions of an individual or various users.
- A session as described herein generally refers to executions, processes or procedures that a user invokes at a computing device, including but not limited to running applications and/or viewing or modifying files or documents associated with the applications. A session can be specific to both the individual user and/or one or more application(s). In some instances, every user of an application can have a separate user session and access to a separate set of user session variables associated with its own session managed by the multi-sessions manager. In other instances, the same application can be executed in one or more new or existing user sessions.
- In some implementations, the multi-sessions manager displays one or more graphical user interfaces for establishing a user account and initiating a user session associated with the established user account. The user can retrieve a previously engaged user session by logging onto the associated user account. Techniques for initiating or retrieving a user session can include selecting a user account from a listing of the established user accounts (e.g., a drop-down list or a pull-down list). The listing can be invoked in any convenient manner, for example, by keyboard strokes or mouse navigation. Once a user session is engaged, the user can launch software applications, review and edit documents, etc.
- In some implementations, the multi-sessions manager can provide multiple users with flexibility and efficiency in managing multiple sessions involving different user accounts. For example, through one or more graphical user interfaces, the multi-sessions manager can provide a user with the ability to switch out an active user session and display another active user session associated with another user without compromising the security associated with the user sessions.
- Graphical user interfaces associated with, for example, establishing a user account, initiating a user session, authenticating a user account and switching active sessions are described below by way of example, and are not intended to be limiting.
-
FIG. 1 illustrates exemplary software architecture for amulti-sessions manager 100. Themulti-sessions manager 100 enables the management of one or more user sessions each of which can be associated with a different user. Themulti-sessions manager 100 can be integrated as part of an operating system and executed by one or more processors. Themulti-sessions manager 100 can facilitate fast switching between sessions associated with different users without terminating sessions or suspending any application running in a session. Once a session is established, the established session can be stored for later retrieval by a user. - In some implementations, the
multi-sessions manager 100 includes programming code or instructions (e.g., Java, Objective-C, etc.) for running a graphical user interface, for establishing a new user session or for reconnecting to a prior user session. Themulti-sessions manager 100 provides a capability to switch from one user session to another user session, and permits any active applications in the former user session to remain active while allowing applications running in the latter user session to be executed simultaneously. Themulti-sessions manager 100 keeps a list of applications, documents and other files that were previously active prior to the switching, and makes them available when a user logs into their session again. - In some implementations, the
multi-sessions manager 100 can be implemented as one or more software modules or objects as described below. The modules can interact to provide multiple active user sessions. - The
multi-sessions manager 100 generally includes anauthentication module 102 configured to authenticate and validate an established user account, aninitiation module 104 configured to establish a new user account, aswitching module 106 adapted to facilitate switching between user accounts and atermination module 108 configured to terminate or log off one or more active sessions. Themulti-sessions manager 100 may further include one or more additional modules and associated information. By way of illustration and without limitation, themulti-sessions manager 100 can incorporate one or more files, databases, services, combinations thereof, or other suitable means for establishing a new session or maintaining an established session associated with a user account. In some implementations, aGUI module 110 provides one or more graphical user interfaces for a user to create, access and modify a user account. - A
repository 112 can contain mappings between users, sessions and applications. In some implementations, therepository 112 also can contain session information that identify applications associated with a session. For example, the session information can be stored in a configuration file, local storage or memory. The session information can contain configuration information related to a user account and can be created for the user at the time the user account is created. The session information can identify sessions and applications that are associated with a user account. For example, the session information can contain information that identifies a session and one or more applications associated with a user account, or an application that is to be started immediately upon creation or initial access of a session. The session information can further identify running applications that are currently being executed in the session on behalf of the user. - In some implementations, authentication and session management are configured by the
authentication module 102, theinitiation module 104 and theswitching module 106 for authenticating users, establishing user accounts and switching between sessions, respectively. In these implementations, because the authentication process is executed within theauthentication module 102, the manageability and security of multiple user sessions is improved. - In the implementations described above, after a user account is authenticated and the user's session associated with the authenticated user account is located, other user accounts and sessions remain active in the background with their applications still running and documents open. While any user account is switched out, the
multi-sessions manager 100 ensures that all data and applications remain secure. - A user account can be established for a user via a graphical user interface provided by the
multi-sessions manager 100. For example, in one implementation, to establish a user account, the user can be assigned a user name, a password and other necessary configuration data by themulti-session manager 100. Alternatively, the user can specify a user name, password, short name, password hint and other configuration parameters for the new user account. These data can then be stored in a local disk or therepository 112. The user name or the password can be a string of numeric, alphabetical or alphanumeric characters of sufficient length so as to prevent being deciphered by unauthorized users. Administrative privilege also can be assigned to the new user account if desired. Then, a session is created for and subsequently associated with the new user account. - In some implementations, configuration information, including a user name and password specified by the user for accessing a particular user account during the set up of the user account, is processed based on object serialization and deserialization.
- Object serialization is the process of converting an object to and from an architecture-independent byte stream. Basic object serialization only stores the values of the objects and does not record the data type of the objects nor the relationships between the objects. However, in instances where property list serialization is used, values and structure of the objects can be stored and recorded.
- Likewise, object deserialization is a process of taking and recreating one or more original objects from the serialized data to retrieve user information or session information. As will be discussed in
FIG. 2 , the authentication process for authenticating a user serializes the user's configuration data, and deserializes it to validate a user's identity prior to granting access to a session. - In some implementations, user's configuration data are defined as a set of simple objects that can be serialized by the multi-sessions manager preserving only the general category of the objects, such as a dictionary, an array or the like.
- Further details regarding the serialization/deserialization techniques are disclosed in a document “Archives and Serializations” published by Apple Computer, Inc., the disclosure of which can be found at http://developer.apple.com/documentation/Cocoa/Conceptual/Archiving/Archiving.pdf, and http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/PropertyLists.pdf, each of which is incorporated herein by reference in its entirety.
- Referring now to
FIG. 2 , an exemplary user switching process for switching between sessions is shown. The user switching process requires a user to be authenticated prior to initiating a session. For the purpose of simplicity, the user switching process does not contain some elements that may be necessary in many practical applications. For example, the user switching process does not contain elements for generating the graphical user interface adapted to receive users inputs. This additional element and other elements not mentioned will be discussed in the enhanced process below in association withFIG. 3 . - For the discussion of the user switching process, we assume that a user account “Child User” has previously been established with the
multi-sessions manager 200. At the time the user account “Child User” was created, configuration data associated with this account (e.g., user name, personal settings and the like) have been specified (e.g., manually) by the user and securely stored, e.g., as aconfiguration file 210, by themulti-sessions manager 200. Subsequently, the user of the user account “Child User” initiates a switching request by invoking, for example, thedialogue screen 216, to validate his identity. The user switching process shown can include any mechanism that verifies the identity of the user to the operating system. A key or password known to the user, or biometric information also can be used to authenticate the user. - In some implementations, the
dialogue screen 216 as demonstrated above can be implemented using markup language-based GUIs. For example, a dynamic hypertext markup language (HTML) can be used to generate thedialogue screen 216. Dynamic HTML provides a mechanism to include a wide variety of functional as well as non-functional features todialogue screen 216. Other types of markup languages may be used to define thedialogue screen 216. For example, extensible markup language (XML) or extensible hypertext markup language (XHTML) may be used. - Detecting that the user has activated the user switching process, authentication can be performed including verifying a personal password entered by the user with that stored in a
configuration file 210. Upon receipt of the password from the user, theuser name 202, thepassword 204 and theconfiguration file 210 are respectively converted intoobject 206,object 208 andobject 212, and the objects are then serialized using an object serialization scheme by themulti-sessions manager 200. - In some implementations,
object 212 includes user configuration information or session information. Object 212 also can hold one or more objects containing distinct data including, but not be limited to, a user name and a path to a user's picture. For example, thepassword 204 entered by a user can be converted intoobject 204, and subsequently merged or combined withobject 212 prior to serialization. - After the objects are serialized, the
multi-session manager 200 transmits the serialized objects containing various user configuration information or session information to awindow server 214 with a command to create a new user session associated with the user account “Child User”. Upon receipt, thewindow server 214 switches out the current user session, and starts a new user session. As the new user session initializes, the serialized objects, in addition to parameters and settings related to the new user session, are read from thewindow server 214. - Next, the
multi-sessions manager 200 deserializes the serialized objects. Generally, when a new user session is created, the serialized object is read from thewindow server 214 and deserialized. After deserialization, the user configuration information (e.g., password) or session information are confirmed. If the confirmation succeeds, a new user session is initiated, or a previous user session is redisplayed. Otherwise, an error message is returned to the user. That is, prior to granting access to the user associated with the new user session, themulti-sessions manager 200 processes the deserialized objects with an algorithm to verify the identity of the user using the submitteduser name 202 andpassword 204. If the identity of the user is not confirmed, the user switching process will then return an error code to the user and prompt the input of another user name and/or password. Alternatively, if the identity of the user is confirmed, the new session is displayed to the user. - The following illustrates an exemplary process for authenticating a user account. After the user configuration information or session information entered by a user is serialized and transmitted to the
window server 214, thewindow server 214 launches a login window application configured to read the serialized information from thewindow server 214. The login window then submits a request to a security server for the right to login a user, and subsequently passes the serialized information to the security server. The security server initiates a security application, and the security application runs one or more plugins. One of the plugins deserializes the serialized information, and verifies the user configuration information or session information by querying a directory services. The directory services takes the user configuration information and verifies that it matches the one provided when the user account was created. Once confirmed, the security server grants the login window's request to initiate a new user session via the multi-session manager. Otherwise, the security server notifies the login window with a failure code for generating an error dialog. - In some implementations, if a user only needs to access a previously established user session, rather than creating a new user session, the serialization process discussed above can be bypassed. In these implementations, the user can be prompted to re-enter a password that can be authenticated expeditiously with the
window server 214. For example, using a one way conversion scheme, an original password specified by a user at the time a user account was created is converted into a set of numerical representation that is unique to that password such that the original password cannot simply be reconstructed using the numerical representation. Upon receiving a password for accessing a previously established session from a user, the received password is independently converted into a set of numerical representation, where it is then compared with the one created for the original password, for example, at thewindow server 214. In this manner, the original password does not need to be stored anywhere that can be maliciously retrieved by an unauthorized entity. Password verification can be done expeditiously in the appropriate manner. Other security mechanisms also can be extended to authenticate the user in an expedited manner. - In some implementations, the
multi-sessions manager 200 may transmit the serialized objects to thewindow server 214 with a command to reinitiate a prior session, and to restore any files that were open or applications that were executed at the end of the user's previous session. That is, once a program or application is initiated, it continues to be active regardless of whether the session has been switched out. Settings and configuration data previously established by the user can be retrieved via the serialized objects by themulti-sessions manager 200 and restored to the user prior to displaying the session. Such settings and configuration data may include, but not be limited to, user files such as word processing documents, spreadsheets, presentations, media files, and application data such as templates for photo editing applications, instant messaging applications and spell checking dictionaries. - Though the objects identified above are described as being separate or distinct, one or more of the objects may be combined as a single object. The functional description provided herein including separation of responsibility for distinct functions is exemplary. Other groupings or other divisions of functional responsibilities can be made as necessary or in accordance with specific design preferences.
- Though it has been shown that the serialized objects are deserialized prior to verifying the identity of the user, this order can be reversed so that the identity of the user is verified prior to deserializing the serialized objects.
- In some implementations, the state and status of any files or applications associated with a previous user need not be restored, as they can be configured to continue running as background applications invisible to the current user that can be displayed again by simply re-logging (e.g., through authentication) onto the previous user's account.
- Though the process identified above is implemented with a verification process, it also can be configured so that the user only needs to input a specific password only once, and subsequently can switch into a session without this repetitive step. Similarly, if a password has not been specified, the user can bypass the verification process to expeditiously access a session.
- Unlike conventional systems where user's specified password is encrypted and stored for granting future access, in these implementations, encryption scheme for encrypting user's password is not required. The
multi-session manager 200 also does not store a user's password or read the user's password from an encrypted password file when an access to a previously reestablished user session is requested. - In some implementations, the serialized
objects - Inside a session, the user can interact with various applications and programs. The user also can execute new applications, continue existing programs or terminate existing services. For example, the user can work in various word documents, check emails, browse internet web pages or listen to music files. While the user is logged on, the session can continue in existence, even if the session is switched out. That is, programs and applications continue execution during the time that the session is switched out and yet the user account remains logged on to the operating system.
-
FIG. 3 is a flow diagram of auser switching process 300 for switching between sessions. Some of the steps ofprocess 300 can be performed in parallel in multi-threading or multi-processing environments. In some implementations, the steps ofprocess 300 are instructions in a computer-readable medium (e.g., hard drive, memory, buses, waveforms), which, when executed by a processor causes the processor to perform one or more steps ofprocess 300. The steps ofprocess 300 can be implemented in hardware, software, firmware or any combination thereof.Process 300 may be performed, at least in part, by, for example, themulti-sessions manager 100 running on an operating system. Theprocess 100 begins when a request to create a user account is received (302). The request can be initiated by a user through an input device (e.g., keyboard strokes or mouse clicks) or programmatically, either directly or through an application programming interface (API) or user graphical interface. - In some implementations, the user establishes a user name and a password associated with the new user account. In other implementations, the user may manually specify configuration data associated with the user through one or more of the following: a supplied password field configured to receive inputs to specify a username and password of the new user account; a picture field configured to receive an input to modify a graphical identifier graphically representing the user account; a login items field configured to add or delete one or more applications or documents that automatically launch without user intervention upon access to the user account; and a parental controls field to facilitate monitoring and imposing restricted access of one or more applications for a particular user account.
- In some implementations, at least one user account (e.g., administrator or owner of the operating system) has already been established prior to operation 302. In other implementations, operation 302 can request that the user adding a user account possess appropriate administrative privileges before a new account can be added. Otherwise, an error message can be returned to the user indicating that administrative privilege is required.
- Once a new user account has been created, a user's configuration data is securely stored, e.g., as a configuration file, at a local hard disk, or the repository of the multi-sessions manager (304). The user can select to access his own session by enabling the user switching process 300 (306), and entering input data (308) for verifying his identity. In some implementations, the user's configuration data has already been stored as a configuration file that can be retrieved. In such an implementation, once a user accounted is created, the user can bypass operations 302 and 304 when accessing a session subsequently. The input data, together with the configuration file previously stored, are then converted into one or more objects, and the object(s) is serialized (310). A command is also sent to a window server to create a new session or to initiate a process of switching out the current session (312). The serialized object can then be deserialized to retrieve user information or session information, and the identity of the user is verified (314). If the identity of the user is confirmed, the new session is displayed to the user. Prior to or after the second session is displayed, if personal settings (e.g., background settings, computing device color preferences, icons and location of those icons, audio settings, font settings and printing preferences) are previously specified, such information can be retrieved from the deserialized object and incorporated into the new session (316).
- In some implementations,
operations process 300 may create and display a new session first, subsequently serialize the received user input data and deserialize the serialized data prior to granting access to the user. As another example, after receiving the user input data, theprocess 300 may sequentially verify the user's identity, create and display a new session, and serialize and deserialize input data incorporating the specified settings for the user. As yet another example, theprocess 300 may receive and serialize the user input data and create a new session incorporating the user's personal settings by deserializing the serialized data prior to verifying the identity of the user. - In other implementations, if the user only wants to reconnect to a previously established session, the user can bypass operations 302 and 304. In yet other implementations, if the user is a guest, the user can forego
operation - To illustrate the foregoing implementations, suppose that two users (namely, a first user and a second user) and two respective sessions (namely, a first session and a second session) have been established by the initiation module 104 (
FIG. 1 ). The first user executes two applications (e.g., internet browser and word processor), and leaves without terminating the first session. The second user comes to use the desktop computer, and logs on to the second session without logging off the first user. Themulti-session manager 100 recognizes that the second user is affiliated with a previously established session, namely the second session. Rather than creating a new session for the second user, if a password has previously been specified, theauthentication module 102 prompts the second user for the password so as to verify that the second user has access to the second session. - In response to the received password, the
authentication module 102 serializes the received password and other known data previously configured or stored by the second user including querying the information associated with the second user stored, e.g., in therepository 112. If it is determined that the serialized information is not authentic, theauthentication module 102 returns an error message to the second user indicating that the received password is incorrect. Alternatively, if it is determined that the serialized information is authentic, theswitching module 106 communicates with, e.g., transmits a command, to a window server to re-associate the second user with the previously established second session, switches out the first session, and displays the desktop environment of the second session. - In some implementations, the state and status of any running application associated with the second session are retrieved, e.g., from the
repository 112, and restored for the second user prior to displaying the second session. In other implementations, the state and status of these applications need not be restored or retrieved from therepository 112, as they are already running as background applications invisible to the previous user that can be displayed again by simply re-logging (e.g., through authentication) onto the associated user account. - Though the process identified above is implemented with an authentication procedure, it can be configured so that the user only needs to input a specific password only once, and subsequently can switch into a session without this repetitive step. Similarly, if a password has not been specified, the user can bypass the authentication procedure to expeditiously access a session.
- Meanwhile, the internet browser and the word processor executed by the first user during the first session remain active in the background while the first session is switched out. Thus, when the first user comes back to log on to the first session, the status of these applications remains unchanged, and the first user can continue with these applications at their previous state without a need to restart and restore them.
- Once the second user completes the second session, the second user can choose to terminate or log off the second session (e.g., via the termination module 108).
- To simplify the description of hosting multiple user sessions, only two users have been illustrated. However, the exemplary process described above can easily be extended to accommodate additional users and/or sessions.
- In some implementations, the modules described above are implemented as independent memory-resident processes including, but not limited to, UNIX™ processes capable of communicating with each other using inter-process communication facilities such as queues, semaphores, sockets, pipes, shared memory and the like. These modules can be programmed using programming languages and techniques such as C, Objective-C, C++ and Java. The number, nature and functionality of the modules described herein could be differently designed, and therefore should not be a limiting factor in construing the
multi-sessions manager 100. - Furthermore, though the modules identified above are described as being separate or distinct, one or more of the modules may be combined in a single process or routine. The functional description provided herein including separation of responsibility for distinct functions is exemplary. Other groupings or other divisions of functional responsibilities can be made as necessary or in accordance with specific design preferences.
- Input devices, such as a keyboard, allow each user to interact with the operating system and its installed applications. Among multiple user accounts sharing the same computer system, one user may prefer using a particular input device that may be different from those used by other established users. For example, some users may prefer using US-enhanced keyboards, while other users may prefer using keyboards having a foreign language and/or layout.
- Accordingly, in some implementations, using a keyboard as an exemplary input device, the operating system can automatically launch a keyboard assistant application for detecting the actual type of the new input device to ensure that the new input device can be properly installed. The keyboard assistant can be configured to support automatic discovery, zero-configuration and easy installation for a breadth of input device categories from a wide range of vendors. The keyboard assistant can be integrated as part of or separated from an operating system or the multi-sessions manager. Information relating to previously installed keyboards (e.g., manufacture ID, device ID, etc.) can be stored locally, and used by the keyboard assistant to guide the user to configure the keyboard for use with the operating system.
- In some implementations, a device assistant can be adapted to detect existing input devices as well as continuously monitor any new input device being added. A message can be displayed, for example, together with the
login window 316, to alert an user when a new input device is detected. - When the device assistant has discovered a new input device, the device assistant may know nothing about the functionality of the new input device. For the device assistant to learn about the input device and its capabilities, or to interact with the new device, the device assistant can be adapted to retrieve the device's description from either the drivers embedded in the device, or from a Uniform Resource Locator (URL) provided by the device. For example, if a device has a URL, then the device assistant can retrieve a driver of the device from this URL, load the driver into the
hardware system 100, and allow the user to control the device and/or view device status. - In some implementations, the device assistant retrieves a description of the detected device including vendor-specific, manufacturer information such as the model name and number, serial number, manufacturer name, URLs to vendor-specific Web sites and the like. The device assistant also can retrieve a list of commands or actions the device functions to provide as well as parameters or arguments for responding to each action.
- The detected device may contain other logical devices, functional units, or services. Thus, in some implementations, the keyboard assistant can be adapted to also retrieve these embedded devices or services.
- Once the input device is added to the
hardware system 100 using the retrieved description, the device assistant may assign a name for the new device, and allow the device to advertise its services to each user based on the assigned name. The device may also use that name in subsequent operations. - In some implementations, a device assistant also can prompt the user to, for example, manually enter configuration information associated with the detected device, or install the necessary software for activating the detected device. Any configuration information entered by the user can be stored so that if a similar input device is subsequently detected, such information can be retrieved to activate this input device.
- For example, a user may want to add a new keyboard having a French layout to the list of existing input devices of a computer system. An operating system of the computer system detects that configuration data associated with the new keyboard does not exist, and therefore launches a keyboard assistant to retrieve necessary data from either the user or the new keyboard for activating the new keyboard. The user then manually enters description (e.g., product ID, serial number and the like) of the new keyboard based on the configuration data provided by the manufacturer or vendor, and the keyboard assistant installs the new keyboard based on this information. The keyboard assistant also stores this data entered by the user at a local storage or database. Subsequently, a second new keyboard having a French layout is detected. The operating system discovers that this second new keyboard is the same type as that installed previously. Rather than launching the keyboard assistant to retrieve configuration data, the operating system proceeds to activates the second new keyboard using the configuration data previously entered by the user and stored at the local storage.
-
FIG. 4 is a flow diagram illustrating an exemplary inputdevice detection process 400. Referring toFIG. 4 , theprocess 400 begins with monitoring existing input devices and any new input device (402). Theprocess 400 can be configured to monitor for new input devices on a scheduled or continuous basis. If a new input device is detected, theprocess 400 may first verify to determine if the input device has previously been installed. If it is determined that the input device was previously installed and yet was removed, theprocess 400 can proceed to retrieve the driver for the detected device from, for example, a local disk (e.g., hard disk, RAM or ROM). Once the driver is loaded to the computer system, and the detected device can be manually controlled, theprocess 400 restarts from theoperation 402. - Alternatively, if it is determined that the detected device has never been installed, a device assistant can be launched by the process 400 (406). The device assistant can be configured to retrieve description of the detected device including vendor-specific, manufacturer information such as the model name and number, serial number, manufacturer name, and URLs to vendor-specific Web sites (408). The
operation 406 may further include retrieving a list of commands or actions the detected device functions to provide as well as parameters or arguments for responding to each action. - The new input device is then installed by the device assistant (410), and the retrieved description of the new input device is subsequently stored (412) for later retrieval if a similar input device is detected.
-
FIG. 5 is a block diagram illustrating ahardware system 500 that supports multiple active user sessions. Thehardware system 500 shown can be implemented as a computing device including a desktop or portable computer, an electronic device, a telephone, a cellular telephone, a display system, a television, a monitor, a navigation system, a portable music device, a personal digital assistant, a handheld electronic device, an embedded electronic device or appliance or other forms of devices with user interfaces. Thehardware system 500 can be a standalone computer that can interface with other desktop computers, network computers and servers to access and exchange files or information that is not stored locally. - The
hardware system 500 can include one or more processors 502 (e.g., IBM PowerPC®, Intel® Pentium IV, etc.) for executing program instructions embedded in theprocessors 502 or other hardware components coupled to the processors through one ormore buses 514. Thehardware system 500 also can include one or more display devices 504 (e.g., CRT, LCD) that can be part of or separate from thehardware system 500. Thehardware system 500 further includes a local storage 506 (e.g., computer hard disk) for storing program instructions, data or both, a network interface 508 (e.g., Ethernet connection), input devices 510 (e.g., keyboard, mouse, touch pad or stylus pen) to allow user input, output devices 512 (e.g., scanner, speaker and printer) to provide information to the user, and one or more computer-readable mediums 516. The computer-readable mediums 516 can be one of a floppy disk or CD-ROM that may be used to transfer computer instructions or data to theprocessors 502 or other hardware components for execution. Each of the hardware components described in thehardware system 500 can exchange communications and data via the bus(es) 514 (e.g., PCI, PCI Express, USB, FireWire™, NuBUS™ and PDS). - In some implementations, if a keyboard is used as one of the input devices, the keyboard can be a physical QWERTY device, a phone dial pad, a keypad, mouse, jog wheel, joystick, game pad or other input device. In other implementations, the keyboard can be a virtual or soft key keyboard displayed on, for example, the
display device 504 or other touch screen device. In some implementations, the keyboard allows a user to input information with keystrokes which can be translated to electrical or data signals. Information provided by theinput devices 510 can be in the form of navigational, functional, textual or other input. Navigation information can be directional (e.g., up, down, left, or right). The keyboard also can provide other forms of input including functions (e.g., a selection function for selecting an object), text input and the like. Information can be provided by the user manipulating theinput devices 510. In some implementations, the processor(s) 502 can generate and display information to thedisplay device 512 in response to user interactions received through theinput devices 112. - In some implementations, the computer-readable medium(s) 516 refers to any medium that participates in providing instructions to the processor(s) 502 for execution, including without limitation, non-volatile media (e.g., optical or magnetic disks), volatile media (e.g., memory) and transmission media. Transmission media includes, without limitation, coaxial cables, copper wire and fiber optics. Transmission media can also take the form of acoustic, light or radio frequency waves.
- The computer-
readable medium 516 further includes awindow server 518 adapted to execute tasks (e.g., serving windows) on behalf of a user (or operating system), anoperating system 520 responsible for the direct control and management of hardware and software operations, anetwork communication module 522 for providing data communication through one or more networks to other data devices that can use electrical, electromagnetic or optical signals, adevice assistant 524 adapted to monitor new and existing input devices, amulti-sessions manager 526 configured to provide multiple active window users, including the various task described with respect toFIGS. 2-4 , configuration files 528 for storing previously connected input device information and information associated with one or more users associated with thehardware system 500, and a serialization/deserialization module 530 for serializing or deserializing data contained, for example, in the configuration file 528. - The
operating system 520 can be multi-user, multiprocessing, multitasking, multithreading, real-time and the like. Theoperating system 520 can be, for example, MAC OS® by Apple Computer, Inc. of Cupertino, California, a Microsoft Windows® operating system, Linux, a mobile operating system, control software, and the like. More generally, a kernel layer (not shown) inoperating system 520 can be responsible for general management of system resources and processing time. A core layer can provide a set of interfaces, programs and services for use by the kernel layer. A user interface layer can include APIs (Application Program Interfaces), services and programs to support user applications. - In some implementations, the
operating system 520, in coordination withmulti-sessions manager 526, displays one or more graphical user interfaces. The graphical user interface can display individual items including, for example, an icon, a shortcut, a program launcher, a button, a menu bar, navigation items, a window, selections and the like. Each item can provide access to functionality, applications, configuration of a user account, and data associated with a particular user. - Generally, the
operating system 520 can perform basic tasks, including, but not limited to: recognizing input frominput devices 510; sending output to displaydevices 504; keeping track of files and directories on computer-readable mediums 516 (e.g., memory or a storage device); and managing traffic on thebus 514. - Various modifications may be made to the disclosed implementations and still be within the scope of the following claims.
Claims (4)
1. A method of switching user sessions, the method comprising:
receiving a set of user accounts, each of which corresponds with an established session;
receiving a selection of a user account included in the set of user accounts;
receiving input data;
retrieving configuration data associated with the user previously stored at the time the selected user account was created; and
comparing the input data with the retrieved user configuration data without serializing the input data.
2. The method of claim 1 , further comprising.
initiating a session associated with the user of the selected user account; and
displaying the session to the user of the selected user account.
3. A computer-readable medium having instructions stored thereon, which, when executed by a processor in a computer system, causes the processor to perform the operations of:
storing information associated with a first user and a second user;
creating a first user session for the first user, and a second user session for the second user;
displaying the first user session;
receiving a request to authenticate the second user; and
switching out the first session to display the second session.
4. A session switching system, comprising:
an initiation module configured to create and initiate a user session;
an authentication module configured to verify identify of each user when a session is accessed; and
a switching module configured to switch out or into a user session from another user session.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/496,500 US20090300190A1 (en) | 2006-01-06 | 2009-07-01 | Data Serialization In A User Switching Environment |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/326,849 US8732284B2 (en) | 2006-01-06 | 2006-01-06 | Data serialization in a user switching environment |
US12/496,500 US20090300190A1 (en) | 2006-01-06 | 2009-07-01 | Data Serialization In A User Switching Environment |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/326,849 Division US8732284B2 (en) | 2006-01-06 | 2006-01-06 | Data serialization in a user switching environment |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090300190A1 true US20090300190A1 (en) | 2009-12-03 |
Family
ID=38234003
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/326,849 Active 2029-02-24 US8732284B2 (en) | 2006-01-06 | 2006-01-06 | Data serialization in a user switching environment |
US12/496,500 Abandoned US20090300190A1 (en) | 2006-01-06 | 2009-07-01 | Data Serialization In A User Switching Environment |
US12/496,501 Abandoned US20090300225A1 (en) | 2006-01-06 | 2009-07-01 | Data Serialization In A User Switching Environment |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/326,849 Active 2029-02-24 US8732284B2 (en) | 2006-01-06 | 2006-01-06 | Data serialization in a user switching environment |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/496,501 Abandoned US20090300225A1 (en) | 2006-01-06 | 2009-07-01 | Data Serialization In A User Switching Environment |
Country Status (1)
Country | Link |
---|---|
US (3) | US8732284B2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090013403A1 (en) * | 2007-07-06 | 2009-01-08 | Kyocera Mita Corporation | Authentication apparatus, authentication method, and computer-readable recording medium storing authentication program |
US20090320125A1 (en) * | 2008-05-08 | 2009-12-24 | Eastman Chemical Company | Systems, methods, and computer readable media for computer security |
US8845337B1 (en) | 2011-06-22 | 2014-09-30 | Amazon Technologies, Inc. | Sharing demonstration information by a network connected demonstration device and system |
US8905763B1 (en) * | 2011-06-22 | 2014-12-09 | Amazon Technologies, Inc. | Managing demonstration sessions by a network connected demonstration device and system |
US9542536B2 (en) | 2012-01-13 | 2017-01-10 | Microsoft Technology Licensing, Llc | Sustained data protection |
US10175750B1 (en) * | 2012-09-21 | 2019-01-08 | Amazon Technologies, Inc. | Projected workspace |
US10922024B1 (en) * | 2019-06-28 | 2021-02-16 | Amazon Technologies, Inc. | Self-protection against serialization incompatibilities |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9544396B2 (en) | 2011-02-23 | 2017-01-10 | Lookout, Inc. | Remote application installation and control for a mobile device |
US9153194B2 (en) * | 2011-03-30 | 2015-10-06 | Elwha Llc | Presentation format selection based at least on device transfer determination |
US8863275B2 (en) | 2011-03-30 | 2014-10-14 | Elwha Llc | Access restriction in response to determining device transfer |
US8726367B2 (en) | 2011-03-30 | 2014-05-13 | Elwha Llc | Highlighting in response to determining device transfer |
US8745725B2 (en) | 2011-03-30 | 2014-06-03 | Elwha Llc | Highlighting in response to determining device transfer |
US20120254735A1 (en) * | 2011-03-30 | 2012-10-04 | Elwha LLC, a limited liability company of the State of Delaware | Presentation format selection based at least on device transfer determination |
US9317111B2 (en) | 2011-03-30 | 2016-04-19 | Elwha, Llc | Providing greater access to one or more items in response to verifying device transfer |
US8839411B2 (en) | 2011-03-30 | 2014-09-16 | Elwha Llc | Providing particular level of access to one or more items in response to determining primary control of a computing device |
US8613075B2 (en) | 2011-03-30 | 2013-12-17 | Elwha Llc | Selective item access provision in response to active item ascertainment upon device transfer |
US8713670B2 (en) | 2011-03-30 | 2014-04-29 | Elwha Llc | Ascertaining presentation format based on device primary control determination |
US8726366B2 (en) | 2011-03-30 | 2014-05-13 | Elwha Llc | Ascertaining presentation format based on device primary control determination |
US8918861B2 (en) | 2011-03-30 | 2014-12-23 | Elwha Llc | Marking one or more items in response to determining device transfer |
US8739275B2 (en) | 2011-03-30 | 2014-05-27 | Elwha Llc | Marking one or more items in response to determining device transfer |
US9792166B2 (en) * | 2011-11-04 | 2017-10-17 | Open Invention Network, Llc | System and method for managing an object cache |
US20130139184A1 (en) * | 2011-11-30 | 2013-05-30 | Lsi Corporation | Method for embedding a host driver within a device |
EP2645287A1 (en) * | 2012-03-26 | 2013-10-02 | Uniqoteq Oy | Method, computer program and apparatus for switching between user profiles |
WO2014064676A1 (en) * | 2012-10-22 | 2014-05-01 | Cyber-Ark Software Ltd. | Maintaining continuous operational access augmented with user authentication and action attribution in shared environments |
US10637909B2 (en) * | 2013-03-15 | 2020-04-28 | Gordon E. Seay | Methods for managing entity profiles and application launching in software applications |
US20150160935A1 (en) * | 2013-12-06 | 2015-06-11 | Vivint, Inc. | Managing device configuration information |
US9495522B2 (en) * | 2014-09-03 | 2016-11-15 | Microsoft Technology Licensing, Llc | Shared session techniques |
CN106130731A (en) * | 2016-06-22 | 2016-11-16 | 宇龙计算机通信科技(深圳)有限公司 | A kind of domain space changing method and system |
CN106155905B (en) * | 2016-06-28 | 2019-06-07 | 广州华多网络科技有限公司 | Application environment switching method and device |
US10120777B1 (en) * | 2017-09-29 | 2018-11-06 | Oracle International Corporation | Remediating serialization incompatibilities |
CN110187915A (en) * | 2019-05-30 | 2019-08-30 | 苏州浪潮智能科技有限公司 | A kind of cross-platform input subsystem configuration frame of computer and method |
CN110888694B (en) * | 2019-10-31 | 2020-08-28 | 南京联创互联网技术有限公司 | Method for realizing free switching of system user accounts based on localStorage |
US10997121B1 (en) | 2020-07-17 | 2021-05-04 | Snowflake Inc. | Attachable-and-detachable database sessions |
CN115577017B (en) * | 2022-11-21 | 2023-02-28 | 四川蜀天信息技术有限公司 | Method for retrieving data based on serialization and deserialization |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6144959A (en) * | 1997-08-18 | 2000-11-07 | Novell, Inc. | System and method for managing user accounts in a communication network |
US6189100B1 (en) * | 1998-06-30 | 2001-02-13 | Microsoft Corporation | Ensuring the integrity of remote boot client data |
US20020038333A1 (en) * | 1999-12-15 | 2002-03-28 | Evans Christopher A. | Methods and apparatuses for handling single-user applications in multi-user computing environments |
US6389535B1 (en) * | 1997-06-30 | 2002-05-14 | Microsoft Corporation | Cryptographic protection of core data secrets |
US20020171546A1 (en) * | 2001-04-18 | 2002-11-21 | Evans Thomas P. | Universal, customizable security system for computers and other devices |
US20030005316A1 (en) * | 2001-06-28 | 2003-01-02 | Intel Corporation | Radio location based theft recovery mechanism |
US6539479B1 (en) * | 1997-07-15 | 2003-03-25 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for securely logging onto a remotely located computer |
US20030069919A1 (en) * | 2001-09-18 | 2003-04-10 | Kazuaki Takahashi | Information processing apparatus having simplified user switching function and program used therefor |
US20030159070A1 (en) * | 2001-05-28 | 2003-08-21 | Yaron Mayer | System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages |
US20030217159A1 (en) * | 2002-03-18 | 2003-11-20 | Merck & Co., Inc. | Apparatus and method for sharing session information |
US20040111644A1 (en) * | 2002-12-04 | 2004-06-10 | Microsoft Corporation | Sharing a sign-in among software applications having secured features |
US20050021777A1 (en) * | 2003-05-12 | 2005-01-27 | Nec Corporation | Network session control system |
US20050044404A1 (en) * | 2003-08-23 | 2005-02-24 | Bhansali Apurva Mahendrakumar | Electronic device security and tracking system and method |
US20050066202A1 (en) * | 1999-12-15 | 2005-03-24 | Microsoft Corporation | Methods and arrangements for providing multiple concurrent desktops and workspaces in a shared computing environment |
US6928469B1 (en) * | 1998-12-29 | 2005-08-09 | Citrix Systems, Inc. | Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques |
US6936937B2 (en) * | 2002-06-14 | 2005-08-30 | Sunyen Co., Ltd. | Linear electric generator having an improved magnet and coil structure, and method of manufacture |
US20050193117A1 (en) * | 2004-02-05 | 2005-09-01 | Morris Robert P. | Method and system for transmitting data utilizing multiple communication modes simultaneously |
US20050204045A1 (en) * | 1999-09-24 | 2005-09-15 | Ruslan Belkin | Mechanism for enabling session information to be shared across multiple processes |
US20050235051A1 (en) * | 2004-04-19 | 2005-10-20 | Brown Timothy D | Method of establishing target device settings based on source device settings |
US7010612B1 (en) * | 2000-06-22 | 2006-03-07 | Ubicom, Inc. | Universal serializer/deserializer |
US20060107329A1 (en) * | 2004-11-15 | 2006-05-18 | Microsoft Corporation | Special PC mode entered upon detection of undesired state |
US20060129830A1 (en) * | 2004-11-30 | 2006-06-15 | Jochen Haller | Method and apparatus for storing data on the application layer in mobile devices |
US7996682B2 (en) * | 2005-10-17 | 2011-08-09 | Microsoft Corporation | Secure prompting |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346850B2 (en) * | 1998-06-12 | 2008-03-18 | Cygnus Systems, Inc. | System and method for iconic software environment management |
GB2339935B (en) * | 1998-07-17 | 2003-08-20 | Ibm | A computer software system for eliminating operating system multiple logins under remote program load with network provider dynamic link library |
US6957437B1 (en) * | 1999-12-23 | 2005-10-18 | Intel Corporation | Selecting a device driver for a peripheral device adapted to operate on a network and simplifying secondary printer installation |
US6981048B1 (en) * | 2000-11-22 | 2005-12-27 | Toshiba America Information Systems, Inc. | Keep-alive messaging when two applications are running |
US7272831B2 (en) * | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
JP3680034B2 (en) * | 2002-03-20 | 2005-08-10 | 株式会社東芝 | Information processing apparatus and user switching method used in the same apparatus |
US7010624B1 (en) * | 2002-04-01 | 2006-03-07 | Adaptec, Inc. | System and method of software/firmware uploading and upgrading for peripheral devices |
JP4058371B2 (en) * | 2002-04-09 | 2008-03-05 | キヤノン株式会社 | Print management apparatus, device driver registration method, and computer program |
JP2004046587A (en) * | 2002-07-12 | 2004-02-12 | Fujitsu Ltd | Program for incorporating device driver, and device for incorporating device driver |
US20040139355A1 (en) * | 2002-11-07 | 2004-07-15 | Axel David J. | Method and system of accessing a plurality of network elements |
DE10350174A1 (en) * | 2002-11-29 | 2004-06-24 | Siemens Ag | Logging users onto data processing devices involves getting authentication data, deriving identity/access rights, granting access independently of starting operating system/data processing application |
US7577659B2 (en) * | 2003-10-24 | 2009-08-18 | Microsoft Corporation | Interoperable credential gathering and access modularity |
JP4273934B2 (en) * | 2003-11-13 | 2009-06-03 | 株式会社日立製作所 | File system |
JP4273024B2 (en) * | 2004-03-10 | 2009-06-03 | キヤノン株式会社 | Information processing apparatus, image forming apparatus, method and system in the apparatus |
US8438400B2 (en) * | 2005-01-11 | 2013-05-07 | Indigo Identityware, Inc. | Multiple user desktop graphical identification and authentication |
US7334193B2 (en) * | 2005-01-14 | 2008-02-19 | Microsoft Corporation | Start menu user tiles |
US8015331B2 (en) * | 2005-06-29 | 2011-09-06 | Microsoft Corporation | Multi-console workstations concurrently supporting multiple users |
US8051143B2 (en) * | 2005-10-14 | 2011-11-01 | Oracle International Corporation | Sharing sessions between web-based applications |
JP2009512939A (en) * | 2005-10-21 | 2009-03-26 | ヴァー2アス インコーポレイテッド | Computer security method having operating system virtualization that allows multiple operating system instances to securely share a single machine resource |
-
2006
- 2006-01-06 US US11/326,849 patent/US8732284B2/en active Active
-
2009
- 2009-07-01 US US12/496,500 patent/US20090300190A1/en not_active Abandoned
- 2009-07-01 US US12/496,501 patent/US20090300225A1/en not_active Abandoned
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6389535B1 (en) * | 1997-06-30 | 2002-05-14 | Microsoft Corporation | Cryptographic protection of core data secrets |
US6539479B1 (en) * | 1997-07-15 | 2003-03-25 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for securely logging onto a remotely located computer |
US6144959A (en) * | 1997-08-18 | 2000-11-07 | Novell, Inc. | System and method for managing user accounts in a communication network |
US6189100B1 (en) * | 1998-06-30 | 2001-02-13 | Microsoft Corporation | Ensuring the integrity of remote boot client data |
US6928469B1 (en) * | 1998-12-29 | 2005-08-09 | Citrix Systems, Inc. | Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques |
US20050204045A1 (en) * | 1999-09-24 | 2005-09-15 | Ruslan Belkin | Mechanism for enabling session information to be shared across multiple processes |
US20020038333A1 (en) * | 1999-12-15 | 2002-03-28 | Evans Christopher A. | Methods and apparatuses for handling single-user applications in multi-user computing environments |
US20050066202A1 (en) * | 1999-12-15 | 2005-03-24 | Microsoft Corporation | Methods and arrangements for providing multiple concurrent desktops and workspaces in a shared computing environment |
US7010612B1 (en) * | 2000-06-22 | 2006-03-07 | Ubicom, Inc. | Universal serializer/deserializer |
US20020171546A1 (en) * | 2001-04-18 | 2002-11-21 | Evans Thomas P. | Universal, customizable security system for computers and other devices |
US20030159070A1 (en) * | 2001-05-28 | 2003-08-21 | Yaron Mayer | System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages |
US20030005316A1 (en) * | 2001-06-28 | 2003-01-02 | Intel Corporation | Radio location based theft recovery mechanism |
US20030069919A1 (en) * | 2001-09-18 | 2003-04-10 | Kazuaki Takahashi | Information processing apparatus having simplified user switching function and program used therefor |
US20030217159A1 (en) * | 2002-03-18 | 2003-11-20 | Merck & Co., Inc. | Apparatus and method for sharing session information |
US6936937B2 (en) * | 2002-06-14 | 2005-08-30 | Sunyen Co., Ltd. | Linear electric generator having an improved magnet and coil structure, and method of manufacture |
US20040111644A1 (en) * | 2002-12-04 | 2004-06-10 | Microsoft Corporation | Sharing a sign-in among software applications having secured features |
US20050021777A1 (en) * | 2003-05-12 | 2005-01-27 | Nec Corporation | Network session control system |
US20050044404A1 (en) * | 2003-08-23 | 2005-02-24 | Bhansali Apurva Mahendrakumar | Electronic device security and tracking system and method |
US20050193117A1 (en) * | 2004-02-05 | 2005-09-01 | Morris Robert P. | Method and system for transmitting data utilizing multiple communication modes simultaneously |
US20050235051A1 (en) * | 2004-04-19 | 2005-10-20 | Brown Timothy D | Method of establishing target device settings based on source device settings |
US20060107329A1 (en) * | 2004-11-15 | 2006-05-18 | Microsoft Corporation | Special PC mode entered upon detection of undesired state |
US20060129830A1 (en) * | 2004-11-30 | 2006-06-15 | Jochen Haller | Method and apparatus for storing data on the application layer in mobile devices |
US7996682B2 (en) * | 2005-10-17 | 2011-08-09 | Microsoft Corporation | Secure prompting |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090013403A1 (en) * | 2007-07-06 | 2009-01-08 | Kyocera Mita Corporation | Authentication apparatus, authentication method, and computer-readable recording medium storing authentication program |
US8701184B2 (en) * | 2007-07-06 | 2014-04-15 | Kyocera Mita Corporation | Authentication apparatus, authentication method, and computer-readable recording medium storing authentication program |
US20090320125A1 (en) * | 2008-05-08 | 2009-12-24 | Eastman Chemical Company | Systems, methods, and computer readable media for computer security |
US8845337B1 (en) | 2011-06-22 | 2014-09-30 | Amazon Technologies, Inc. | Sharing demonstration information by a network connected demonstration device and system |
US8905763B1 (en) * | 2011-06-22 | 2014-12-09 | Amazon Technologies, Inc. | Managing demonstration sessions by a network connected demonstration device and system |
US9542536B2 (en) | 2012-01-13 | 2017-01-10 | Microsoft Technology Licensing, Llc | Sustained data protection |
US10175750B1 (en) * | 2012-09-21 | 2019-01-08 | Amazon Technologies, Inc. | Projected workspace |
US10922024B1 (en) * | 2019-06-28 | 2021-02-16 | Amazon Technologies, Inc. | Self-protection against serialization incompatibilities |
Also Published As
Publication number | Publication date |
---|---|
US20070162574A1 (en) | 2007-07-12 |
US8732284B2 (en) | 2014-05-20 |
US20090300225A1 (en) | 2009-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8732284B2 (en) | Data serialization in a user switching environment | |
US6915486B2 (en) | Customizing a graphical user interface of a host application | |
US8990697B2 (en) | Associating file types with web-based applications for automatically launching the associated application | |
US6178511B1 (en) | Coordinating user target logons in a single sign-on (SSO) environment | |
US6219700B1 (en) | Method and apparatus for managing services in a computer network from a central console | |
JP3444471B2 (en) | Form creation method and apparatus readable storage medium for causing digital processing device to execute form creation method | |
US6810410B1 (en) | Customizing a client application using an options page stored on a server computer | |
US8694886B2 (en) | Providing dynamic context assist for a command line interface | |
US7092915B2 (en) | PDA password management tool | |
US20130290958A1 (en) | System and method for on-demand cloning of virtual machines | |
US20050177731A1 (en) | Secure management of authentication information | |
JP2000215168A (en) | Authentication and access control in management console program for managing service in computer network | |
US20210373942A1 (en) | Workflow service application networking | |
US8898321B2 (en) | Remote device communication platform user interface | |
JPH10247183A (en) | Computer system and method | |
US10019568B2 (en) | Detecting generation of virtual machine authentication | |
JP2006504189A (en) | System and method for automatic activation and access of network addresses and applications (priority) This is an international patent application filed under the Patent Cooperation Treaty (PCT). This international application claims priority from US Provisional Application No. 60 / 421,622, filed October 25, 2002, which is incorporated by reference. | |
US9210159B2 (en) | Information processing system, information processing device, and authentication method | |
US9954838B2 (en) | Browser plug-in for secure credential submission | |
US6968449B1 (en) | Methods and arrangements for providing a mark-up language based graphical user interface for user identification to an operating system | |
JP2005293565A (en) | Method and apparatus for managing workflow in single sign-on framework | |
Cisco | Installing Policy Manager | |
US8850561B2 (en) | Associating operating system native authorizations with console roles | |
Cisco | Upgrading Cisco CallManager Release 3.0(5a) from the Web | |
Cisco | Upgrading Cisco CallManager Release 3.0(5) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |