CA2523394C - System and method of distributed license management - Google Patents

System and method of distributed license management Download PDF

Info

Publication number
CA2523394C
CA2523394C CA2523394A CA2523394A CA2523394C CA 2523394 C CA2523394 C CA 2523394C CA 2523394 A CA2523394 A CA 2523394A CA 2523394 A CA2523394 A CA 2523394A CA 2523394 C CA2523394 C CA 2523394C
Authority
CA
Canada
Prior art keywords
server
identifier
mobile device
message call
repository
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CA2523394A
Other languages
French (fr)
Other versions
CA2523394A1 (en
Inventor
Rastislav Hodul
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Psion Inc
Original Assignee
Psion Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Psion Inc filed Critical Psion Inc
Priority to CA2523394A priority Critical patent/CA2523394C/en
Publication of CA2523394A1 publication Critical patent/CA2523394A1/en
Application granted granted Critical
Publication of CA2523394C publication Critical patent/CA2523394C/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

A distributed license management system and method for managing software licenses are provided. The disturbed license management system comprises a repository for storing workstation information, a message interceptor for intercepting a message call coming from a workstation to a server, a workstation identification module for determining if a workstation identifier associated with the message call is defined in the repository, and a device verification module for allowing access to the server if a device identifier of a workstation is associated with the workstation identifier. The method comprises the steps of storing workstation information, intercepting a message call coming from a workstation to a server, determining if a workstation identifier associated with the message call is defined in stored workstation information, and allowing access to the server if a device identifier of the workstation is associated with the workstation identifier.

Description

System and Method of Distributed License Management FIELD OF INVENTION
[0001] The present invention relates generally to distributed mobile applications, and in particular, to a system and method of software licensing in sometimes connected environments.
BACKGROUND OF THE INVENTION
[0002] Currently, mobile devices communicate through networks. Typically, the mobile device operates remotely on a radio frequency to a host server. In order for a web service to operating on a mobile device, the mobile device requires a connection 1 o to a server. Unfortunately, there are times when radio coverage and/or the server is not available. Such situations are referred to as "sometimes connected environments".
[0003] Multiple users may use mobile devices. For example, an enterprise may provide each worker with a mobile device to work with and report to a central server.
Alternatively, a plurality of devices may be provided to a plurality of locations to be used by a plurality of users. When a mobile device is used, software that allows the mobile device to communicate with the host server is required.
[0004] In an always-connected environment, software licenses can be assigned to a number of devices. Unfortunately, licensing software on multiple mobile devices can be costly. Moreover, there can be unnecessary costs when a mobile device is not 2o connected to a host server.
[0005] In one example of providing licensed software in a sometimes connected environment, a host server licenses is provided at cost, while mobile software is provided free of charge. However, in order for a mobile device to sync with the host server, a license is required. Thus, each mobile device requires a license, which is costly and not efficient. There is a need for a better way to provide licensed software to mobile devices in sometimes connected environments.
SUMMARY OF THE INVENTION
[0006] The present invention relates to distributed mobile applications where data collection takes place in environments with and without radio (or other telecommunication) coverage. It is an object of the invention to provide a system and method of distributed software licensing in sometimes connected environments.
[0007] In accordance with an embodiment of the invention, there is provided a distributed license management system for managing software licenses. The distributed license system comprises a repository for storing workstation information, a message interceptor for intercepting a message call coming from a workstation to a server, a workstation identification module for determining if a workstation identifier associated with the message call is defined in the repository, and a device verification module for allowing access to the server if a device identifier of a workstation is associated with the workstation identifier.
[0008] In accordance with an embodiment of the invention, there is provided a method of managing software licenses. The method comprises the steps of storing workstation information, intercepting a message call coming from a workstation to a server, determining if a workstation identifier associated with the message call is defined in stored workstation information, and allowing access to the server if a device identifier of the workstation is associated with the workstation identifier.
[0009] This summary of the invention does not necessarily describe all features of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] These and other features of the invention will become more apparent from the following description in which reference is made to the appended drawings wherein:
[0011] Figure 1 shows in a network diagram an example of a system overview of a design, development and operational environment, in accordance with an embodiment of the invention;
[0012] Figure 2 shows in a layer diagram another example of a system overview of a design, development and operational environment, in accordance with an embodiment of the invention;
[0013] Figure 3 shows an example of a distributed license management system for managing software licenses, in accordance with an embodiment of the invention;
[0014] Figure 4 shows in a flowchart an example of a method of managing software licenses, in accordance with an embodiment of the distributed license management system;
[0015] Figure 5 shows another example of a distributed license management system;
and
[0016] Figure 6 shows in a flowchart another example of a method of managing software licenses, in accordance with an embodiment of the distributed license t o management system.
DETAILED DESCRIPTION
[0017] The following description is of a preferred embodiment.
[0018] The present invention will be further illustrated in the following examples.
[0019] Figure 1 shows in a network diagram an example of a system overview 100 of 15 a design, development and operational environment for deploying feature rich applications (that use web services) to mobile devices and desktop personal computers, in accordance with an embodiment of the invention. The system overview 100 comprises one or more or mobile client components (or handheld terminals) for allowing a user to collect, review and modify data; a server component 104 for 2o providing applications and connecti~~~ity options to external systems; a network 106 for allowing the handheld terminals 102 to communicate with the server component via a communications protocol; and a back-end system (or host) 108 for providing a database or enterprise resource planning (ERP) system. Examples of mobile components may include personal computers (PCs), vehicle mount computers, tablet 25 PCs, Windows CE terminals, personal digital assistants (PDAs), etc.
[0020] Figure 2 shows in a layer diagram another example of a system overview of a design, development and operational environment, in accordance with an embodiment of the invention. The mobile client component 102 comprises one or more client applications 202 that communicate with a web services client 204.
The server component 104 comprises an Internet information server (IIS) 206 for communicating with the web services client 204, one or more server applications 208 and a host interconnect module 210 for communicating with the host (or back-end system) 108. The server applications 208 communicate with both the IIS 206 and the host interconnect module 2I0.
[0021] An application console may be installed as client application 202 on the mobile client component 102 to provide a presentation layer and application framework that end users use to collect, review and modify data. The application console communicates with the server component 104 via web services running on the IIS 206. The server component 104 is a middle tier where data is synchronized before being sent to the back-end system 108.
[0022] The server component 104 provides the applications and connectivity options to integrate back-end systems 108. A unified administration console for administering t 5 middleware on may be installed as a server application 206 to provide a single source for system management and monitoring and can be used remotely. Advantageously, the unified administrative console simplifies multi-site, multi-device management and deployment. This allows for ease of deployment and controlled rollouts. Host interconnect modules 210 provide the information and logic used to integrate with the 2o back-end systems 108.
[0023] Back-end systems 108, whether databases or full-featured ERP systems, are supported via the host interconnect modules 210 installed on the server component 104. Standard interface technologies are supported, including extensible markup language (XML) and open database connectivity (ODBC), as well as ERP-specific 25 interfaces.
[0024] Application licensing is a process used to protect the intellectual property of a software vendor. Often the licensing is not only a legal matter, but also includes software components that protect against unauthorized use of the software product.
Usually the encrypted license information is stored and checked on a computer where 3o the software is executed. Such storage and checking may not be manageable in an environment with multiple mobile workstations that may be talking to one central server provided if there is a network connection available. Normally, only the server is licensed and the client software is given out for free.
[0025] Figure 3 shows an example of a distributed license management system for managing software licenses, in accordance with an embodiment of the invention.
The distributed license management system 300 comprises a repository 302 for storing workstation (i.e., mobile device 102) information (such as definitions and associations), a message interceptor 304 for intercepting a message call from a workstation 102 to the server 104 (for example, a web service call coming from a web to service client 204 to the IIS 206), a workstation identification module 306 for determining if a workstation identifier associated with the web service call is defined in the repository 302, and a device verification module 308 for determining if a device identifier of the workstation 102 is associated with the workstation identifier stored in the server 104. Other components may be added to the distributed licensing ~ 5 management system 300, such as a workstation definition module for defining workstations in the repository 302.
[0026] The distributed license management system 300 can be implemented in the IIS
206. Preferably, a license is installed on the server 104 that describes how many workstations 102 are given connection access to the server 104. An administrator may 20 use a workstation definition module to define a licensed number of workstations 102 in the system. Preferably, workstations 102 are defined on the server 104 by placing a workstation identifier (WorkstationID attribute) in a file in the repository 302. Once the workstations 102 are defined, client software is installed on each workstation 102.
[0027] In one embodiment of the distributed license management system, a 25 workstation identifier is written to a workstation during a client software installation.
A device will preferably have one predefined workstationID that is assigned to it during the client software installation. Subsequent to the client software installation on the workstation, when the workstation contacts the server for the first time it can request an available workstationID from the server. From that point forward, the 30 workstation identifier is assigned to that device and stored there.
[0028] No message call to the server 104 is allowed (completed) by an unlicensed workstation. Since the mobile devices 102 are used to collect field data that is later posted to a sewer 104 application, it is typically pointless to run an application on a mobile device 102 without any server 104 communication.
[0029] The workstations 102 can be used without the license until such time when it needs to communicate with the server 104. Preferably, each workstations 102 has a unique serial number that can be hashed into a UniqueDeviceID attribute (or device identifier) that can be stored in the repository 302 and resettably associated with a workstation identifier. Such unique serial numbers are either obtainable by the server 104 via a call to the workstation or appended to the header of a web services call invoked by the workstation 102.
[0030] Figure 4 shows in a flowchart an example of a method of managing software licenses (400), in accordance with an embodiment of the distributed license management system 300. The method (400) comprises the step of storing workstation 1s 102 information (i.e., definitions and associations) (402) on a server 104, preferably in a repository 302. When a message call (for example a web service request) is sent to the server 104 by the workstation 102, the message call is intercepted (404).
The header of the message call comprises a workstation identifier and a device identifier of the workstation 102. If the workstation identifier is defined and the workstation 2o information is not stored on the server 104 (406), then access to the server 104 is denied (410). If, in the server repository, the unique device identifier is associated with the workstation identifier (408), then the workstation 102 is given access to the server 104 (412). Otherwise (408), access to the server 104 is denied (410).
Other steps may be added to the method (400), such as associating and disassociating device 2s identifiers with workstation identifiers in a repository of the server 104.
[0031 ] Figure 5 shows another example of a distributed license management system 500. The distributed license management system 500 comprises the repository 302, the message interceptor 304, the workstation identification module 306, the device verification module 308, a workstation definition module 510 for defining workstation 3o identifiers in the repository 302, and a device registration module 512 for associating device identifiers with the workstation identifiers. These components 302, 304, 306, 308, 510 and 512 are preferably implemented as computer readable code in an of a server 104. Other components may be added to the distributed license management system 500.
[0032] Figure 6 shows in a flowchart an example of a method of managing software licenses (600), in accordance with an embodiment of the distributed license management system 500. A license is installed on the server 104 (602) that describes how many workstations 102 are given connection access to the server 104 at one time.
An administrator may use a workstation definition module 510 to define a set number of workstations 102 to be given access to the server 104. Preferably, the set number is 1o determined by the license. Storing workstation definitions (604) includes the step of storing a workstation identifier in the repository 302. Once workstation identifiers are defined in the repository 302, client software is installed on workstations 102.
Preferably, the workstations 102 can be used without the license until such time when the workstation communicates with the server 104 via a web service request.
When the server 104 receives a web service request (or message call) from a workstation 102, the message call is intercepted by the message interceptor 304 (606).
Preferably, a simple object access protocol (SOAP) call is received that includes a message header carrying a workstation identifier (or WorkstationID attribute) and a device identifier (or UniqueDeviceID attribute). Preferably, the UniqueDeviceID
attribute is 2o a hashed serial number of the device (serial number and disk serial number in case of a PC).
[0033] If the message call does not include a message header having a workstation identifier and device identifier (608), then an error is raised and access to the server 104 is denied (610). Otherwise, (608), the workstation identifier is used to determine if the workstation sending the call is defined (612) in the repository 302.
Preferably, the workstation identifier is compared with the stored workstation entries in the repository 302. If a match is not found then the workstation is not defined (612). An error is raised and access to the server 104 is denied (610). If a match is found then the workstation is defined (612). If there is no device identifier associated with the 3o workstation identifier (614), then the device identifier in the message header is associated with the workstation identifier (616) in the repository 302 and access to the server 104 is permitted. If there is a device identifier associated with the workstation identifier (614) and if the device identifier in the message header does not match the associated device identifier (620) in the repository 302, then an error is raised and access to the server 104 is denied (610). If the device identifier in the message header matches the associated device identifier (620), then access to the server 104 is permitted.
[0034] Other steps may be added to the method (600), including the step of disassociating a device identifier from a workstation identifier in the repository 302.
Administrators can use the device registration module 512 to reset workstation-device associations stored in the repository 302. For example, if the physical device 1 o becomes damaged and replaced by a new one, the system administrator can clear the device identifier of the damaged device that is associated with a workstation identifier, thus freeing the spot for the next claimant.
[0035] Any error message generated by the method (600) may be sent to the device 102 that initiated the message call. If the workstation identifier provided in the 15 message header is in use by another device 102 (620) then the message call may be resent with the message header modified such that a different workstation identifier is used. Preferably, defined workstation identifiers are stored in a repository on the device 102 or on the server and requested by the device as described above.
[0036] Advantageously, the system 300, 500 and method 400, 600 of distributed 20 licensing management allow for centrally managed application licensing that is transparent to the user upon installation of the client application (i.e., no need to enter license keys). The system 300, 500 provides for licensing of applications that run on the mobile devices 102, easy-to-use license management (the first claimant to hit the server claims the workstation identifier; can be reset if necessary).
Preferably, there is 25 no license information on the mobile device 102 (other than one or more stored workstation identifier values), since all checks are performed when the device contacts the server 104.
[0037] Advantageously, the system 300, 500 and method 400, 600 of distributed licensing management allow for central license management. License information 3o may be attached automatically to outgoing web service calls. "Spoofing"
protection is _g_ provided by combining server defined WorkstationID attribute (workstation identifier) with a UniqueDeviceID attribute (device identifier) based upon unique information of the device. Moreover, "First come first served" assignment of available licenses can be used such that a plurality of devices can efficiently share a plurality of licenses, which allows a higher number of devices to share a lower number of licenses.
Thus, when a license is not in use by one device, another device can use the license. The UniqueDeviceID attributes can be reset on the server 104, which allows for periodic "first come first served" assignment of available license, and in case of a physical device needing to be replaced with a different device.
[0038] The systems and methods according to the present invention may be implemented by any hardware, software or a combination of hardware and software having the functions described above. The software code, either in its entirety or a part thereof, may be stored in a computer readable memory. Further, a computer data signal representing the software code that may be embedded in a carrier wave may be transmitted via a communication network. Such a computer readable memory and a computer data signal are also within the scope of the present invention, as well as the hardware, software and the combination thereof.
[0039] While particular embodiments of the present invention have been shown and described, changes and modifications may be made to such embodiments without 2o departing from the true scope of the invention.

