Patent Publication Number: US-10771328-B2

Title: Enforcing device settings for mobile devices

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 15/897,642, filed Feb. 15, 2018, issued as U.S. Pat. No. 10,382,263, which application is a continuation of U.S. patent application Ser. No. 14/676,386, filed Apr. 1, 2015, issued as U.S. Pat. No. 9,929,904, which application is a continuation of U.S. patent application Ser. No. 14/090,924, filed Nov. 26, 2013, issued as U.S. Pat. No. 9,014,673, which application is a continuation of U.S. patent application Ser. No. 13/081,726, filed Apr. 7, 2011, issued as U.S. Pat. No. 8,626,128, which application is a continuation of U.S. patent application Ser. No. 11/171,850, filed Jun. 30, 2005, issued as U.S. Pat. No. 8,010,997, the disclosures of which are hereby incorporated by reference herein in their entireties. 
    
    
     BACKGROUND OF THE INVENTION 
     Computer systems and related technology affect many aspects of society. Indeed, the computer system&#39;s ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include the exchange of electronic messages between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks. 
     Computer systems and other electronic devices can have a variety of different configurations including, personal computers, laptop computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, and the like. Many of these different types of computer systems and electronic devices can be configured to communicate wirelessly, such as, for example, in accordance with the I.E.E.E. 802.11 standards, General Packet Radio Service (“GPRS”), Global System for Mobile Communications (“GSM”), etc. Generally, wireless communication is beneficial since it allows a computer system or other electronic device maintain network connective when moved between different physical locations. For example, a mobile device, such as, for example, a mobile telephone or PDA, may be able to maintain connectivity to a GPRS network, when moved across town, between different cities, and even between different countries. Beneficially, the mobile devices can typically access data (e.g., electronic mail messages, Web based content, etc.) across wide geographical ranges. 
     Accessing data typically requires that a requesting computer system have access to an address (e.g., Internet Protocol (“IP”) address) of the computer system (e.g., server) that maintains the data. For example, a computer system requesting access to a Web page can be required to have access to a Uniform Resource Location (“URL”) used to located the Web page. When more sensitive data is made available through wired and/or wireless networks, security mechanisms are routinely used to protect the data from unauthorized access. For example, accessing electronic mail messages from an e-mail server can require a user to have an account with an e-mail server. To authenticate with the e-mail server, a computer system can transfer a user entered user-id and password to the electronic mail server. 
     Computer systems operating in a wired networking environment are to some extent inherently more secure than computer systems operating in a wireless networking environment. For example, alternate physical locations where a wired computer system can achieve network connectively can be limited. That is, to access data, a wired computer system may be required to be in a physical location that has a network tap in communication with a server that maintains the data. Further, there is a reduced risk of a wired computer system being lost. For example, it is extremely unlikely for a user to lose a desktop computer system that has a wired connection to a corporate Local Area Network (“LAN”). There is also a reduced risk of a wired computer system being stolen since many wired computer systems are maintained in physical locations that are not publicly accessible (e.g., inside corporate buildings, homes, etc). 
     Further, in a wired networking environment, other security mechanisms can be used to prevent unauthorized data access. These other security mechanisms can limit data access based on the physical location, domain, and/or electronic address of a computer system. For example, an administrator could limit access to sensitive research data to only those computer systems contained in a research facilitates that generates the research data. Thus, even if a wired computer system is stolen, it may be difficult, if not impossible, to gain unauthorized access to data from the wired network the wired computer system was previously connected to. 
     Further, in a wired networking environment, an administrator often has direct physical control over computer systems that are connected to the network (e.g., the wired computer systems are within a corporate building). Accordingly, the administrator can select and maintain the applications that are installed on the computer systems. In some environments, an administrator may chose to “lock down” the configuration of computer systems to insure that the configuration of the computer systems remains appropriately secure for accessing data. When server side or network upgrades occur, the administrator can “unlock” the computer systems to install appropriate client side updates and can then again lock down the computer systems. However, this manual re-configuration of computer systems can be time consuming. 
     As a result, administrators often configure wired computer systems to receive policy updates without administrator intervention. From time to time, a server can “push” policy updates to wired computer systems to insure that wired computer systems adhere to specified security policies. In some environments, wired computer systems are divided into groups (or domains) that are administered as a unit with common rules and procedures (e.g., all computer systems in the corporate headquarters or all computer systems used by IT employees). Policies can be varied across different domains such that an administrator can vary the policies that are pushed to different wired computer systems. 
     Policy updates can be used to force a wired computer system to use a specified version of a protocol, to use a specified version of encryption algorithm, to use a specified key length, to prevent installation of custom applications, etc. A wired computer system&#39;s failure to implement these policies can prevent the wired computer system from accessing data (even if an appropriate user-id and password are submitted). Since an administrator often has more control over wired computer systems, the administrator can insure that wired computer systems include the appropriate resources (e.g., memory, software, etc.) for receiving and implementing policy updates. 
     Thus, it is possible to increase the security of private data by limiting data access to controlled wired computer systems. However, limiting data access to controlled wired computer systems is not always feasible. Computer system users typically desire available and flexible access to their data regardless of location and/or the type of computer system that will be used to access the data. For example, sales personnel and executives may frequently be out of the office on business travel and while traveling may need access to corporate data, such as, for example, e-mail and sales figures. 
     As result, many applications allow at least some general external (e.g., Web based) access to data. External access applications can be utilized by wired and wireless computer systems to access private and/or sensitive data. For example, a sales person executive may use a mobile device to connect to a corporate LAN through an external GPRS service provider (e.g., a mobile phone company) to access e-mail. 
     Unfortunately, allowing general external access to data puts the data at increased risk for unauthorized access, for example, from hackers or other malicious users. Even for authorized users, there is may be no way to control the security polices of computer systems that attempt general external access to data. 
     Wireless access can be particularly problematic, since computer systems operating in a wireless networking environment, such as, for example, mobile devices, are to some extent inherently less secure than computer systems operating in a wired networking environment. One difficulty is that a wireless device can typically achieve network connectivity from an extensive number of alternate physical locations. For example, a mobile telephone may have network connectively across a wide geographic area, such as, across an entire country or even access the entire Earth. Since wireless computer systems can be and often are moved between different physical locations, many of which are public, there is an increased risk of wireless computer systems being lost or stolen. For convenience, many mobile devices are of reduced size, further increasing the risk of loss or theft. For example, it is much more likely for a mobile phone to be lost or stolen than it is for a desktop computer system to be lost or stolen. Thus, there is an increased risk of a malicious user obtaining a computer system that was previously used to access data wirelessly. 
     Unfortunately, many security mechanisms used to prevent unauthorized in a wired networking environment are unavailable and/or are not feasible in wireless networking environment. For example, it may be unmanageable for an administrator to lock down the configuration of every mobile device (mobile phone, PDS, etc.) that utilizes external data access. It is difficult to place wireless computer systems, in domains since the access locations and access mechanisms may vary based on physical location. For example, access settings in Boston may be different than access setting in San Francisco. 
     Further, there is often no way for an administrator to determine what policy settings are implemented and/or supported by a wireless computer system. For example, a mobile device may support a standard protocol, such as, for example, HyperText Transfer Protocol (“HTTP”), but has no way to communicate policy settings (if they even exist) using the standard protocol. Some mobile devices may simply lack the resources (e.g., system memory, applications, etc.) to implement policy settings. Further, even if a mobile device does support various policy settings, there is typically no way for an administrator to remotely alter policy settings or enforce compliance with policy settings. Thus, an administrator may be forced to make a choice between preventing all external wireless access to data or opening up data to increased security risks associated with external wireless access. 
     BRIEF SUMMARY OF THE INVENTION 
     The foregoing problems with the prior state of the art are overcome by the principles of the present invention, which are directed towards methods, systems, and computer program products for enforcing device settings for mobile devices. Generally, a computer system (e.g., an electronic mail server) enforces an appropriate mobile device configuration prior to permitting a mobile device to access maintained data. The computer system receives a request from a mobile device. The request requests that the mobile device be permitted to access data maintained by the computer system, the request indicating a current mobile device configuration of the mobile device. 
     The computer system determines that current mobile device configuration is not appropriate for accessing the maintained data. The computer system sends device configuration settings to the mobile device. The device configuration settings representing a new mobile device configuration that is appropriate accessing the maintained data. The computer system receives an indication that the mobile device is configured in accordance with the device configuration settings. The computer system permits the mobile device to access the maintained data in response to receiving the indication that the mobile device is configured in accordance with the device configuration settings. 
     In some embodiments, a computer system enforces mobile device access policies prior to permitting mobile device access to maintained data. The computer system receives a data command from a mobile device. The data command indicates a policy version representing the current policy settings at the mobile device. The computer system determines that the current policy settings at the mobile device are not appropriate for accessing data maintained by the computer system 
     The computer system notifies the mobile device that the current policy settings are not appropriate for accessing the maintained data. The computer system receives a policy request from the mobile device. The policy request requests policy settings that are appropriate for accessing the maintained data. The computer system identifies updated policy settings that are appropriate for accessing the maintained data. The computer system sends the updated policy settings along with a corresponding updated policy version to the mobile device, the updated policy version representing the updated policy settings. 
     The computer system receives a data request along with the updated policy version from the mobile device. The data request requests that the mobile device be permitted to access the maintained data. The updated policy version indicates that the mobile device is configured in accordance with the updated policy settings. The computer system notifies the mobile device that access to the maintained data has been permitted. 
     These and other objects and features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       To further clarify the above and other advantages and features of the present invention, a more particular description of the invention will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. It is appreciated that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope. The invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which: 
         FIG. 1  illustrates an example of a computer architecture that facilitates enforcing policy settings for mobile devices. 
         FIG. 2  illustrates an example flow chart of a method for enforcing mobile device access policies prior to permitting mobile device access to maintained data. 
         FIG. 3  illustrates an example of an alternate computer architecture that facilitates enforcing configuration settings of mobile devices. 
         FIG. 4  illustrates an example flow chart of a method for enforcing an appropriate mobile device configuration prior to permitting a mobile device to access maintained data. 
         FIG. 5  illustrates a suitable operating environment for the principles of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The principles of the present invention provide for enforcing device settings for mobile devices. Generally, a computer system (e.g., an electronic mail server) enforces an appropriate mobile device configuration prior to permitting a mobile device to access maintained data. The computer system receives a request from a mobile device. The request requests that the mobile device be permitted to access data maintained by the computer system, the request indicating a current mobile device configuration of the mobile device. 
     The computer system determines that current mobile device configuration is not appropriate for accessing the maintained data. The computer system sends device configuration settings to the mobile device. The device configuration settings representing a new mobile device configuration that is appropriate accessing the maintained data. The computer system receives an indication that the mobile device is configured in accordance with the device configuration settings. The computer system permits the mobile device to access the maintained data in response to receiving the indication that the mobile device is configured in accordance with the device configuration settings. 
     In some embodiments, a computer system enforces mobile device access policies prior to permitting mobile device access to maintained data. The computer system receives a data command from a mobile device. The data command indicates a policy version representing the current policy settings at the mobile device. The computer system determines that the current policy settings at the mobile device are not appropriate for accessing data maintained by the computer system 
     The computer system notifies the mobile device that the current policy settings are not appropriate for accessing the maintained data. The computer system receives a policy request from the mobile device. The policy request requests policy settings that are appropriate for accessing the maintained data. The computer system identifies updated policy settings that are appropriate for accessing the maintained data. The computer system sends the updated policy settings along with a corresponding updated policy version to the mobile device, the updated policy version representing the updated policy settings. 
     The computer system receives a data request along with the updated policy version from the mobile device. The data request requests that the mobile device be permitted to access the maintained data. The updated policy version indicates that the mobile device is configured in accordance with the updated policy settings. The computer system notifies the mobile device that access to the maintained data has been permitted. 
     Embodiments within the scope of the present invention include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Computer-readable media may be any available media, which is accessible by a general-purpose or special-purpose computer system. By way of example, and not limitation, such computer-readable media can comprise physical storage media such as RAM, ROM, EPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other media which can be used to carry or store desired program code means in the form of computer-executable instructions, computer-readable instructions, or data structures and which may be accessed by a general-purpose or special-purpose computer system. Computer-executable instructions comprise, for example, instructions and data which cause a general-purpose computer system or special-purpose computer system to perform a certain function or group of functions. Computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. 
     In this description and in the following claims, a “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules. Local Area Networks (“LANs”), Wide Area Networks (“WANs”) and the Internet are examples of networks. 
     In this description and in the following claims, a “computer system” is defined as one or more software modules, one or more hardware modules, or combinations thereof, that work together to perform operations on electronic data. For example, the definition of computer system includes the hardware components of a personal computer, as well as software modules, such as the operating system of the personal computer. The physical layout of the modules is not important. A computer system may include one or more computers coupled via a network. Likewise, a computer system may include a single physical device (such as a mobile phone or Personal Digital Assistant “PDA”) where internal modules (such as a memory and processor) work together to perform operations on electronic data. 
     In this description and in the following claims, a “mobile device” is defined as a subset of computer systems that primarily (or solely) access networked data using wireless mechanisms and are easily transportable by a human (e.g., can be carried in a user&#39;s pocket) between different physical locations. Mobile devices may have limited resources (e.g., processor, data storage, system memory, protocols, applications, user-interface functionality, etc.) as compared to other computer systems. Mobile phones, watches, and PDA&#39;s are examples of mobile devices. 
     Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, laptop computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices. 
       FIG. 1  illustrates an example of a computer architecture  100  that facilitates enforcing policy settings of mobile devices. Depicted in computer architecture  100  is mobile device  101  and computer system  141 . Mobile device  101  is connected to network  131 , such as, for example, a Local Area Network (“LAN”), a Wide Area Network (“WAN”), or even the Internet, via communication link  132 . Similarly, computer system  141  connected to network  131  via communication link  133 . Thus, mobile device  101 , computer system  141 , and other network connected computer systems (not shown) can exchange data via network  131 . Accordingly, mobile device  101  and computer system  141 , as well as other connected computer systems, can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over network  131 . 
     With reference to  FIG. 1 , a suitable operating environment for the principles of the invention includes a general-purpose computer system in the form of a mobile device  101 . Mobile device  101  includes a speaker  104  for presenting audio information (e.g., spoken words) to the user, a display  105  for presenting visual information to the user, a microphone  106  for inputting audio information (e.g., spoken words) into mobile device  101 , dialing controls  107  represented by 12 buttons through which a user may enter information (e.g., generate DTMF tones), and navigation control buttons  108  that assist the user in navigating through various entries and options listed on display  105 . Although not required, mobile device  101  may also have an antenna  109 . Audio-based user-interface  123  collectively represents speaker  104 , dialing controls  107 , and microphone  106 . 
     Although mobile device  101  has the appearance of a mobile telephone, the unseen features of the telephonic device may allow for complex and flexible general-purpose processing capabilities. For example, the mobile device  101  also includes processor  111 , network interface  180 , and memory  112  that are connected to each other and to speaker  104 , display  105 , navigation controls  108 , dialing controls  107 , microphone  106 , and antenna  109  when appropriate, via system bus  110 . The memory  112  generally represents a wide variety of volatile and/or non-volatile memories and may include types of memory previously discussed. However, the particular type of memory used in the mobile device  101  is not important to the present invention. Program code means comprising one or more program modules may be stored in memory  112 . The one or more program modules may include an operating system  113 , one or more application programs  114 , program modules  115 , and program data  116 . 
     Mobile device  101  is connectable to networks, such as, for example, an office-wide or enterprise-wide computer network, an intranet, and/or the Internet. Mobile device  101  can wirelessly exchange data with external sources, such as, for example, remote computer systems and/or application databases over such a network. Mobile device  101  includes network interface  180  that can, when appropriate, interoperate with antenna  109  to receive data from external sources and/or transmit data to external sources. For example, mobile device  101  can transmit DTMF tones and exchange other audio based data with external sources. 
     While  FIG. 1  represents a suitable operating environment for the present invention, the principles of the present invention may be employed in any system that is capable of, with suitable modification if necessary, implementing the principles of the present invention. The environment illustrated in  FIG. 1  is illustrative only and by no means represents even a small portion of the wide variety of environments in which the principles of the present invention may be implemented. 
     Communication link  132  logically represents that mobile device  101  is connected to network  131 . Communication link  132  abstracts the actually physical representation of the connection from mobile device  101  to network  131 . The actual physical representation can include communication through one or more intermediate network devices and can include communication in one or more different protocols. At least a portion of the actual physical representation can include wireless communication using wireless protocols (e.g., GPRS, GSM, etc. to a mobile telephone server provider) 
     Generally, mobile device  101  can store data, such as, for example, electronic mail messages, Web pages, documents, policy settings, policy versions, configuration settings, configuration versions, etc. in memory  112 . Mobile device  101  can utilize client side programs, such as, for example, client module  142 A (e.g., an electronic mail client) to access data from a server (e.g., an electronic mail server). 
     Computer system  141  includes server module  142 B (e.g., an electronic mail server) and storage  147 . Server module  142 B further includes policy enforcement module  143  and data access module  144 . Generally, storage  147  can store data, such as, for example, electronic mail messages, Web pages, documents, policy settings, policy versions, configuration settings, configuration versions, etc. For example, storage  147  can store policy settings  117  representing a group of policy settings that mobile devices can implement. As depicted, policy settings  117  include setting  117 A, setting  117 B, setting  117 F, setting  117 H, and setting  117 Z. A series of two dots (a vertical ellipsis) between, before and after the expressly depicted policy settings represents that other policy settings can be included between, before and after the expressly depicted policy settings. 
     Policy settings can be name/value pairs. The name represents the name of a policy setting and the value represents the value of the policy setting. Policy setting values can be of virtually any data type, such as, for example, Boolean, integer, floating point, string, character, enumerated, etc. 
     Policy settings can include: a Personal Identification Number (“PIN”) lock activation setting, a minimum PIN length setting, a PIN format setting (e.g., alphanumeric or numeric), a number of PIN failures permitted before performing a local wipe setting, a number of PIN failures after which an override “passcode” must be entered setting, a force wipe on next connection to server setting, a client application version setting, a protocol version setting, a protocol commands allowed setting, a custom application permitted setting, a time interval for enforcing compliance setting, a remote wipe enabled setting, and a require policy check setting. 
     Generally, if a PIN lock setting is activate (or TRUE), a user of a mobile device must enter a PIN through an input interface (e.g., dialing controls) to unlock the mobile device. If a specified number of incorrect PIN entries are detected, the mobile device can initiate a local wipe of memory contents. 
     Remote (or server initiated) wipe settings can include: a user agent string setting providing a human readable indication the involved mobile device (e.g., Trey-T5600/1.2), a DeviceID setting uniquely identifying a mobile device and resolve ambiguity between devices using the same user agent string, a pending remote wipe setting indicating if a mobile device has been designated for a storage wipe, remote wipe timestamp setting indicating a wipe action and when the wipe action occurred. 
     A require policy check setting indicates if policy compliance is required to submit various protocol commands, such as, for example, Sync, Folder Sync, GetHierarchy, etc. 
     An exception list policy setting can be utilized to exempt a user from one or more other policy settings. 
     It should be understood that embodiments of the present invention are not limited to the expressly described policy settings. It would be apparent to one skilled in the art, after having reviewed this description, that embodiments of the present in invention can utilize other policy settings, in addition to those expressly described 
     Also as depicted, policy versions  118  include policy version  118 A, policy version  118 B, policy version  118 D, and policy version  118 Z. A series of two dots (a vertical ellipsis) between, before and after the expressly depicted policy versions represents that other policy versions can be included between, before and after the expressly depicted policy versions. A policy version is a reduced set of data, such as, for example, a policy identifier, that represents a group of one or more policy settings. For example, policy version  118 D can be used to represent the settings  117 A, B, F, and H. Thus, an indication that a mobile device adheres to policy version  118 DA, implies that the mobile device implements settings  17 A, B, F, and H. 
     As depicted, data store  171  includes data  171 A and  171 B. Different data portions can represent different types of data. For example data  171 A can be electronic mail messages and data  171 B can be Web pages. Alternately, different data portions can represent similar or the same type of data but for different users. For example data  171 A can be electronic mail messages for user A and data  171 B can be electronic mail messages for a different user B. 
     Server module  142 B can interoperate with client side programs (e.g., client module  142 A) to transfer data (e.g., electric mail messages) to a mobile device. Thus, in response to a mobile device data request, policy enforcement module  143  can determine if a requesting mobile device&#39;s policy settings are appropriate for accessing data. Policy enforcement module  143  can interoperate with authentication and/or authorization modules of server module  142 B (not shown) to reduce the likelihood of inappropriate data access. When policy settings are appropriate (and, for example, a user is authenticated and authorized), data access module  144  accesses requested data and transfers requested data to the requesting mobile device. On the other hand, when policy settings are inappropriate (and even if a user is authenticated and authorized), policy enforcement module  143  can access appropriate policy settings and transfer the appropriate policy settings to the requesting mobile device. 
     Communication link  133  logically represents that computer system  141  is connected to network  131 . Communication link  133  abstracts the actually physical representation of the connection from computer system  141  to network  131 . The actual physical representation can include communication through one or more intermediate network devices and can include communication in one or more different protocols. At least a portion of the actual physical representation can include wireless communication using wireless protocols. 
       FIG. 2  illustrates an example flow chart of a method  200  for enforcing mobile device access policies prior to permitting mobile device access to maintained data. Method  200  will be described with respect to the components and data depicted in computer architecture  100 . 
     Method  200  includes an act of receiving a data command from a mobile device, the data command indicating a policy version, the policy version representing the current policy settings at the mobile device (act  201 ). For example, mobile device  101  (client module  142 A) can send data command  161  to computer system  141 . Computer system  141  can receive data command  161  from mobile device  101 . Data command  161  can be a request for data, such as, for example, a sync or folder sync command. Alternately, data command  161  can be provision command expressly requesting appropriate policy settings. 
     A data command may or may not expressly include a policy version. Lack of an expressly included policy version can indicate that a mobile device has yet to implement and/or does not support policies. 
     Method  200  includes an act of determining that the current policy settings at the mobile device are not appropriate for accessing data maintained by the computer system (act  202 ). For example, policy enforcement module  143  can compare a policy version included in data command  161  to other policy versions (e.g., included in policy versions  118 ) that are appropriate for accessing data (e.g., electronic mail messages and folders in data store  171 ) maintained by server module  142 B (e.g., an electronic mail server). When the included policy version does not match any other appropriate policy version, policy enforcement module  143  determines that the policy settings of mobile device  101  are inappropriate for accessing data maintained by server module  142 B. If no policy version was included, policy enforcement module  143  can be default determine that the policy settings of mobile device  101  are inappropriate for accessing data maintained by server module  142 B. 
     Method  200  includes an act notifying the mobile device that the current policy settings are not appropriate for accessing the maintained data (act  203 ). For example, server module  142 B can send notification  162  to mobile device  101  to notify mobile device  101  that its current policy settings are inappropriate for access data maintained by server module  142 B. 
     Data command  161  (a request) and notification  162  (a response) can be corresponding messages in a request/response protocol, such as, for example, HTTP. In some embodiments, notification  162  is configured to include an HTTP 5×× (e.g.,  512 ) response code indicating that the server could not fulfill the request (i.e., data command  161 ). 
     Method  200  includes an act of receiving a policy request from the mobile device, the policy request requesting policy settings that are appropriate for accessing the maintained data (act  204 ). For example, mobile device  101  (client module  142 A) can send policy request  163  to computer system  141 . Computer system  141  can receive policy request  163  from mobile device  101 . Policy request  163  can be an initial request for policy settings, can be a request sent in response expiration of a time interval, can be a request sent in response to a notification of new policy settings, or can be a request sent after a period of exception for a user has expired. 
     Method  200  includes an act of identifying updated policy settings that are appropriate for accessing the maintained data (act  205 ). For example, policy enforcement module  143  can identify that settings  117 A, B, F, and H are appropriate for accessing data maintained by server module  142 B. Settings  117 A, B, F, and H can correspond to any of the previously described policy settings. 
     Method  200  includes an act of sending the updated policy settings along with a corresponding updated policy version to the mobile device, the updated policy version representing the updated policy settings (act  206 ). For example, server module  142 B can send settings  117 A, B, F, and H along with policy version  118 D to mobile device  101 . Policy request  163  (a request) and settings  117 A, B, F, and H along with policy version  118 D (a response) can be corresponding messages in a request/response protocol, such as, for example, HTTP. 
     Mobile device  101  can implement settings  117 A, B, F, and H (potentially altering current policy settings) to comply with policy settings that are appropriate for accessing data maintained by server module  142 B. For example, mobile device  101  can implement a PIN enforcement policy in accordance with settings  117 A, B, F, and H. Mobile device  101  can store settings  117 A, B, F, and H and policy version  118 D in program data  116  for subsequent access. 
     Method  200  includes an act of receiving a data request along with the updated policy version from the mobile device, the data request requesting that the mobile device be permitted to access the maintained data, the updated policy version indicating that the mobile device is configured in accordance with the updated policy settings (act  207 ). For example, mobile device  101  (client module  142 A) can send data request  164  along with policy version  118 D to computer system  141 . Computer system  141  can receive data request  164  along with policy version  118 D from mobile device  101 . Data request  164  can be a request to access data  171 A. 
     Policy enforcement module  143  can determine, for example, through comparison to known appropriate policy versions, that policy version  118 D represents policy settings that are appropriate for accessing data  171 . 
     Method  200  includes an act of notifying the mobile device that access to the maintained data has been permitted (act  208 ). For example, server module  142 B can send notification  166  to mobile device  101 . Notification  166  can indicate to mobile device  101  that policy enforcement module  143  has permitted access to data  171 A. Data request  164  along with policy version  118 D (a request) and notification  166  (a response) can be corresponding messages in a request/response protocol, such as, for example, HTTP. 
     If other access requirements are satisfied (e.g., authentication and authorization), mobile device  101  can subsequently access data  171 A. Mobile device  101  can then store data  171 A for subsequent use by client module  142 A, such as, for example, displaying electronic mail messages and/or folders at display  105 . 
     Accordingly, embodiments of the present invention can be used to reduce the likelihood of a compromised device or a device with non-compliant policy settings being able to access data. For example, the use of periodic enforcement and storage wiping can significantly limit the ability of malicious user to access data. 
       FIG. 3  illustrates an example of an alternate computer architecture  300  that facilitates enforcing configuration settings of mobile devices. As depicted in computer architecture  300 , mobile device  101  includes client module  193 A (e.g., a Web browser). Mobile device  101  can utilize client module  193 A to access data maintained by a server. 
     Computer system  141  includes server module  193 B (e.g., a Web server). Server module  193 B further includes policy enforcement module  194  and data access module  195 . As depicted, configuration settings  191  includes configuration settings  191  include policy setting  191 A, policy setting  191 B, and policy setting  191 Z. A series of two dots (a vertical ellipsis) between, before and after the expressly depicted configuration settings represents that other configuration settings can be included between, before and after the expressly depicted policy settings. Configuration settings can be name/value pairs. The name represents the name of a configuration setting and the value represents the value of the configuration setting. Configuration setting values can be of virtually any data type, such as, for example, Boolean, integer, floating point, string, character, enumerated, etc. Configuration settings can include: operating system settings, application program settings, hardware settings, allocated resource settings, network interface settings, wireless protocol settings, etc. 
     It should be understood that embodiments of the present invention are not limited to the expressly described configuration settings. It would be apparent to one skilled in the art, after having reviewed this description, that embodiments of the present in invention can utilize other configuration settings, in addition to those expressly described 
     Also as depicted, configuration versions  192  include configuration version  192 A, configuration version  192 B, and configuration version  192 C. A series of two dots (a vertical ellipsis) between, before and after the expressly depicted policy versions represents that other policy versions can be included between, before and after the expressly depicted configuration versions. A configuration version is a reduced set of data, such as, for example, a configuration identifier, that represents a group of one or more configuration settings. For example, configuration version  192 C can be used to represent the policy settings  191 B, K, N, R. Thus, an indication that a mobile device adheres to configuration version  192 C, implies that the mobile device implements configuration settings  191 B, K, N, R. 
     As depicted, data store  197  includes data  197 A and  197 B. Different data portions can represent different types of data. For example data  197 A can be electronic mail messages and data  197 B can be Web pages. Alternately, different data portions can represent similar or the same type of data but for entities. For example, data  197 A can be Web pages for corporation A and data  197 B can be Web pages for corporation B. 
     Server module  193 B can interoperate with client side programs (e.g., client module  193 A) to transfer data (e.g., Web pages) to a mobile device. Thus, in response to a mobile device data request, policy enforcement module  194  can determine if a requesting mobile device&#39;s policy settings are appropriate for accessing data. For example, policy enforcement module  194  can determine if sufficient resources have allocated at a mobile device to receive a Web page, if a mobile device Web browser includes correct plug-ins for viewing content, if mobile device connection speed will permit a Web page to be downloaded in a reasonable amount of time, etc. 
     Configuration enforcement module  193  can interoperate with one or more of an authentication module, authorization modules, and policy enforcement module of server module  193 B (not shown) to reduce the likelihood of inappropriate data access. When configuration settings are appropriate (and, for example, a user is authenticated and authorized and policy settings are appropriate), data access module  195  accesses requested data and transfers requested data to the requesting mobile device. On the other hand, when configuration settings are inappropriate (and even if a user is authenticated and authorized and policy requirements are appropriate), configuration enforcement module  194  can access appropriate configuration settings and transfer the appropriate configuration settings to the requesting mobile device. 
       FIG. 4  illustrates an example flow chart of a method  400  for enforcing an appropriate mobile device configuration prior to permitting a mobile device to access maintained data. Method  400  will be described with respect to the components and data depicted in computer architecture  300 . 
     Method  400  includes an act of determining that current mobile device configuration is not appropriate for accessing the maintained data (act  401 ). For example, mobile device  101  (client  193 A) can send request  176  to computer system  141 . Request  176  can indicate a configuration version representing the one or more of the current configuration settings of mobile device  101 . Computer system  141  can receive request  176  from mobile device  101 . Request  176  can be a request for data, such, as, for example, a Web page request. Alternately, request  176  can be a provision request expressly requesting appropriate configuration settings. 
     A request may or may not expressly include a configuration version. Lack of an expressly included configuration version can indicate that a mobile device has yet to implement and/or does not support remote configuration. 
     Method  400  includes an act of determining that current mobile device configuration is not appropriate for accessing the maintained data (act  402 ). For example, configuration enforcement module  193  can compare a configuration version included in request  176  to other configuration versions (e.g., included in configuration versions  192 ) that are appropriate for accessing data (e.g., Web pages in data store  197 ) maintained by server module  193 B (e.g., a Web server). When the included configuration version does not match any other appropriate configuration version, configuration enforcement module  194  determines that the configuration settings of mobile device  101  are inappropriate for accessing data maintained by server module  193 B. If no configuration version was included, policy enforcement module  193  can be default determine that the configuration settings of mobile device  101  are inappropriate for accessing data maintained by server module  193 B. 
     In response to detection of an inappropriate configuration, configuration enforcement module  143  can identify configuration settings, such as, for example,  191 B, K, N, and R that are appropriate for accessing data maintained by server module  193 B. Configuration settings  191 B, K, N, and R can correspond to any of the previously described policy settings. 
     Method  400  includes an act of sending device configuration settings to the mobile device, the device configuration settings representing a new mobile device configuration that is appropriate accessing the maintained data (act  403 ). For example, server module  193 B can send configuration settings  191 B, K, N, and R along with configuration version  192 L to mobile device  101 . Request  176  (a request) and configuration setting  191 B, K, N, and R along with configuration version  192 L (a response) can be corresponding messages in a request/response protocol, such as, for example, HTTP. 
     Sent configuration settings can be configuration setting for altering the current configuration of one or more of an operating system, an application program, hardware, allocated resources, a network interface, and wireless protocol settings, at the mobile device. 
     Mobile device  101  can implement configuration settings  191 B, K, N, and R (potentially altering current configuration settings) to comply with configuration settings that are appropriate for accessing data maintained by server module  193 B. For example, mobile device  101  can allocate additional memory for client module  193 A, verify download speed, and activate an appropriate plug-in in accordance with configuration settings  191 B, K, N, and R. Mobile device  101  can store configuration settings  191 B, K, N, and R and configuration version  192 L in program data  116  for subsequent access. 
     Implemented configuration settings can alter the current configuration of one or more of an operating system, an application program, hardware, allocated resources, a network interface, and wireless protocol settings, at the mobile device. 
     Method  400  includes an act of receiving an indication that the mobile device is configured in accordance with the device configuration settings subsequent to sending the device configuration settings to the mobile device (act  404 ). For example, mobile device  101  can send configuration version  192 L to computer system  141 . Computer system  141  can receive configuration version  192 L from mobile device  101 . Configuration enforcement module  143  can determine, for example, through comparison to known appropriate configuration versions, that configuration version  192 L represents configuration settings that are appropriate for accessing data  197 . 
     Method  400  includes an act of permitting the mobile device to access the maintained data in response to receiving the indication that the mobile device is configured in accordance with the device configuration settings (act  405 ). For example, configuration enforcement module  194  can permit mobile device  101  to access data  197 A. Server module  193 B can subsequently send notification  199  to mobile device  101 . Notification  199  can indicate to mobile device  101  that configuration enforcement module  194  has permitted access to data  197 A. Data request configuration version  192 L (a request) and notification  199  (a response) can be corresponding messages in a request/response protocol, such as, for example, HTTP. 
     If other access requirements are satisfied (e.g., authentication, authorization, and policy enforcement), mobile device  101  can subsequently access data  197 A. Mobile device  101  can then store data  197 A for subsequent use by client module  193 A, such as, for example, displaying a Web page at display  105 . 
     Accordingly, embodiments of the present invention can be used to reduce the likelihood of a device with inappropriate configuration settings being able to access data. For example, configuration enforcement manager  193 B can potentially prevent the download of data to an in appropriate configured mobile device. Preventing the download of data that can not be appropriately processed conserves network bandwidth and systems resources. 
       FIG. 5  illustrates a suitable operating environment for the principles of the present invention.  FIG. 5  and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by computer systems. Generally, program modules include routines, programs, objects, components, data structures, and the like, which perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing acts of the methods disclosed herein. 
       FIG. 5  depicts a schematic diagram of a computer system  500 . Computer system  141  can include one or more of the components included in computer system  500 . For descriptive purposes, the depicted computer system is only one example of a suitable environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computer systems be interpreted as having any dependency nor requirement relating to any one or combination of components illustrated in  FIG. 5 . 
     In some basic configurations, computer system  500  includes at least one processing unit  502  and memory  504 . The memory  504  may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.), or some combination of the two. One basic configuration is illustrated in  FIG. 5  by the dashed line  506 . 
     Included storage media devices may have additional features and functionality. For example, they may include additional storage (removable and non-removable) including, but not limited to, PCMCIA cards, magnetic and optical disks, and magnetic tape. Such additional storage is illustrated in  FIG. 5  by removable storage  508  and non-removable storage  510 . Computer-storage media include 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. Memory  504 , removable storage  508 , and non-removable storage  510  are all examples of computer-storage media. Computer-storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory, other memory technology, CD-ROM, digital versatile disks, other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage, other magnetic storage devices, and any other media that can be used to store the desired information and that can be accessed by the computer system. 
     Computer system  500  may also contain communication channels  512  that allow the host to communicate with other systems and devices over a network  520 . Communication channels  512  are examples of communications media. Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information-delivery media. By way of example, and not limitation, communications media include wired media, such as wired networks and direct-wired connections, and wireless media such as acoustic, radio, infrared, and other wireless media. The term computer-readable media as used herein includes both storage media and communications media. 
     The computer system  500  may also have input components  514  such as a keyboard, mouse, pen, a voice-input component, a touch-input device, and so forth. Output components  516  include screen displays, speakers, printer, etc., and rendering modules (often called “adapters”) for driving them. The computer system  500  has a power supply  518 . All these components are well known in the art and need not be discussed at length here. 
     While  FIG. 5  represents a suitable operating environment for the present invention, the principles of the present invention may be employed in any system that is capable of, with suitable modification if necessary, implementing the principles of the present invention. The environment illustrated in  FIG. 5  is illustrative only and by no means represents even a small portion of the wide variety of environments in which the principles of the present invention may be implemented. 
     In accordance with the present invention, modules including policy enforcement modules, client modules, server modules, and data access modules, as well as associated data, including data commands, data requests, notifications, policy requests, policy settings, policy versions, configuration settings, and configuration versions can be stored and accessed from any of the computer-readable media associated with computer system  500 . When a mass storage device, such as, for example, non-removable storage  510 , is coupled to computer system  500 , such modules and associated program data may also be stored in the mass storage device. In a networked environment, program modules depicted relative to computer system  500 , or portions thereof, can be stored in remote memory storage devices, such as, system memory and/or mass storage devices associated with remote computer systems. Execution of such modules may be performed in a distributed environment as previously described. 
     The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope. 
     What is claimed and desired secured by United States Letters Patent is: