Applications that require authentication when synchronizing data generally follow one of three models. The first model prompts the user to enter authentication credentials whenever authentication is required. The second model requires the user to save authentication credentials somewhere with the client application such that the application can handle authentication tasks without prompting the user. The third model simply fails and does not synchronize the data if authentication is required. None of these models is desirable. The first model can be very annoying and intrusive to the users workflow if background synchronizing is frequent. The second model may have security concerns since passwords are being saved. The third model results in the user not having data that is synchronized.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
When authentication is required a notification user interface element is displayed persistently but unobtrusively such that a user is notified that at least one authentication credential is required by a background synchronization process. This notification element is displayed such that it may be ignored by the user and does not interfere with the user's workflow. The background synchronization process continues to attempt to synchronize data even when the notification element is displayed. The user may select the notification element at any point in order to supply one or more of the required authentication credentials. The notification element is removed from the display when there are no further authentication credentials required.
Referring now to the drawings, in which like numerals represent like elements, various embodiment will be described. In particular,
Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Other computer system configurations may also be used, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Distributed computing environments may also be used where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Referring now to
The mass storage device 14 is connected to the CPU 5 through a mass storage controller (not shown) connected to the bus 12. The mass storage device 14 and its associated computer-readable media provide non-volatile storage for the computer 100. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, the computer-readable media can be any available media that can be accessed by the computer 100.
By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 100.
According to various embodiments, computer 100 may operate in a networked environment using logical connections to remote computers through a network 18, such as the Internet. The computer 100 may connect to the network 18 through a network interface unit 20 connected to the bus 12. The network connection may be wireless and/or wired. The network interface unit 20 may also be utilized to connect to other types of networks and remote computer systems. The computer 100 may also include an input/output controller 22 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in
As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device 14 and RAM 9 of the computer 100, including an operating system 16 suitable for controlling the operation of a networked personal computer, such as the WINDOWS XP operating system from MICROSOFT CORPORATION of Redmond, Wash. The mass storage device 14 and RAM 9 may also store one or more program modules. In particular, the mass storage device 14 and the RAM 9 may store an application program 10. The application program 10 is operative to provide background synchronization of data. According to one embodiment, the application program 10 comprises the MICROSOFT ONENOTE application program from MICROSOFT CORPORATION. Other application programs that utilize background synchronization from other manufacturers may also be utilized. For instance, email programs, desktop publishing programs, presentation programs, and any other type of program that provides for background synchronization may be utilized.
The application program 10 may utilize a background synchronization manager 26. Although background synchronization manager 26 is shown separate from application program 10, it may be included within application program 10. As will be described in greater detail below, the background synchronization manager 26 may be used to assist in determining when the synchronization requires authentication credentials as well as persistently, but unobtrusively, displaying a notification element 30 when authentication credentials are required by the synchronization process.
As described briefly above, the background synchronization manager 26 provides background synchronization services for application 10. While application program 10 is asynchronously synchronizing data in the background it may not be able to authenticate against a server or unlock a data set without authentication credentials. As illustrated in system 200, application program 10 is configured to synchronize data sets 214, 216 and 218 through server 210 and data sets 220 and 222 through server 212. For exemplary purposes, the background synchronization of data set 214 through server 210 and the background synchronization of data set 222 through server 212 failed due to an authentication error. An authentication error occurs when the server requires authentication credentials that were either not supplied or are invalid. For example, an authentication error occurs when no authentication credentials are supplied to access a data set that requires a user name and a password. The authentication credentials may comprise one or more credentials. For instance, a single password may be required, a password and a user name may be required, and the like.
When application program 10 attempts to connect to a server (e.g. server 210 and/or 212) to synchronize data, the notification element 30 is displayed when the data to be synchronized fails due to an authentication error. Notification element 30 notifies the user that they need to enter authentication credentials (e.g. a password) to successfully synchronize the data that is protected by the authentication credentials. The notification element 30 is displayed unobtrusively, but persistently, such that the user's work flow is not interrupted. According to one embodiment, notification element 30 is displayed within an information bar at the top of an application window within display 28. According to one embodiment, the notification element 30 is a non-modal user interface element that is persistently displayed until there are no further authentication credentials required. According to one embodiment, the user may select the notification element 30. When selected, one or more authentication dialogs is displayed to receive the authentication credentials from the user. Should all of the required authentication credentials be entered correctly, the notification element 30 is removed from display 28.
Synchronization authentication error queue 240 is configured to store the outstanding authentication errors. Each time an authentication error occurs and an authentication error is received by application program 10, queue 240 is updated with the error. Whenever the authentication error queue has one or more authentication errors the background synchronization manager 26 displays the notification element 30 on display 28. According to one embodiment, the same message is displayed within notification element 30 regardless of the number of authentication errors. Keeping the message constant within notification element 30 helps to ensure that the message is unobtrusive and does not interfere with the user's workflow. Alternatively, the message may be changed. For example, the message may indicate the number of authentication errors and/or the number of authentication credentials that are required.
Each time that application 10 fails a background synchronization of a data set due to one or more required authentication credentials that were not provided or were incorrect, queue 240 is updated. If the error was a server authentication error then background synchronization manager 26 checks to see if an error for the data associated with the server has already been entered into queue 240. If an authentication error already exists for this data in queue 240 then the authentication error is not added to the queue 240. If the authentication error has not been previously received, then the authentication error is placed in queue 240. When authentication succeeds against a server, and there is an authentication error in the queue due to a previous error, then that error is removed from the queue.
According to one embodiment, when a server temporarily goes offline, as indicated by link 262, any authentication errors that may exist in queue 240 that relate to the offline server are removed from the queue. In the present example, any authentication errors relating to server 212 would be removed from queue 240 when link 262 is broken. The authentication errors are removed since the user can not correct any authentication errors relating to that server until the server comes back online. When the server is available again, any authentication errors that occur are added to the queue again.
When the user selects the notification element 30, the background synchronization manager 26 accesses queue 240 to determine the authentication failures to present to the user for correction. According to one embodiment, each authentication error is handled one at a time. In other words, the user is presented with an input box to enter the authentication credentials that are required for each error. According to another embodiment, an input box may be displayed to the user that combines input fields for entering authentication credentials for more than one of the authentication errors.
According to one embodiment, notification element 350 is displayed at the top of the display area 330 of the application window 310. Displaying the notification element 350 at the top of display area 330 helps to ensure that the user will notice the message 340 indicating that authentication credentials are required to synchronize data. Message 340 indicates that at least one authentication credential is required to synchronize data. Message 340 also indicates that the user may select the notification element 350 in order to enter the required authentication credentials.
Referring now to
When reading the discussion of the routines presented herein, it should be appreciated that the logical operations of various embodiments are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operations illustrated and making up the embodiments described herein are referred to variously as operations, structural devices, acts or modules. These operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof.
After a start operation, the process flows to operation 510, where the background synchronization process attempts to access data that is to be synchronized.
Flowing to decision operation 520, a determination is made as to whether there was an authentication error as a result of attempting to access the data at operation 510. When there is not an authentication error, the process flows to operation 530 where the synchronization process continues.
When there is an authentication error, the process moves to operation 540 where the authentication error is added to an authentication error queue. According to one embodiment, the authentication error is only added to the queue if the authentication error is a new authentication error that is not currently in the queue. Additionally, instead of placing the authentication error within a queue, the error may be stored in some other manner. For example, the authentication error may be maintained somewhere in memory, within a file, and the like.
The process then moves to operation 550 where the notification element is displayed persistently but unobtrusively. A notification element is displayed as long as the queue contains any authentication errors.
The process then moves to an end operation and returns to processing other actions.
After a start operation, the process flows to operation 610, where the notification element is monitored for selection. According to one embodiment, this involves determining when the notification element receives a mouse click. Any type of selection of the notification element, however, may be utilized.
Flowing to decision operation 620, a determination is made as to whether the notification element is selected. When the notification element is not selected, the process returns to operation 610 for continued monitoring.
When the notification element is selected, the process moves to operation 630 where one or more user interface elements are displayed to receive the required authentication credentials.
The process then moves to decision operation 640 where a determination is made as to whether all of the required authentication credentials have been received. When all of the authentication credentials have not been received, the notification element continues to be displayed and the process moves to an end operation.
When all of the authentication credentials have been received, the process moves to operation 650 where the notification element is removed from the display.
The process then moves to an end operation and returns to processing other actions.
The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
This application is a continuation of and claims priority to application Ser. No. 12/980,034, filed Dec. 28, 2010, entitled NON-INTRUSIVE BACKGROUND SYNCHRONIZATION WHEN AUTHENTICATION IS REQUIRED, which is a continuation of Ser. No. 11/360,155, filed Feb. 23, 2006, granted as U.S. Pat. No. 7,877,797, on Jan. 25, 2011, entitled NON-INTRUSIVE BACKGROUND SYNCHRONIZATION WHEN AUTHENTICATION IS REQUIRED, the entirety of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 12980034 | Dec 2010 | US |
Child | 14096617 | US | |
Parent | 11360155 | Feb 2006 | US |
Child | 12980034 | US |