Claims (15)

What is claimed:
1. A computer implemented method of sharing a software license of a software among a plurality of mobile devices, the method comprising:
at a server, assigning, to a mobile device, on a first come first served basis, a server defined identifier, the server defined identifier identifying device information of the mobile device, the device information being stored on a repository and associating the mobile device with a software license, the license being shared by a plurality of mobile devices, each mobile device of the plurality of mobile devices having a device identifier, including associating the device identifier of the mobile device with the server defined identifier in the repository, wherein the associations indicate that the mobile device is a licensed device for using the software;
at the server, managing a message call from each mobile device to the server, including:
intercepting the message call coming from a first mobile device to the server, the message call having a header containing the device identifier and the server defined identifier of the first mobile device;
determining, using the server defined identifier in the header of the message call, whether the first mobile device-is defined by searching the repository for the device information associated with the first mobile device;
when the first mobile device is not defined, denying the first mobile device access to the server;
when the first mobile device is defined and the device information is not associated with any device identifier, associating the device identifier in the header of the message call with the device information and accepting access from the first mobile device to the server, wherein the association indicates that the first mobile device is a licensed device for using the software;
when the first mobile device is defined and the device information is associated with the device identifier in the header of the message call, accepting access from the first mobile device to the server; and at the server, disassociating the device identifier from the server defined identifier by clearing the device identifier in the device information in the repository in a predetermined condition so that the server defined identifier with no association with a device identifier in the repository is assignable at the assigning.
2. The method as claimed in claim 1, wherein the message call comprises a server defined identifier, and wherein determining comprises:
obtaining the server defined identifier from the message call.
3. The method as claimed in claim 2, wherein determining comprises:
obtaining the device identifier from the message call when the server defined identifier obtained from the message call is defined on the server, access to the server from the first mobile device being denied when the server defined identifier obtained from the message call is associated with one of the device identifiers different from the device identifier of the message call.
4. The method as claimed in claim 2, comprising at least one of:
denying access to the server from the first mobile device when the server defined identifier obtained from the message call is not defined in the repository;
and denying access to the server from the first mobile device when the server defined identifier obtained from the message call is associated with one of the device identifiers different from the device identifier of the message call, in the repository.
5. The method as claimed in claim 1, comprising:
installing a license on the server to describe how many mobile devices are given connection access to the server.
6. The method as claimed in claim 1, wherein the message call comprises the server defined identifier, and wherein determining comprises:
comparing the server defined identifier obtained from the message call with the server defined identifier defined in the repository; and sending an error message to the first mobile device when a match is not found at the step of comparing.
7. The method as claimed in claim 1, wherein associating comprises:
associating the device identifier with an available server defined identifier in the repository when there is no device identifier associated with the available server defined identifier.
8. The method as claimed in claim 5, comprising:
receiving an updated message call having a message header with a different server defined identifier.
9. The method as claimed in claim 1, comprising:
at the mobile device, storing the server defined identifier assigned during assigning, in the mobile device.
10. The method as claimed in claim 1, comprising:
at the mobile device, requesting an available server defined identifier to the server.
11. The method as claimed in claim 1, comprising:
at the server sending an error message to the first mobile device when the message call does not include a message header having the server defined identifier or the device identifier.
12. The method as claimed in claimed 5, comprising:
installing client software on the mobile device.
13. A computer readable storage medium having recoded thereon statements and instructions for execution by a computer to carry out the method of any one of claims 1-12.
14. A server system, comprising:
a processor for executing statements and instructions stored in a computer readable storage medium as defined in claim 13; and a repository for storing the device information.
15. A computer-readable storage memory storing computer-executable code for sharing a software license of a software among a plurality of mobile devices, the code executing at a server to:
assign, to a mobile device, on a first come first served basis, a server defined identifier, the server defined identifier identifying device information of the mobile device, the device information being stored on a repository and associating the mobile device with a software license, the license being shared by a plurality of mobile devices, each mobile device of the plurality of mobile devices having a device identifier, including associating the device identifier of the mobile device with the server defined identifier in the repository, wherein the associations indicate that the mobile device is a licensed device for using the software;
manage a message call from each mobile device to the server, including:
intercept the message call coming from a first mobile device to the server, the message call having a header containing the device identifier and the server defined identifier of the first mobile device;
determine, using the server defined identifier in the header of the message call, whether the first mobile device is defined by searching the repository for the device information associated with the first mobile device;
when the first mobile device is not defined, deny the first mobile device access to the server;
when the first mobile device is defined and the device information is not associated with any device identifier, associate the device identifier in the header of the message call with the device information and accepting access from the first mobile device to the server, wherein the association indicates that the first mobile device is a licensed device for using the software;
when the first mobile device is defined and the device information is associated with the device identifier in the header of the message call, accept access from the first mobile device to the server; and at the server, disassociate the device identifier from the server defined identifier by clearing the device identifier in the device information in the repository in a predetermined condition so that the server defined identifier with no association with a device identifier in the repository is assignable at the assigning.
CA2523394A 2005-10-14 2005-10-14 System and method of distributed license management Active CA2523394C (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CA2523394A CA2523394C (en) 2005-10-14 2005-10-14 System and method of distributed license management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CA2523394A CA2523394C (en) 2005-10-14 2005-10-14 System and method of distributed license management

Publications (2)

Publication Number Publication Date
CA2523394A1 CA2523394A1 (en) 2007-04-14
CA2523394C true CA2523394C (en) 2015-10-06

Family

ID=37913454

Family Applications (1)

Application Number Title Priority Date Filing Date
CA2523394A Active CA2523394C (en) 2005-10-14 2005-10-14 System and method of distributed license management

Country Status (1)

Country Link
CA (1) CA2523394C (en)

Also Published As

Publication number Publication date
CA2523394A1 (en) 2007-04-14

Similar Documents

Publication Publication Date Title
US8745223B2 (en) System and method of distributed license management
US8813225B1 (en) Provider-arbitrated mandatory access control policies in cloud computing environments
KR100974851B1 (en) Security Access Manager In Middleware
RU2307390C2 (en) Method for using privileges for distributing resources of device for the application
JP4729262B2 (en) Location awareness architecture and systems
US10044765B2 (en) Method and apparatus for centralized policy programming and distributive policy enforcement
CN108134764B (en) Distributed data sharing and exchanging method and system
US8122130B2 (en) Access control system and method for wireless application provisioning
US8832430B2 (en) Remote certificate management
US20140189781A1 (en) Mobile enterprise server and client device interaction
US7367046B1 (en) Method and apparatus for assigning network addresses to network devices
EP1168752A1 (en) Access control in client-sever systems
CN103416040A (en) Terminal control method, apparatus and terminal
WO2021234464A2 (en) Systems and methods for device detection and registration
US20230004371A1 (en) Package distribution and installation in response to user logon
EP2795522B1 (en) Techniques to store secret information for global data centers
US10621111B2 (en) System and method for unified secure remote configuration and management of multiple applications on embedded device platform
KR20110002947A (en) Network access control system using install information of mandatory program and method thereof
CN111970162A (en) Heterogeneous GIS platform service central control system under super-integration framework
CA2523394C (en) System and method of distributed license management
US11700261B1 (en) Tool for management of a pool of authorizations to use software
CN115795493A (en) Access control policy deployment method, related device and access control system
KR20100070763A (en) Access control method and device of usn middleware
US20200220858A1 (en) Subscriber Identity Management
US20230291589A1 (en) Integration of oem endpoint management and unified endpoint management

Legal Events

Date Code Title Description
EEER Examination request