Method and system for license server synchronization
A method and system for license server synchronization are disclosed. According to one embodiment, a computer-implemented method comprises receiving a first capability request from a licensing server, transmitting a first capability response to the licensing server. The licensing server provides a second capability response to a device, and the second capability response is in response to a second capability request sent by the device to the licensing server. The second capability response includes one or more capabilities included in the first capability response. A server synchronization message is received from the licensing server and a request for payment is transmitted to a service provider, wherein the request for payment is generated based on the server synchronization message.
Latest Flexera Software LLC Patents:
- Standardized graph-based framework for determining an equivalent license unit metric for an enterprise computer system
- Method and system for license server synchronization
- Standardized graph-based framework for determining a license position of an enterprise computer system
- Calculating wait time for batch scheduler jobs
- Usage tracking for software as a service (SaaS) applications
The present application claims the priority benefit of U.S. patent application Ser. No. 12/972,199 filed Dec. 17, 2010, the disclosure of which is incorporated herein by reference.
BACKGROUND OF THE INVENTIONField of the Invention
The field of the invention relates generally to computer systems and more particularly relates to a method and system for license server synchronization.
Description of the Related Art
Device manufacturers commonly sell products into different markets or price points, though the devices have similar bills of material and/or manufacturing cost. The manufacturer differentiates the devices by the capabilities they offer, for example a device with fewer capabilities may sell for a lower price than the same device with additional or more sophisticated capabilities. Issues arise when customers become interested in upgrading a device for more capabilities. A customer may have initially desired a device with fewer capabilities at the lower price point, and later decided the more sophisticated (and, consequently perhaps, more expensive) suite of capabilities is necessary or preferred. In terms of licensing, rights are defined on a host and licensed software gets tied to a hardware identity, limiting capability upgrade opportunities or hardware substitution.
Further, a customer may purchase a device through a service provider rather than from a manufacturer. Capabilities are enabled on the device per an agreement with the service provider and the manufacturer. If the customer experiences issues with the device, the manufacturer has no way of knowing what capabilities the device should have enabled because that is handled by the service provider.
SUMMARY OF THE PRESENTLY CLAIMED INVENTIONA method and system for license server synchronization are disclosed. According to one embodiment, a computer-implemented method comprises receiving a first capability request from a licensing server, transmitting a first capability response to the licensing server. The licensing server provides a second capability response to a device, and the second capability response is in response to a second capability request sent by the device to the licensing server. The second capability response includes one or more capabilities included in the first capability response. A server synchronization message is received from the licensing server and a request for payment is transmitted to a service provider, wherein the request for payment is generated based on the server synchronization message.
The above and other preferred features, including various novel details of implementation and combination of elements, will now be more particularly described with reference to the accompanying drawings and pointed out in the claims. It will be understood that the particular methods and systems described herein are shown by way of illustration only and not as limitations. As will be understood by those skilled in the art, the principles and features described herein may be employed in various and numerous embodiments without departing from the scope of the teachings herein.
The accompanying drawings, which are included as part of the present specification, illustrate the presently preferred embodiment of the present invention and together with the general description given above and the detailed description of the preferred embodiment given below serve to explain and teach the principles of the present invention.
The above and other preferred features, including various novel details of implementation and combination of elements, will now be more particularly described with reference to the accompanying drawings and pointed out in the claims. It will be understood that the particular methods and systems described herein are shown by way of illustration only and not as limitations. As will be understood by those skilled in the art, the principles and features described herein may be employed in various and numerous embodiments without departing from the scope of the teachings herein.
DETAILED DESCRIPTIONAs A method and system for license server synchronization are disclosed. According to one embodiment, a computer-implemented method comprises receiving a first capability request from a licensing server, transmitting a first capability response to the licensing server. The licensing server provides a second capability response to a device, and the second capability response is in response to a second capability request sent by the device to the licensing server. The second capability response includes one or more capabilities included in the first capability response. A server synchronization message is received from the licensing server and a request for payment is transmitted to a service provider, wherein the request for payment is generated based on the server synchronization message.
In the following description, for purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the various inventive concepts disclosed herein. However, it will be apparent to one skilled in the art that these specific details are not required in order to practice the various inventive concepts disclosed herein.
The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories, random access memories, EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The methods presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
The customer 102, via web browser 104, accesses a customer portal 105 hosted by the hardware manufacturer 101. Through the customer portal 105 the customer 102 may request capabilities by communicating with the enterprise resource planner (ERP) 106 and pay for the capabilities desired on the customer's embedded system 103. The capabilities desired may be initial functional capabilities for the embedded system 103 and they may also be an upgrade in functionality for an already deployed embedded system 103. The ERP 106 communicates to the entitlement relationship management system (ERMS) 107 the entitlements for the embedded system 103. The customer 102 is then instructed to refresh (or restart or automatically restart after a pre-configured interval based on manufacturer preference) the embedded system 103, and upon reconnection, the embedded system 103 requests instructions from the hardware adapter 111 on the operations manager 110 regarding what capabilities should exist on the system.
The hardware adapter 111 responds with a capability response, and the embedded system 103 functions with the appropriate capabilities it is licensed to utilize. The operations manager 110 communicates regularly with an operations database 109 to store and retrieve licensing information. The hardware adapter 111 is also in communication with an embedded fulfillments database 112 for storage and retrieval of what capabilities have been fulfilled on a device. The hardware adapter 111 handles license generation 113 that generates licenses in the binary format accepted by the embedded system 103. This format is different from a regular license file (which may be plain text) or regular activation (xml) formats. Regenerative activation 114 is also handled by the hardware adapter 111, and regenerative activation 114 involves regenerative logic that restores a licensing state. As an example, in a secure re-host scenario (or transfer of capabilities from one device to another), this block verifies that the original device released its capabilities before granting the capabilities to a replacement device. The hardware adapter 111 also contains an embedded protocol 115 for interfacing with a device or embedded system 103. The embedded protocol 115 decodes and encodes requests and responses based on the protocol defined for the embedded system 103.
Signature verification 212 is a logical block that verifies signatures on the individual feature lines contained within various license rights. Signature verification 212 assures the authenticity of the feature lines and prevents license tampering. License persistence block 213 securely stores regenerative and trial license rights on an embedded device 103. Regenerative license rights are stored on the device so the capabilities are available in-between regenerations from the management server. Information about trial license rights stored on the embedded system 103 to ensure proper expiration. Runtime utilities 214 represent wrappers around runtime functions, the wrappers are used to provide encapsulation from various implementations of customizable operating systems calls. In one embodiment, the licensing micro-kernel 202 handles license rights (license right handling 211), and processes and maintains license rights of various models. Some supported license models may include trials 209, regenerative 208, and node locked 210. The trials 209 license model includes license rights available for a specified duration of time. The regenerative 208 license model specializes in the continuous license rights updates from the management server to the embedded system 103. The node locked 210 license model specializes in the license rights locked to a given device or node. Other interfaces for storage 215, time (verification of a trusted clock 216), system identity 217 verification, and cryptography (crypto provider 218) can be delivered by the provider and overwritten by the customer/manufacturer based on particular device configurations. Storage 215 block stores license rights on the device.
A reference implementation is provided by the provider for the most common embedded operating system, though the manufacturer may way to provide its own implementation to control secure location of the storage and take advantage of the device file system. The trusted clock 216 provides the accurate system time of the device. This helps prevent unauthorized use of expired licenses. The system identity block 217 accesses the device identification. Block 217 uses manufacturer specific implementations because various manufacturers have unique ways of identifying devices. The crypto provider block 218 handles the cryptography needs of the license-enabled application.
The hardware adapter 508 interfaces with the customer operations manager 507 for appropriate capability entitlements for the device 510. The hardware adapter 508 communicates 509 a capability response to the device 510. Capability responses are generated by the hardware adapter 508 on the operations manager 507. A capability response contains the hardware device 510 unique identifier, the list of all products and features the device 510 is entitled to and the time when the response was generated. The timestamp included in the capability response is universal time. The capability response is also encoded and signed so that the device 510 can verify its authenticity. The device 510 will only process a capability response that matches its unique identifier. The timestamp in a capability response is compared to the most recently processed request's timestamp, and the device 510 only processes responses that were generated later than the one it has already processed. When the device 510 processes a capability response, the information from the response may overwrite licensing information from the previous response. This way the capability response can be used to add new functionality to the device 510, or remove or modify existing functionality on the device 510.
According to one embodiment, capacity is not activated on the license server 1004 by the manufacturer 1001. Instead, the appliance 1005 communicates to the license server 1004 the deployed capacity (for example, the appliance may have 50 subscribers, or 100 subscribers, or 150 subscribers). The license server 1004 communicates the activated capacity to the manufacturer's server 1002 so that the manufacturer 1001 can appropriately invoice or bill the service provider 1003. This embodiment provides monetization for capability enablement tracking by a device manufacturer enabled via server synchronization appliance 1005 needs troubleshooting support from the manufacturer 1001, the manufacturer has the appliance 1005 information and capabilities stored (as opposed to the customer calling the service provider 1003 and being routed to the manufacturer 1001, and having to provide all hardware information to the manufacturer 1001 for support).
According to one embodiment, a license server stores information including license rights, devices, and debits of license rights made by devices (what capabilities, when the capabilities were granted and when they expire).
According to one embodiment, server sync messages can include one or more of the following items:
-
- Message Type
- Message Timestamp (time of message generation)
- Vendor Name
- Server Host Id (type+value)
- Identity Name
- Last Sync Time (timestamp)
- Renew Interval
- Borrow Interval
- List of Devices.
According to one embodiment, device information can include one or more of the following items:
-
- Device Host Id (type+value)
- Device Type
- Device Name
- Last Update Time (timestamp)
- Server Host Id (type+value)
- Server Name
- Marked For Delete
- List Of Served Features.
- List Of Overage Features.
According to one embodiment, feature information can include one or more of the following items:
-
- Feature Id
- Feature Name
- Feature Version
- Count
- Expiration.
A method and system for license server synchronization have been disclosed. It is to be understood that the embodiments described herein are for the purpose of elucidation and should not be considered limiting the subject matter of the present patent. Various modifications, uses, substitutions, combinations, improvements, methods of productions without departing from the scope or spirit of the present invention would be evident to a person skilled in the art.
Claims
1. A method for license server synchronization, the method comprising:
- receiving a first capability request sent from a licensing server to an operations server, the first capability request requesting capacity for one or more additional licenses defining one or more capabilities to which a licensed user is entitled to have activated on a licensed user device that already has one or more fulfilled capabilities;
- said operations server activating the requested capacity by generating one or more additional licenses based on information from one or more databases in memory, the one or more databases storing licensing information regarding which capabilities the licensed user is entitled to activate on the licensed user device and which capabilities have already been fulfilled on the licensed user device;
- said operations server transmitting a first capability response from the operations server to the licensing server, the first capability response indicating that the one or more capabilities to which the licensed user device is entitled under the license have been activated, wherein the first capability response comprises a first timestamp and a first functions list of functions to enable on a licensed user device,
- said operations server transmitting the first capability response to a backup licensing server, wherein the backup licensing server provides a second capability response to the licensed user device upon failure of the licensing server, wherein the second capability response is provided to the licensed user device by the licensing server, wherein the second capability response includes the one or more activated capabilities to which the licensed user device is entitled under the license as indicated by the first capability response and that have not yet been fulfilled, wherein the second capability response comprises: a second timestamp comprising a time when the response was generated, a unique identifier identifying the licensed user device, the unique identifier based on a hardware identity of the licensed user device, and a second functions list of functions to enable on the licensed user device, including a list of all products and features to which said licensed user device is entitled, wherein said capability response is encoded and signed to allow the licensed device to verify its authenticity, wherein the licensed user device only processes a capability response that matches its unique identifier, wherein the timestamp in a capability response is compared to a most recently processed request's timestamp, and wherein the licensed user device only processes responses that were generated later than a response that it has already processed, wherein the second capability response overwrites information from a previous response to modify at least one existing capability on the licensed user device, and wherein capabilities that the licensed user device already has to which the licensed user is not entitled under the license as indicated by the first capability response are deactivated based on the second capability response;
- said operations server receiving a server synchronization message sent from the licensing server to the operations server, the server synchronization message based on the one or more activated capabilities that have not been previously fulfilled and deactivated capabilities included in the second capability response; wherein the server synchronization message comprises a server identifier, a third timestamp, and a list of devices and capabilities enabled on each device of the list of devices, wherein the third timestamp comprises a time of message generation, a last sync time, and a last update time; and
- said operations server transmitting a request for payment from the operations server to a service provider, wherein the request for payment is generated based on the one or more activated capabilities that have not been previously fulfilled and deactivated capabilities included in the server synchronization message.
2. The method of claim 1, wherein the licensing server is a laptop computer, and wherein the licensed user device is offline.
3. The method of claim 1, wherein the licensed user device is one of a gaming device, a video processing device, a base station, a router, a digital cable receiver or a smart phone.
4. The method of claim 1, wherein the service provider is one of a wireless communications provider or a cable television provider.
5. The method of claim 1, wherein the licensed user device is a replacement device and further comprising verifying that an original device has released its capabilities before activating the capabilities on the replacement device.
6. A system for license server synchronization, comprising:
- a service provider in communication with a licensing server, wherein the licensing server is in communication with a licensed user device that already has one or more fulfilled capabilities; and
- a processor comprising an operations server in communication with the service provider and the licensing server, the operations server performing operations of: said operations server receiving a first capability request from the licensing server, the first capability request requesting capacity for one or more additional licenses defining one or more capabilities to which a licensed user is entitled to have activated on the licensed user device, said operations server activating the requested capacity by generating one or more additional licenses based on information from one or more databases in memory, the one or more databases storing licensing information regarding which capabilities the licensed user is entitled to activate on the licensed user device and which capabilities have already been fulfilled on the licensed user device, said operations server transmitting a first capability response to the licensing server, the first capability response indicating that the one or more capabilities to which the licensed user device is entitled under the license have been activated, wherein the first capability response comprises a first timestamp and a first functions list of functions to enable on a licensed user device, said operations server transmitting the first capability response to a backup licensing server, wherein the backup licensing server provides a second capability response to the licensed user device upon failure of the licensing server, wherein a second capability response is provided to the licensed user device by the licensing server, wherein the second capability response is provided in response to a second capability request sent by the licensed user device to the licensing server; wherein the second capability response comprises: a second timestamp comprising a time when the response was generated, a unique identifier identifying the licensed user device, the unique identifier based on a hardware identity of the licensed user device, and a second functions list of functions to enable on the licensed user device, including a list of all products and features to which said licensed user device is entitled, wherein said capability response is encoded and signed to allow the licensed device to verify its authenticity, wherein the licensed user device only processes a capability response that matches its unique identifier, wherein the timestamp in a capability response is compared to a most recently processed request's timestamp, and wherein the licensed user device only processes responses that were generated later than a response that it has already processed, wherein the second capability response includes the one or more activated capabilities to which the licensed user device is entitled under the license as indicated by the first capability response and that have not yet been fulfilled, wherein the second capability response overwrites information from a previous response to modify at least one existing capability on the licensed user device, and wherein capabilities that the licensed user device already has to which the licensed user is not entitled under the license as indicated by the first capability response are deactivated based on the second capability response, said operations server receiving a server synchronization message from the licensing server, the server synchronization message based on the one or more activated capabilities that have not been previously fulfilled and deactivated capabilities included in the second capability response; wherein the server synchronization message comprises a server identifier, a third timestamp, and a list of devices and capabilities enabled on each device of the list of devices, wherein the third timestamp comprises a time of message generation, a last sync time, and a last update time; and said operations server transmitting a request for payment to a service provider, wherein the request for payment is generated based on the one or more activated capabilities that have not been previously fulfilled and deactivated capabilities included in the server synchronization message.
7. The system of claim 6, wherein the licensing server is a laptop computer, and wherein the licensed user device is offline.
8. The system of claim 6, wherein the licensed user device is one of a gaming device, a video processing device, a base station, a router, a digital cable receiver or a smart phone.
9. The system of claim 6, wherein the service provider is one of a wireless communications provider or a cable television provider.
10. A non-transitory computer-readable storage medium, having embodied thereon a program executable by a processor to perform a method for license server synchronization, the method comprising:
- receiving a first capability request sent from a licensing server over a communication network, the first capability request requesting capacity for one or more additional licenses defining one or more capabilities to which a licensed user is entitled to have activated on a licensed user device that already has one or more fulfilled capabilities;
- activating the requested capacity by generating one or more additional licenses based on information from one or more databases in memory, the one or more databases storing licensing information regarding which capabilities the licensed user is entitled to activate on the licensed user device and which capabilities have already been fulfilled on the licensed user device;
- transmitting a first capability response to the licensing server over the communication network, the capability response indicating that the one or more capabilities to which the licensed user device is entitled under the license have been activated, wherein the first capability response comprises a first timestamp and a first functions list of functions to enable on a licensed user device,
- transmitting the first capability response to a backup licensing server, wherein the backup licensing server provides a second capability response to the licensed user device upon failure of the licensing server, wherein a second capability response is provided to the licensed user device by the licensing server, and wherein the second capability response is in response to a second capability request sent by the licensed user device to the licensing server, and wherein the second capability response includes the one or more activated capabilities to which the licensed user device is entitled under the license as indicated by the first capability response and that have not yet been fulfilled, wherein the second capability response overwrites information from a previous response to modify at least one existing capability on the licensed user device, and wherein the second capability response comprises: a second timestamp comprising a time when the response was generated, a unique identifier identifying the licensed user device, the unique identifier based on a hardware identity of the licensed user device, and a second functions list of functions to enable on the licensed user device, including a list of all products and features to which said licensed user device is entitled, wherein said capability response is encoded and signed to allow the licensed device to verify its authenticity, wherein the licensed user device only processes a capability response that matches its unique identifier, wherein the timestamp in a capability response is compared to a most recently processed request's timestamp, and wherein the licensed user device only processes responses that were generated later than a response that it has already processed, wherein capabilities that the licensed user device already has to which the licensed user is not entitled under the license as indicated by the first capability response are deactivated based on the second capability response;
- receiving a server synchronization message sent from the licensing server, the server synchronization message based on the one or more activated capabilities that have not been previously fulfilled and deactivated capabilities included in the second capability response, wherein the server synchronization message comprises a server identifier, a third timestamp, and a list of devices and capabilities enabled on each device of the list of devices, wherein the third timestamp comprises a time of message generation, a last sync time, and a last update time; and
- transmitting a request for payment to a service provider, wherein the request for payment is generated based on the one or more activated capabilities that have not been previously fulfilled and deactivated capabilities included in the server synchronization message.
11. The non-transitory computer-readable storage medium of claim 10, wherein the licensed user device is a replacement device and wherein the program further comprises instructions for verifying that an original device has released its capabilities before activating the capabilities on the replacement device.
6223291 | April 24, 2001 | Puhl et al. |
6587959 | July 1, 2003 | Sjolander et al. |
7343297 | March 11, 2008 | Bergler et al. |
7376584 | May 20, 2008 | Weixel |
20020069172 | June 6, 2002 | Omshehe et al. |
20030161476 | August 28, 2003 | Fransdonk |
20050005098 | January 6, 2005 | Michaelis et al. |
20050257072 | November 17, 2005 | Cross |
20060015502 | January 19, 2006 | Szucs |
20080046961 | February 21, 2008 | Pouliot |
20080215758 | September 4, 2008 | Gerdes et al. |
20090300137 | December 3, 2009 | Tyhurst et al. |
20120158415 | June 21, 2012 | Koka |
- U.S. Appl. No. 12/972,199; Office Action mailed Apr. 7, 2014.
- U.S. Appl. No. 12/972,199; Final Office Action mailed Feb. 25, 2013.
- U.S. Appl. No. 12/972,199; Office Action mailed Aug. 9, 2012.
- U.S. Appl. No. 12/972,199; Office Action mailed Nov. 6, 2014.
Type: Grant
Filed: Jan 22, 2014
Date of Patent: Jul 18, 2017
Patent Publication Number: 20140136416
Assignee: Flexera Software LLC (Itasca, IL)
Inventors: Vikram Venkata Koka (Fremont, CA), Ann Shvarts (San Jose, CA)
Primary Examiner: Paul R Fisher
Application Number: 14/161,513
International Classification: G06Q 40/00 (20120101); G06Q 20/38 (20120101); G06Q 30/06 (20120101); G06Q 50/18 (20120101);