DE102004038566A1 - Lizenzsteuerung für Web-Anwendungen - Google Patents
Lizenzsteuerung für Web-Anwendungen Download PDFInfo
- Publication number
- DE102004038566A1 DE102004038566A1 DE102004038566A DE102004038566A DE102004038566A1 DE 102004038566 A1 DE102004038566 A1 DE 102004038566A1 DE 102004038566 A DE102004038566 A DE 102004038566A DE 102004038566 A DE102004038566 A DE 102004038566A DE 102004038566 A1 DE102004038566 A1 DE 102004038566A1
- Authority
- DE
- Germany
- Prior art keywords
- server
- application
- request
- given
- access
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 claims abstract description 44
- 235000014510 cooky Nutrition 0.000 claims description 102
- 230000004044 response Effects 0.000 claims description 25
- 238000012546 transfer Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 2
- 230000003993 interaction Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- HRANPRDGABOKNQ-ORGXEYTDSA-N (1r,3r,3as,3br,7ar,8as,8bs,8cs,10as)-1-acetyl-5-chloro-3-hydroxy-8b,10a-dimethyl-7-oxo-1,2,3,3a,3b,7,7a,8,8a,8b,8c,9,10,10a-tetradecahydrocyclopenta[a]cyclopropa[g]phenanthren-1-yl acetate Chemical compound C1=C(Cl)C2=CC(=O)[C@@H]3C[C@@H]3[C@]2(C)[C@@H]2[C@@H]1[C@@H]1[C@H](O)C[C@@](C(C)=O)(OC(=O)C)[C@@]1(C)CC2 HRANPRDGABOKNQ-ORGXEYTDSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
Abstract
Ein Verfahren zum Steuern von Zugriff auf eine Software-Anwendung (28), die auf einem Server (22) läuft, beinhaltet das Bereitstellen von entsprechenden Identifizierungen an eine Vielzahl von Clients (24), die um Zugriff auf die Anwendung auf dem Server nachsuchen. Eine Liste (40) der Identifizierungen der Clients, die berechtigt sind, Zugriff auf die Anwendung zu haben, wird auf dem Server geführt. Die Liste weist eine vorbestimmte Anzahl von Spalten (42, 44, 46, 48) auf. Wenn eine von einem gegebenen Client übermittelte Anfrage nach Zugriff auf die Anwendung empfangen wird, erlaubt der Server dem gegebenen Client den Zugriff auf die Anwendung nur dann, wenn die dem Client zugeteilte Identifizierung, welche in der Anfrage enthalten ist, in der Liste auftaucht oder wenn zumindest eine der Spalten in der Liste verfügbar ist, um die Identifizierung aufzunehmen.
Description
- Die vorliegende Erfindung betrifft im Allgemeinen das Managen der Verwendung von Software und insbesondere die Lizenzsteuerung von netzwerkbasierten Client/Server-Anwendungen.
- Softwarelizenzen sind ein allgemein bekanntes Verfahren zum Verhindern nicht autorisierter Verwendung und Vervielfältigung von Computerprogrammen. Typischerweise bekommt der Benutzer eines Computers, der ein lizenziertes Softwareprogramm erwirbt, einen Softwarecode bzw. -kennwort oder eine Lizenzdatei, der bzw. die bei der Installation der Software in den Computer eingegeben werden muss und in dem Computer verbleibt, um die nachfolgende Verwendung des Programms zu ermöglichen. Wenn ein Benutzer, beispielsweise ein Unternehmen, über mehrere Computer verfügt, auf denen die Software laufen soll, muss der Benutzer üblicherweise eine separate Lizenz und einen Code bzw. ein Kennwort für jeden Computer erwerben.
- Das U.S.-Patent 5,390,297 von Barber et al., dessen Inhalt hierin durch Bezugnahme eingeschlossen ist, beschreibt ein System zum Steuern der Anzahl von gleichzeitigen bzw. übereinstimmenden Kopien eines Programms in einem Netzwerk, basierend auf der Anzahl von verfügbaren Lizenzen. Das System erlaubt es, dass Lizenzen verfügbar gemacht werden für die Verwendung von einer Vielzahl von Knoten in dem Netzwerk, wobei die Anzahl der Lizenzen geringer sein kann als die Anzahl der Knoten. Wenn ein lokaler Knoten eine gültige Lizenzdatei mit einer noch nicht abgelaufenen, verfügbaren Lizenz aufweist, ermöglichst es ein Lizenzmanager an dem lokalen Knoten, dass das Programm an dem Knoten ausgeführt wird. Wenn keine derartige Lizenz verfügbar ist, sucht der Lizenzmanager andere Knoten nach einer Lizenz ab und, wenn er eine verfügbare Lizenz an einem entfernten Knoten findet, überträgt er die Lizenz von dem entfernten Knoten zu dem lokalen Knoten. Die Lizenz wird aus der Lizenzdatei des entfernten Knoten gelöscht. Die Anzahl von Kopien des Programms, die zur simultanen Ausführung auf den Knoten des Netzwerks autorisiert sind, ist somit auf die Anzahl der Lizenzen, die in den Lizenzdateien des Netzwerks geladen sind, begrenzt.
- Die Lizenzierung von Web-Server-Anwendungen ist ebenfalls bekannt. Beispielsweise erlaubt die von Zend Technologies Ltd. (Ramat Gan, Israel) produzierte SafeGuard Suite (Marke) Softwareverkäufern das Verteilen und die Verwendung von in der PHP-Netz-Scripting-Sprache geschriebenen Anwendungen zu begrenzen. Durch Kodieren ihrer Anwendungen, welche die Zend-Kodierkomponente verwenden und Lizenzerfordernisse in dem Kodierer ermöglichen, können Softwareverkäufer Versionen ihrer Anwendungen erzeugen, die nur dann laufen, wenn sie von einer gültigen Softwarelizenz begleitet sind. Diese Lizenz wird in einer Lizenzdatei gehalten, welche von dem Urheber der Anwendung digital signiert ist. Lizenzdateien können so figuriert sein, dass sie die Benutzung von Anwendungen nach Ablauf eines spezifizierten Ablaufdatums unmöglich machen, und sie können zudem eine Datensperre der Anwendung bezüglich eines speziellen Web-Servers (basierend auf besonderen Hardware- oder Software-Charakteristiken der Maschine) oder bezüglich einer speziellen Internet-Protokoll(IP)-Adresse oder eines Bereichs von IP-Adressen bewirken.
- Es ist auf dem vorliegenden Gebiet bekannt, mittels Lizenzen die Anzahl von gleichzeitigen Client-Verbindungen, die von einem Netzwerkserver aufrechterhalten werden können, zu begrenzen. Der von der Santa Cruz Operation Inc. (Santa Cruz, Kalifornien) produzierte Advanced Server hat beispielsweise eine derartige Fähigkeit, ebenso wie der von Macromedia Inc. (San Francisco, Kalifornien) produzierte Macromedia Flash Communication Server.
- Der elektronische Inhalt kann ebenfalls lizenziert werden auf die Anzahl der Verbraucher, denen gleichzeitiger Zutritt über ein Netzwerk gestattet ist. Ein derartiges System ist beispielsweise in dem U.S.-Patent 6,453,305 von Glassman et al. beschrieben, dessen Inhalt durch Bezugnahme hierin eingeschlossen ist. Ein Verbraucher erwirbt zunächst, entweder von einem Makler oder von dem Verkäufer des Inhalts, ein Verkäuferskript. Der Verbraucher legt das Verkäuferskript dem Verkäufer zusammen mit einem Antrag auf Zutritt auf den Inhalt vor. Der Verkäufer ermittelt, ob eine Lizenz für den Inhalt zur Verwendung für den Verbraucher verfügbar ist, abhängig von der Anzahl der anderen Verbraucher, die zur Zeit eine Lizenz haben. Wenn diese Anzahl geringer ist als die in dem anwendbaren Inhaltslizenzvertrag spezifizierte Maximalanzahl, wird dem Verbraucher Zutritt auf den Inhalt gestattet.
- Aus dem Stand der Technik bekannte Verfahren zur Softwarelizenzierung sind so ausgelegt, dass sie die Anzahl von Maschinen bzw. Geräten limitieren, auf denen zu irgendeinem gegebenen Zeitpunkt eine lizenzierte Anwendung laufen darf. Diese Lizenzierungssysteme sind jedoch nicht in der Lage, die Anzahl von Kunden zu kontrollieren bzw. zu steuern, welche gleichzeitig Zugriff auf eine Anwendung haben dürfen, die auf einem gegebenen Gerät läuft. Während beispielsweise die zuvor erwähnte SafeGuard Suite-Lizenzdatei erlauben kann, dass eine Web-Anwendung nur auf einem einzelnen lizenzierten Server läuft, ist sie nicht dazu in der Lage, die Anzahl von Kunden bzw. Clients zu begrenzen, die gleichzeitig durch ihre Web-Browser Zugriff auf die Anwendung auf dem Server haben. Andere aus dem Stand der Technik bekannte Verfahren, wie sie zuvor beschrieben wurden, können die Anzahl von Verbindungen steuern bzw. kontrollieren, die ein Server aufbauen kann, oder die Anzahl von Verbrauchern, die einen bestimmten Inhalt empfangen können, sie sind jedoch nicht dazu in der Lage, direkt den Client-Zugriff auf eine bestimmte Anwendung zu regeln.
- Ausführungsformen der vorliegenden Erfindung überwinden diese Beschränkungen des Standes der Technik dadurch, dass sie es dem Provider einer Anwendung ermöglichen, die Anzahl von Clients zu steuern, die gleichzeitig Zugriff auf die Anwendung auf einem gegebenen Server oder einem Cluster von Servern haben. Basierend auf dieser Möglichkeit kann der Provider der Anmeldung Software unter einer Lizenz verkaufen, die nicht nur die Anzahl von Servern spezifiziert, auf der die Anmeldung laufen kann, sondern auch die Anzahl von Clients, die gleichzeitig bedient werden können. Softwareverkäufer können diese Art der Lizenzierung dazu verwenden, Gewinne aus dem Volumen des Benutzerverkehrs, den ihre Anwendungen erzeugen, zu realisieren.
- Eine Lizenzsteuerungskomponente auf dem Server bewirkt, dass der Server an jeden Client, der versucht, Zugriff auf die Anwendung zu bekommen, eine temporäre Identifizierung ausgibt, um den Client-Zutritt auf ein Anwenderprogramm auf dem Server zu steuern. Im Zusammenhang mit Web-Anwendungen, die auf HTTP-Servern laufen, kann der Server Session-Cookies (auch als vorübergehende oder temporäre Cookies bekannt) für diesen Zweck herausgeben. Jeder nachfolgende Wunsch durch einen Client, Zugriff auf die Anwendung auf dem Server zu bekommen, wird von einer Kopie der temporären Identifizierung begleitet. Der Server führt eine Liste von derzeit aktiven temporären Identifizierungen in seinem Speicher. Die Nummer von verfügbaren Spalten auf der Liste ist gleich der maximalen Anzahl von gleichzeitigen Clients, die durch den Anwendungsprovider autorisiert sind. Die maximale Anzahl ist typischerweise in einer Lizenzdatei festgelegt, die von dem Anwendungsprovider mit der Software geliefert wird. Wenn die Liste voll ist, können zusätzliche Clients so lange keinen Zugriff auf die Anwendung erhalten, bis einer der derzeitigen Clients sich abgemeldet hat oder wegen. Zeitablaufs abgeschaltet wurde.
- Gemäß einer Ausführungsform der Erfindung ist somit ein Verfahren zum Steuern von Zugriff auf eine Software-Anwendung bereitgestellt, welches die folgenden Schritte aufweist:
Empfangen eines Software-Codes in einer codierten Form von einem Software-Händler zur Verwendung beim Laufen der Software-Anwendung auf einem Server,
Decodieren des Software-Codes gemäß den Bedingungen einer von dem Software-Verkäufer bestimmten Lizenz derart, dass die Software-Anwendung auf dem Server läuft,
Bereitstellen von entsprechenden Identifizierungen an eine Vielzahl von Clients, die um Zugriff auf die Anwendung auf dem Server nachsuchen,
Führen einer Liste von Identifizierungen der Clients, welche berechtigt sind, Zugriff auf die Anwendung auf dem Server zu erhalten, wobei die Liste eine Anzahl von Spalten bzw. freien Stellen beinhaltet, die durch die Bedingungen der Lizenz bestimmt sind,
Empfangen einer von einem gegebenen Client aus der Vielzahl der Clients eingereichten Anfrage auf Zugriff auf die Anwendung auf dem Server, wobei die Anfrage eine an den gegebenen Client herausgegebene gegebene Identifizierung beinhaltet, und
dem gegebenen Client den Zugriff auf die Anwendung gestatten, als Reaktion auf seine Anfrage, lediglich dann, wenn die gegebene Identifizierung auf der Liste erscheint oder wenn zumindest eine der freien Stellen auf der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Gemäß einem Aspekt der Erfindung ist die Anzahl der freien Stellen, im Folgenden Spalten genannt, in einer Lizenzdatei festgelegt, die von dem Software-Verkäufer bereitgestellt wird, und das Decodieren des Software-Codes beinhaltet ein Decodieren des Software-Codes unter Verwendung einer Lizenzsteuerungskomponente, welche die Lizenzdatei liest und die Liste der Identifizierungen führt. In einer offenbarten Ausführungsform ist der Software-Code in einer Scripting-Sprache geschrieben und dann von dem Software-Händler codiert.
- In einigen Ausführungsformen beinhaltet das Bereitstellen der entsprechenden Identifizierungen das Senden von Cookies an die Clients über ein Netzwerk, und ein Empfangen der Anfrage beinhaltet ein Empfangen einer Nachricht von dem gegebenen Client über das Netzwerk, wobei die Nachricht eines der Cookies enthält, das an den gegebenen Client ausgegeben ist. Typischerweise beinhalten die Cookies Session-Cookies, und das Empfangen der Nachricht beinhaltet das Empfangen einer Hypertext-Transfer-Protokoll(HTTP)-Anfrage. Zusätzlich oder alternativ beinhaltet das Bereitstellen der entsprechenden Identifizierungen das Erzeugen eines Uniform-Resource-Locators bzw. einer Internet-Adresse (URL), die auf die gegebene Identifizierung, die an den gegebenen Client herausgegeben wurde, hinweist, so dass bewirkt wird, dass der gegebene Client die gegebene Identifizierung in die HTTP-Anfrage einfügt.
- In einer offenbarten Ausführungsform beinhaltet das Bereitstellen der entsprechenden Identifizierungen das Empfangen einer ersten Anfrage von dem gegebenen Client auf Zugriff auf die Anwendung auf dem Server, wobei die erste Anfrage nicht eine gültige Identifizierung beinhaltet, und das Herausgeben der gegebenen Identifizierung an den gegebenen Client in Beantwortung der ersten Anfrage, wobei das Empfangen der die gegebene Identifizierung enthaltenden Anfrage ein Empfangen einer zweiten Anfrage von dem gegebenen Client auf Zugriff auf die Anwendung nach der ersten Anfrage beinhaltet, wobei die zweite Anfrage die gegebene Identifizierung beinhaltet. Typischerweise beinhaltet das Führen der Liste das Eintragen der gegebenen Identifizierung in eine der Spalten auf der Liste, wenn zumindest eine der Spalten verfügbar ist, nach dem Empfangen der zweiten Anfrage.
- Zusätzlich oder alternativ beinhaltet das Führen der Liste, nachdem festgestellt wird, dass die gegebene Identifizierung nicht auf der Liste erscheint, jedoch eine der Spalten auf der Liste verfügbar ist, und dem gegebenen Client der Zugriff auf die Anwendung gestatten wird, ein Eintragen der gegebenen Identifizierung in eine der verfügbaren Spalten.
- Des Weiteren, zusätzlich oder alternativ, beinhaltet das dem gegebenen Client den Zugriff-auf-die-Anwendung-Gestatten ein dem gegebenen Client einen Zugriff-auf-die-Anwendung-Verweigern, wenn alle Spalten in der Liste besetzt sind von Identifizierungen anderer Clients, die gerade Zugriff auf die Anwendung haben. In einer offenbarten Ausführungsform beinhaltet das Führen der Liste ein Eintragen von Zeitmarken in die Spalten, welche die entsprechenden Zeiten angeben, an denen die Clients zuletzt Zugriff auf die Anwendung hatten, und ein dem gegebenen Client den Zugriff-auf-die-Anwendung-Gestatten beinhaltet ein Freimachen von einer der Spalten, die eine verbrauchte bzw. abgelaufene Zeitmarke enthält, und ein dem gegebenen Client den Zugriff-auf-die-Anwendung-Gestatten, wobei die gegebene Identifizierung in die eine der Spalten eingetragen wird, die freigemacht wurde.
- Gemäß einer Ausführungsform der vorliegenden Erfindung wird des Weiteren bereitgestellt ein Verfahren zum Steuern von Zugriff auf eine Software-Anwendung mit den folgenden Schritten:
Laufen lassen der Software-Anwendung auf einem Server,
Herausgeben von entsprechenden Session-Cookies von dem Server an eine Vielzahl von Clients, die um Zugriff auf die Anwendung auf dem Server nachsuchen, wobei jedes der Session-Cookies eine eindeutige Identifizierung beinhaltet,
Führen einer Liste der Identifizierungen der Clients, die berechtigt sind, Zugriff auf die Anwendung auf dem Server zu erhalten, wobei die Liste eine vorbestimmte Anzahl von freien Stellen bzw. Spalten beinhaltet,
Empfangen einer Nachricht von einem gegebenen Client aus einer Vielzahl von Clients an den Server, wobei die Nachricht eine von dem Client eingereichte Anfrage auf Zugriff auf die Anwendung auf dem Server umfasst und ein gegebenes Session-Cookie, das an den gegebenen Client herausgegeben wird, beinhaltet, und
dem gegebenen Client, als Reaktion auf die Anfrage, den Zugriff-auf-die-Anwendung-Gestatten lediglich dann, wenn die in dem gegebenen Session-Cookie beinhaltete Identifizierung auf der Liste erscheint oder wenn zumindest eine der Spalten auf der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Gemäß einer Ausführungsform der vorliegenden Erfindung wird zudem bereitgestellt ein Verfahren zum Steuern von Zugriff auf eine Software-Anwendung mit den folgenden Schritten:
Bereitstellen einer Software-Anwendung unter Lizenz von einem Software-Händler an einen Betreiber eines Servers, wobei die Anwendung einen Software-Code, der in einer codierten Form bereitgestellt ist, und eine Lizenzdatei, die Lizenzbedingungen einschließlich einer Begrenzung auf eine maximale Anzahl von Clients, denen gleichzeitig der Zugriff auf die Anwendung auf dem Server gestattet ist, beinhaltet,
Laufen lassen der Anwendung auf dem Server durch Decodieren des Software-Codes unter Verwendung einer Lizenzsteuerungskomponente, welche erlaubt, dass die Anwendung gemäß den in der Lizenzdatei spezifizierten Bedingungen läuft,
Empfangen einer Anfrage von einem Client auf Zugriff auf die Anwendung auf dem Server, und
Verarbeiten der Anfrage unter Verwendung der Lizenzsteuerungskomponente, so dass dem Client der Zugriff auf die Anwendung gestattet wird unter der Einschränkung der maximalen Anzahl von Clients. - Typischerweise beinhaltet das Empfangen der Anfrage ein Empfangen einer Nachricht einschließlich einer von dem Server an den Client herausgegebenen Identifizierung und das Verarbeiten der Anfrage beinhaltet ein Vergleichen der Identifizierung mit einer auf dem Server geführten Liste von Identifizierungen, wobei die Liste eine Anzahl von Spalten zum Aufnehmen von Identifizierungen aufweist, die gleich der in der Lizenzdatei spezifizierten maximalen Anzahl von Clients ist. Die maximale Anzahl der Clients kann beträchtlich geringer sein als eine Gesamtanzahl von Clients, die zu unterschiedlichen Zeiten Zugriff auf die Anwendung auf dem Server haben können.
- Gemäß einer Ausführungsform der vorliegenden Erfindung wird des Weiteren ein Server zum Laufen lassen einer Softwareanwendung bereitgestellt, wobei der Server aufweist:
einen Speicher, der so angeordnet ist, dass er einen von einem Software-Händler in codierter Form bereitgestellten Software-Code zur Verwendung beim Laufen lassen der Software-Anwendung speichern kann; und
einen Prozessor, der dazu ausgelegt ist, den Software-Code unter den Bedingungen einer von dem Software-Händler festgelegten Lizenz zu decodieren, so dass die Software-Anwendung läuft, und um einer Vielzahl von Clients, die um Zugriff auf die Anwendung auf dem Server nachsuchen, eine entsprechende Identifizierung bereitzustellen, wobei in dem Speicher eine Liste geführt wird mit den Identifizierungen der Clients, die berechtigt sind, Zugriff auf die Anwendung auf dem Server zu erhalten, wobei die Liste eine Anzahl von Spalten aufweist, die durch die Bedingungen der Lizenz bestimmt ist,
wobei der Prozessor des Weiteren dazu ausgelegt ist, beim Empfangen einer durch einen gegebenen Client aus der Vielzahl der Clients übermittelten Nachfrage um Zugriff auf die Anwendung auf dem Server, wobei die Nachfrage eine an den gegebenen Client herausgegebene gegebene Identifizierung aufweist, dem gegebenen Client als Reaktion auf die Anfrage den Zugriff auf die Anwendung lediglich dann zu gestatten, wenn die gegebene Identifizierung auf der Liste erscheint oder wenn zumindest eine der Spalten auf der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Darüber hinaus wird gemäß einer Ausführungsform der Erfindung ein Server zum Laufen lassen einer Software-Anwendung bereitgestellt, wobei der Server aufweist:
einen Speicher und
einen Prozessor, der dazu ausgelegt ist, die Software-Anwendung laufen zu lassen, und der weiterhin dazu ausgelegt ist, entsprechende Session-Cookies an eine Vielzahl von Clients, die um Zugriff auf die Anwendung auf dem Server nachsuchen, herauszugeben, wobei jedes der Session-Cookies eine eindeutige Identifizierung aufweist, sowie in dem Speicher eine Liste von Identifizierungen der Clients, die berechtigt sind, Zugriff auf die Anwendung auf dem Server zu haben, zu führen, wobei die Liste eine vorbestimmte Anzahl von Spalten aufweist,
wobei der Prozessor weiterhin dazu ausgelegt ist, beim Empfang einer Nachricht von einem gegebenen Client aus der Vielzahl der Clients, wobei die Nachricht eine von dem Client übermittelte Nachfrage auf Zugriff auf die Anwendung auf dem Server enthält und einen an den gegebenen Client herausgegebenen gegebenen Session-Cookie beinhaltet, dem gegebenen Client als Reaktion auf die Anfrage den Zugriff auf die Anwendung lediglich dann zu gestatten, wenn die in dem gegebenen Session-Cookie enthaltene Identifizierung auf der Liste erscheint oder wenn zumindest eine der Spalten in der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Gemäß einer Ausführungsform der Erfindung wird des Weiteren bereitgestellt ein Server zum Laufen lassen einer Software-Anwendung, die von einem Software-Händler unter einer Lizenz einem Betreiber des Servers bereitgestellt wird, wobei der Server aufweist:
einen Speicher, der dazu ausgelegt ist, einen von dem Software-Händler in codierter Form bereitgestellten Software-Code zur Verwendung beim Laufen lassen der Software-Anwendung zu speichern, und eine Lizenzdatei zu speichern, die von dem Software-Händler festgelegte Lizenzbedingungen spezifiziert, einschließlich einer Beschränkung auf eine maximale Anzahl von Clients, denen gleichzeitig Zugriff auf die Anwendung auf dem Server gestattet wird, und
einem Prozessor, der dazu ausgelegt ist, die Anwendung laufen zu lassen durch Decodierung des Software-Codes unter Verwendung einer Lizenzsteuerungskomponente, die es erlaubt, die Anwendung unter den in der Lizenzdatei spezifizierten Bedingungen laufen zu lassen, so dass bei Empfang einer Anfrage von einem Client auf Zugriff auf die Anwendung auf dem Server der Prozessor die Anfrage unter Verwendung der Lizenzsteuerungskomponente verarbeitet, so dass dem Client der Zugriff auf die Anwendung unter der Einschränkung auf die maximale Anzahl von Clients gestattet wird. - Gemäß einer Ausführungsform der vorliegenden Erfindung wird darüber hinaus bereitgestellt ein Computersoftware-Produkt, welches ein computer- bzw. maschinenlesbares Medium aufweist, in dem Programmanweisungen gespeichert sind, wobei die Anweisungen, wenn sie von einem Server gelesen werden, bewirken, dass der Server einen in codierter Form von einem Software-Händler bereitgestellten Software-Code zur Verwendung beim Laufen lassen der Software-Anwendung liest, und den Software-Code unter den Bedingungen einer von dem Software-Händler festgelegten Lizenz decodiert, um die Software-Anwendung laufen zu lassen, wobei die Anweisungen weiterhin bewirken, dass der Server einer Vielzahl von Clients, die um Zugriff auf die Anwendung auf dem Server nachsuchen, entsprechende Identifizierungen bereitstellt, wobei eine Liste der Identifizierungen der Clients, die zum Zugriff auf die Anwendung auf dem Server berechtigt sind, geführt wird, wobei die Liste eine von den Bedingungen der Lizenz festgelegte Anzahl von Spalten aufweist, so dass bei Empfangen einer von einem gegebenen Client aus der Vielzahl von Clients übermittelten Nachfrage um Zugriff auf die Anmeldung auf dem Server, wobei die Nachfrage eine an den gegebenen Client herausgegebene gegebene Identifizierung aufweist, der Server dem gegebenen Client als Reaktion auf die Nachfrage den Zugriff auf die Anwendung nur dann gestattet, wenn die gegebene Identifizierung auf der Liste erscheint oder wenn zumindest eine der Spalten auf der Liste zur Aufnahme der gegebenen Identifizierung verfügbar ist.
- Gemäß einer Ausführungsform der vorliegenden Erfindung wird des Weiteren bereitgestellt ein Computersoftware-Produkt, das ein maschinen- bzw. computerlesbares Medium aufweist, in dem Programmanweisungen gespeichert sind, wobei die Anweisungen, wenn sie von einem Server gelesen werden, bewirken, dass der Server eine Software-Anwendung laufen lässt und an eine Vielzahl von Clients, die um Zugriff auf die Anwendung auf dem Server nachsuchen, entsprechende Session-Cookies herausgibt, wobei jedes der Session-Cookies eine eindeutige Identifizierung beinhalten, wobei die Anweisungen des Weiteren bewirken, dass der Server in dem Speicher eine Liste der Identifizierungen der Clients, die dazu berechtigt sind, Zugriff auf die Anwendung auf dem Server zu erhalten, führt, wobei die Liste eine vorbestimmte Anzahl von Spalten aufweist, so dass bei Empfangen einer Nachricht von einem gegebenen Client aus der Vielzahl von Clients, wobei die Nachricht eine von dem Client übermittelte Anfrage nach Zugriff auf die Anwendung auf dem Server beinhaltet und einen an den gegebenen Client herausgegebenen gegebenen Session-Cookie beinhaltet, der Server dem gegebenen Client als Reaktion auf die Anfrage Zugriff auf die Anwendung nur dann gestattet, wenn die in dem gegebenen Session-Cookie enthaltene Identifizierung auf der Liste erscheint oder wenn zumindest eine der Spalten auf der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen.
- Gemäß einer Ausführungsform der vorliegenden Erfindung wird des Weiteren bereitgestellt ein Computersoftware-Produkt, welches ein maschinen- bzw. computerlesbares Medium aufweist, in dem Programmanweisungen gespeichert sind, wobei die Anweisungen, wenn sie von einem Server gelesen werden, bewirken, dass der Server einen Softwarecode liest, der in codierter Form von einem Software-Händler unter Lizenz an einen Betreiber des Servers zur Verwendung beim Laufen lassen der Softwareanwendung bereitgestellt wird, und eine Lizenzdatei liest, die von dem Software-Händler festgelegte Lizenzbedingungen spezifiziert einschließlich einer Begrenzung auf eine maximale Anzahl von Clients, denen gleichzeitig Zugriff auf die Anwendung auf dem Server gestattet ist, wobei die Anweisungen bewirken, dass der Server die Software-Anwendung laufen lässt durch Decodieren des Softwarecodes unter Verwendung einer Lizenzsteuerungskomponente, welche ermöglicht, dass die Anwendung unter den in der Lizenzdatei spezifizierten Bedingungen läuft, so dass bei Empfang einer Anfrage von einem Client auf Zugriff auf die Anwendung auf dem Server die Lizenzsteuerungskomponente die Anfrage so verarbeitet, dass sie dem Client den Zugriff auf die Anwendung unter Einhaltung der Limitierung auf die maximale Anzahl von Clients gestattet.
- Die vorliegende Erfindung wird im Folgenden anhand von Ausführungsbeispielen weiter erläutert unter Bezugnahme auf die Zeichnungen, in denen
-
1 ein Blockschaltbild ist, das schematisch ein System zum Betreiben einer Client/Server-Anwendung auf einem Netzwerk gemäß einer Ausführungsform der Erfindung darstellt, -
2 eine schematische Darstellung einer in einer Lizenzdatei geführten Zugriffsliste gemäß einer Ausführungsform der vorliegenden Erfindung ist, und -
3 ein Flussdiagramm ist, das schematisch ein Verfahren zum Steuern von Client-Zugriff auf eine auf einem Server laufenden Anwendung gemäß einer Ausführungsform der vorliegenden Erfindung ist. -
1 ist ein Blockdiagramm, das schematisch ein System20 zum Laufen lassen einer Client/Server-Anwendung gemäß einer Ausführungsform der vorliegenden Erfindung ist. In dieser Ausführungsform läuft eine Web-Anwendung28 auf einem Webserver22 . Clients24 haben über ein Netzwerk26 , beispielsweise das Internet, unter Verwendung von Webbrowsern30 und dem Hypertext-Transfer-Protokoll (HTTP) Zugriff auf die Anwendung, wie dies aus dem Stand der Technik bekannt ist. Für den Zweck des vorliegenden Beispiels wird angenommen, dass der Server22 ein Universalrechner ist, bei dem eine Webserver-Software über ein Standardbetriebssystem, wie beispielsweise UNIX (Marke) oder Windows (Marke) läuft, und dass die Anwendung28 in einer geeigneten Scripting-Sprache geschrieben ist, beispielsweise in PHP oder Microsoft (Marke) ASP.NET. Die Grundlagen der vorliegenden Erfindung sind jedoch in gleicher Weise anwendbar, mutatis mutandis, auf andere Arten von netzwerkbasierten Client/Server-Anwendungen, welche Anfrage/Antwort-Protokolle wie HTTP verwenden und auf Server-Anwendungen, die in anderen geeigneten Programmsprachen geschrieben sind. - Die Web-Anwendung
28 wird dem Betreiber des Servers22 von einem außen stehenden Händler unter Lizenz bereitgestellt. Der Softwarecode für die Anwendung28 ist typischerweise in einen Objektcode kompiliert oder ist auf andere Weise durch den Händler codiert und/oder unlesbar gemacht, so dass verhindert wird, dass der Betreiber des Servers oder Dritte den Code manipulieren können. Der Anwendungshändler kann beispielsweise die Anwendung28 unter Verwendung von PHP entwickelt haben und daraufhin die Anwendungssoftware unter Verwendung eines geeigneten Codier-Tools (nicht gezeigt) codiert haben, wie beispielsweise durch den zuvor erwähnten Zend(Marke)-Codierer. Das Codier-Tool setzt zudem ein vorbestimmtes Flag in der codierten Software, welches anzeigt, dass die Software nur dann auf einem Computer laufen darf, wenn sich eine gültige Lizenzdatei34 in dem Computerspeicher befindet. - Um die Anwendung
28 laufen zu lassen, muss der Server22 einen Decoder32 anrufen, beispielsweise den Zend Optimizer (Marke), der dazu geeignet ist, die Software-Anwendung zu dechiffrieren, so dass sie auf dem Server laufen kann. Zusätzlich zum Decodieren des Anwendungscodes dient der Decoder32 als die Lizenzsteuerungskomponente auf dem Server22 . Beim Lesen des Anwendungscodes auf dem Server entdeckt der Decoder32 , dass die Lizenz-Fflag in dem Code gesetzt ist. Als Reaktion auf diese Flag liest der Decoder die Lizenzdatei34 , die eine sichere, digital signierte Datei ist, welche von dem Software-Händler bereitgestellt wird. Die Lizenzdatei spezifiziert Lizenzbedingungen, die von dem Software-Händler zum Zeitpunkt des Verkaufs der Anwendungssoftware festgelegt werden. Nur der Software-Händler kann diese Bedingungen unter Verwendung der geeigneten digitalen Signatur ändern. Die Lizenzdatei spezifiziert, unter anderem, die maximale Anzahl von Clients24 , denen es erlaubt ist, gleichzeitig auf die Anwendung28 zuzugreifen. Typischerweise beinhaltet die Lizenzdatei auch andere, übliche Lizenzbeschränkungen, wie beispielsweise die Identität des Servers22 und das Ablaufdatum der Lizenz. Der Decoder32 beginnt lediglich dann, die Anwendung28 auf dem Server22 laufen zu lassen, wenn er sichergestellt hat, dass die Lizenzdatei34 eine gültige Lizenz enthält. Während die Anwendung28 läuft, erlaubt der Decoder32 nicht mehr Clients den gleichzeitigen Zugriff auf die Anwendung, als von dem Software-Händler spezifiziert wurde, wobei die nachfolgend beschriebenen Mechanismen zur Steuerung des Zugriffs auf die Anwendung verwendet werden. - Wie zuvor festgestellt, umfasst der Server
22 typischerweise einen Universalcomputer, auf dem ein Standardbetriebssystem und eine Webserver-Software installiert sind, über die die Anwendung28 und der Decoder32 laufen. Alternativ kann der Server22 einen Cluster aus mehreren Rechnern bzw. Maschinen umfassen, welche sich die Arbeit des Servers der Clients24 teilen, wie dies aus dem Stand der Technik bekannt ist. Die Software für die Anwendung28 und den Decoder32 sowie die Lizenzdatei34 können beispielsweise über ein Netzwerk in elektronischer Form auf den Server22 herunter geladen werden oder sie können alternativ auf einem materiellen Medium wie einer CD-ROM bereitgestellt werden. Im Falle von mehreren, als Cluster konfigurierten Server-Maschinen kann jede Maschine ihre eigene Lizenzdatei34 haben oder, alternativ, die Lizenzdatei kann in einem gemeinsamen Speicher aufbewahrt werden, beispielsweise in einem gemeinsamen RAM oder auf einer gemeinsamen Festplatte, zu dem bzw. der alle Maschinen Zugang haben. In letzterem Fall können die unterschiedlichen Maschinen die gleiche Quote an Clients teilen, die in der Lizenzdatei vorgesehen ist. -
2 ist eine schematische Darstellung einer Zugriffsliste40 , die auf dem Server22 geführt wird, gemäß einer Ausführungsform der vorliegenden Erfindung. Die Liste40 umfasst mehrere Spalten bzw. freie Stellen (oder Eintragungen)42 ,44 ,46 ,48 ,.... Die Anzahl der Spalten in der Liste ist gleich der maximalen Anzahl von Clients24 , denen es erlaubt ist, gleichzeitig Zugriff auf die Anwendung28 auf dem Server22 zu haben. Jedem Client24 , der um Zugriff auf die Anwendung28 nachsucht, wird eine Identifizierung, typischerweise in Form eines Session-Cookies, zugeteilt, wie im Folgenden genauer beschrieben. Jedes Cookie beinhaltet einen eindeutigen ID-Code. Wenn der Client eine Anfrage nach Zugriff auf die Anwendung28 in Form von beispielsweise einer geeigneten HTTP-Anfrage an den Server22 übermittelt, wird die Anfrage den Session-Cookie beinhalten. Der Decoder32 überprüft die Liste40 , um festzustellen, ob der Cookie-ID-Code in einer der Spalten auftaucht. Falls nicht, sucht der Decoder nach einer freien Spalte in der Liste40 , (beispielsweise Spalte46 mit der voreingestellten ID-Nummer 0000), und platziert den Cookie-ID-Code in dieser Spalte. - Jede Spalte
42 ,44 ,46 ,48 ,..., weist zudem einen Zeitstempel auf, der die Zeit angibt, zu der der Client mit diesem ID-Code zuletzt Zugriff auf die Anwendung28 gehabt hat. Wenn ein Client um Zugriff auf die Anwendung28 nachfragt, kann der Decoder nach einem Eintrag mit einem „abgelaufenen" Zeitstempel, beispielsweise Spalte44 in dem in2 gezeigten Beispiel suchen, falls er die Cookie-ID des Clients in der Liste40 nicht findet und auch keine freie Spalte findet. Er kann dann diesen Eintrag mit der derzeitigen Cookie-ID des Clients überschreiben, so dass der derzeitige Client Zugriff auf die Anwendung hat. Alternativ oder zusätzlich kann der Decoder periodisch Spalten in der Liste40 freimachen, deren Zeitstempel älter sind als ein vorbestimmter Grenzwert. Clients mit abgelaufenem Zeitstempel sind wahrscheinlich zu einer anderen Aktivität übergegangen und verwenden nicht länger die Anwendung28 . Weiterhin kann der Decoder32 , alternativ oder zusätzlich, die entsprechenden Spalten in der Liste40 freimachen, wenn die Clients sich abgemeldet haben, sofern die Anwendung28 es den Clients ermöglicht, sich abzumelden, wenn sie mit der Anwendung fertig sind. -
3 ist ein Flussdiagramm, das schematisch ein Verfahren darstellt, welches von dem Decoder32 beim Steuern des Zugriffs durch Clients24 auf die auf dem Server22 laufende Anwendung28 gemäß einer Ausführungsform der vorliegenden Erfindung verwendet wird. Das Verfahren wird von dem Decoder32 bei einem Client-Anfrageschritt50 immer dann begonnen, wenn einer der Clients24 eine Anfrage nach Zugriff auf die Anwendung28 übermittelt. Im Zusammenhang mit dem Web, wie zuvor erwähnt, erfolgt die Client-Anfrage typischerweise in der Form einer HTTP-Anfrage. Der Decoder32 überprüft die Anfrage, um sicherzustellen, ob sie ein gültiges Session-Cookie enthält, in einem Cookie-Gültigkeitsüberprüfungsschritt52 . Ein derartiges Cookie würde bei einer früheren Zugriffsanfrage an diesen Client herausgegeben worden sein und würde typischerweise eine gültige Cookie-ID aufweisen sowie einen Zeitstempel, der angibt, wenn das Cookie herausgegeben wurde. Wenn der in Schritt52 überprüfte Zeitstempel des Cookies älter ist als ein vorbestimmter Wert, klassifiziert der Decoder dieses Cookie als ungültig. - Wenn die Client-Nachfrage kein gültiges Cookie enthält, besteht die Möglichkeit, dass der Browser
30 dieses Clients nicht dazu konfiguriert ist, Cookies zu unterstützen. Der Decoder32 überprüft, ob dieser Client Cookies unterstützt, typischerweise unter Verwendung von Verfahren der HTTP-Interaktion, wie sie im Folgenden beschrieben werden, in einem Cookie-Unterstützungsverifikationsschritt54 . Angenommen, der Browser30 auf dem Client24 ist so konfiguriert, dass er Cookies unterstützt (oder bis der Server22 in Schritt58 sichergestellt hat, dass dieser Client Cookies nicht unterstützt), dann bewirkt der Decoder32 in einem Cookie-Herausgabeschritt56 , dass ein Session-Cookie an den Client herausgegeben wird. Das Cookie wird durch den Server22 an den Client24 typischerweise in einer HTTP-Antwort herausgegeben, welche zudem den Client dazu veranlasst, eine neue Anfrage nach Zugriff auf die Anwendung28 zu übermitteln. Beispielsweise kann die Antwort bewirken, dass der Client-Browser automatisch eine Aktualisierung der derzeit offenen Seite der Anwendung bewirkt. - Auf jeden Fall verarbeitet der Decoder
32 beim Empfangen der nächsten HTTP-Anfrage von dem Client24 die neue Anfrage im Schritt50 . Wenn ein Client zum ersten Mal versucht, Zugriff auf die Anwendung28 zu bekommen, so dass eine neue Anwendungssession initiiert wird, hat der Client im Allgemeinen kein gültiges Session-Cookie, das er übermitteln kann, und wird, wie zuvor beschrieben, dahin geleitet, bei Schritt56 ein Session-Cookie zu empfangen. Andererseits, nachdem der Client den ersten Interaktions-Zyklus komplettiert und bei Schritt56 einen Cookie empfangen hat, wird der Decoder32 bei nachfolgenden Iterationen durch Schritt52 herausfinden, dass die neue Client-Nachfrage ein gültiges Cookie enthält. In diesem Fall überprüft der Decoder32 die Cookie-ID gegenüber der Liste40 in einem Spaltenüberprüfungsschritt58 . Wenn die Cookie-ID mit dem Eintrag in einer der Spalten42 ,44 ,46 ,48 ,..., übereinstimmt, erlaubt der Decoder32 dem Client den Zugriff auf die Anwendung28 in normaler Art und Weise in einem Anwendungszugriffsschritt60 . - Wenn der Decoder
32 im Schritt58 jedoch feststellt, dass die Liste40 keinen Eintrag aufweist, der zur derzeitigen Cookie-ID passt, versucht er in einem Spaltensuchschritt64 , eine offene Spalte bzw. eine freie Stelle in der Liste zu finden, in die er die Cookie-ID einfügen kann. Wenn eine Spalte gefunden ist, fügt der Decoder32 die Cookie-ID des Clients in einem Spalteneinfügeschritt66 in die Spalte ein und erlaubt in Schritt56 dem Client den Zugriff auf die Anwendung28 . Der Decoder kann in dieser Phase beispielsweise die neue Cookie-ID in die freie Spalte46 (2 ) einfügen. Alternativ, wenn keine freie Spalte vorhanden ist, kann der Decoder die Liste40 nach einer Spalte absuchen, welche einen abgelaufenen Zeitstempel hat, wie beispielsweise die Spalte44 , und kann die in dieser Spalte eingetragene Cookie-ID mit der neuen Cookie-ID (mit dem neuen Zeitstempel) des derzeitigen Clients ersetzen. - Andererseits, wenn der Decoder
32 in Schritt64 feststellt, dass keine Spalten in der Liste40 verfügbar sind, verweigert er dem Client24 den Zugriff auf die Anwendung28 in einem Zugriffsverweigerungsschritt68 . Der Server22 kann an dieser Stelle beispielsweise eine Nachricht in der Form „Anwendung derzeit nicht verfügbar, versuchen Sie es später noch einmal," an den Client24 herausgeben. Alternativ kann der Server bei Anwendungen mit vielen gleichzeitigen Benutzern und kurzen Interaktionszeiten einfach warten, bis eine Spalte verfügbar wird, und dann die Anfrage bedienen. Zwischenzeitlich wartet der Client auf die Antwort des Servers. Als eine weitere Alternative kann der Server22 den Browser30 des Clients24 dazu veranlassen, seine Zugriffsnachfrage automatisch nach einer kurzen Zeitdauer erneut zu wiederholen, bis eine Spalte verfügbar wird. Auf jeden Fall limitiert der Mechanismus der Schritte64 und68 die Anzahl der Clients, die gleichzeitig Zugriff auf die Anwendung28 haben können, auf die Anzahl der Spalten in Liste40 . - Nunmehr wiederum auf Schritt
58 zurückkommend, gibt es verschiedene Verfahren, die verwendet werden können, um festzustellen, dass der Client24 Cookies nicht unterstützt. Wenn ein Client, der bei Schritt50 zunächst Zugriff zur Öffnungsseite der Anwendung28 hat, kein gültiger Session-Cookie präsentiert, kann der Decoder32 nicht dazu in der Lage sein, zu bestimmen, ob der Client Cookies unterstützt oder nicht. Nachdem jedoch ein Session-Cookie bei Schritt56 an den Client herausgegeben wurde und der Client dazu veranlasst wurde, Zugriff zur nächsten Seite der Anwendung28 zu erhalten, ist zu erwarten, dass die Client-Anfrage auf Zugriff zu dieser nächsten Seite ein Session-Cookie enthält. Während daher der Decoder32 Clients erlauben kann, Zugriff zur Öffnungsseite der Anwendung28 ohne die Präsentation eines gültigen Session-Cookies zu erhalten, wird der Decoder darauf schließen, dass dieser Client keine Cookies unterstützt, wenn ein Client-Versuch auf Zugriff zur nächsten Seite der Anwendung ohne ein Session-Cookie erfolgt. Alternativ kann der Decoder32 andere aus dem Stand der Technik bekannte Verfahren verwenden, um festzustellen, ob eine Cookie-Unterstützung stattfindet. - Wenn entdeckt wird, dass ein gegebener Client
24 nicht dazu konfiguriert ist, Cookies zu unterstützen, kann der Decoder32 in dem Zugriffsverweigerungsschritt70 einfach dem Client den Zugriff auf die Anwendung28 verweigern. In diesem Fall kann der Server22 dem Client eine Nachricht schicken, die angibt, dass eine Unterstützung von Cookies erforderlich ist, um Zugriff auf diese Anwendung zu erhalten. - Alternativ kann der Decoder
32 ein anderes Verfahren verwenden, welches keine Cookies erfordert, um die Client-Identifizierung zuzuteilen und dann zu verifizieren. Beispielsweise können die von dem Server22 an den Browser30 gesendeten Web-Seiten analysiert werden, um Links mit eingelagerten URLs aufzufinden, die sich auf die Anwendung28 rückbeziehen. Jede derartige URL wird dann dynamisch von dem Decoder32 modifiziert, um die zugeteilte Client-ID zu beinhalten. Wenn dem Client beispielsweise die ID = 123 zugeteilt wird und die Homepage der Anwendung „foo" Links zu www.foo.com/login.php und www.foo.com/articles.php enthält, können diese URLs wie folgt modifiziert werden, um die ID www.foo.com/login.php?ID=123 und www.foo.com/articles.php?ID=123 zu beinhalten. Wenn ein Benutzer des Clients24 einen der Links anklickt, wird der Browser30 auf dem Client24 eine HTTP-Anfrage mit der modifizierten URL erzeugen. Der Decoder32 liest diese Anfrage, um die Client-ID zu bestimmen, und entscheidet, ob er diesem Client den Zugriff auf die Anwendung28 gestattet. Dieses Verfahren ist mit allen Browsern kompatibel und erfordert keine Cookies. Es kann somit vom Decoder32 bei allen Client-Interaktionen oder, alternativ, nur für diese Clients verwendet werden, die keine Cookies unterstützen. - Zudem kann der Decoder
32 alternativ so konfiguriert sein, dass er nicht Cookie-fähigen Clients den Zugriff auf die Anwendung frei gestattet. Da der Decoder nicht fähig ist, diese Nicht-Cookie-Clients in dem Konzept der Liste40 zu verfolgen, können diese Clients jedoch zusätzlich zu der Anzahl der Spalten in der Liste versorgt werden. Das Verfahren, ob Nicht-Cookie-Clients bedient werden oder nicht, kann von dem Software-Händler der Anwendung als Teil der Lizenzbedingungen in der Lizenzdatei34 festgelegt werden. - Ein weiterer zu beachtender Punkt gemäß dem Verfahren gemäß
3 ist, dass die Herausgabe von Session-Cookies in Schritt56 und die Zuordnung der Cookies zu einer Spalte in Schritt66 in unterschiedlichen, aufeinander folgenden Zyklen des Verfahrens erfolgt. Wenn die Schritte64 und66 unmittelbar nach Schritt56 erfolgen würden, wäre es möglich, dass Cookies, die an nicht Cookie-unterstützende Clients herausgegeben werden, in freie Spalten in der Liste40 eingetragen werden würden. Tatsächlich könnten diese nicht Cookie-unterstützenden Clients mehrfach Zugriff auf die Anwendung28 erhalten und es würden mehrere Cookies herausgegeben, von denen alle in die Liste40 eingetragen werden würden. Die Spalten der Tabelle könnten somit mit unbenutzten Cookies ausgefüllt werden, was zu einem „Verhungern" anderer Clients führen würde. Aus diesem Grund wird bei dem Verfahren gemäß3 jede gegebene Cookie-ID, die von dem Decoder32 herausgegeben wird, nur dann in die Tabelle40 eingegeben, nachdem ein Client tatsächlich den Cookie in einer nachfolgenden Zugriffsanfrage zurückgeschickt hat. - Obwohl die zuvor beschriebenen Ausführungsformen hauptsächlich auf die Web-Umgebung ausgerichtet sind und von Merkmalen des HTTP und von im Stand der Technik bekannten Web-Browsern Gebrauch machen, können die Prinzipien der vorliegenden Erfindung in gleicher Weise zur Steuerung des Zugriffs auf andere Typen von Client/Server-Anwendungen, die dazu in der Lage sind, gleichzeitig mehrere Clients zu bedienen und entsprechende Arten von Anfrage/Antwortmechanismen verwenden, um diese Art der Zugriffskontrolle zu unterstützen, angewandt werden. Es versteht sich daher, dass die zuvor beschriebenen Ausführungsformen als Beispiele gedacht sind und dass die vorliegende Erfindung nicht auf das beschränkt ist, was im Vorstehenden speziell dargestellt und beschrieben ist. Vielmehr umfasst der Umfang der vorliegenden Erfindung sowohl Kombinationen als auch Unterkombinationen der verschiedenen hierin beschriebenen Merkmale, sowie Variationen und Modifikationen hiervon, die sich dem Fachmann beim Lesen der vorstehenden Beschreibung ergeben und die nicht im Stand der Technik offenbart sind.
Claims (66)
- Verfahren zum Steuern von Zugriff auf eine Software-Anwendung (
28 ), mit den folgenden Schritten: Empfangen eines Softwarecodes in einer codierten Form von einem Software-Händler zur Verwendung beim Laufen lassen der Software-Anwendung auf einem Server (22 ); Decodieren des Softwarecodes gemäß den Bedingungen einer von dem Software-Händler festgelegten Lizenz, so dass die Software-Anwendung auf dem Server läuft; Bereitstellen entsprechender Identifizierungen an eine Vielzahl von Clients (24 ), die um Zugriff auf die Anwendung auf dem Server nachsuchen; Führen einer Liste (40 ) der Identifizierungen der Clients, die dazu berechtigt sind, Zugriff auf die Anwendung auf dem Server zu erhalten, wobei die Liste eine Anzahl von Spalten (42 ,44 ,46 ,48 ) umfasst, die durch die Bedingungen der Lizenz festgelegt ist; Empfangen einer von einem gegebenen Client aus der Vielzahl der Clients übermittelten Anfrage nach Zugriff auf die Anwendung auf dem Server, wobei die Anfrage eine an den gegebenen Client herausgegebene gegebene Identifizierung umfasst; und dem gegebenen Client, als Reaktion auf die Anfrage, den Zugriff auf die Anwendung lediglich dann gestatten, wenn die gegebene Identifizierung auf der Liste erscheint oder wenn zumindest eine der Spalten auf der Liste verfügbar ist, um die gegebene Identifizierung auf zunehmen. - Verfahren nach Anspruch 1, wobei die Anzahl der Spalten in einer von dem Software-Händler bereitgestellten Lizenzdatei definiert ist und wobei das Decodieren des Softwarecodes das Decodieren des Softwarecodes unter Verwendung einer Lizenzsteuerungskomponente, welche die Lizenzdatei liest und die Liste der Identifizierungen führt, umfasst.
- Verfahren nach Anspruch 1 oder 2, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert wird.
- Verfahren nach einem der vorstehenden Ansprüche, wobei das Bereitstellen der entsprechenden Identifizierungen das Senden von Cookies zu den Clients über ein Netzwerk umfasst und wobei das Empfangen der Anfrage das Empfangen einer Nachricht von dem gegebenen Client über das Netzwerk umfasst, wobei die Nachricht eines der Cookies umfasst, das an den gegebenen Client herausgegeben wird.
- Verfahren nach Anspruch 4, wobei die Cookies Session-Cookies umfassen.
- Verfahren nach Anspruch 4 oder 5, wobei das Empfangen der Nachricht das Empfangen einer Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
- Verfahren nach einem der Ansprüche 1 – 5, wobei das Empfangen der Anfrage das Empfangen einer Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst und wobei das dem gegebenen Client den Zugriff-auf-die-Anwendung-Gestatten das Senden einer HTTP-Antwort an den Client umfasst.
- Verfahren nach Anspruch 7, wobei das Bereitstellen der entsprechenden Identifizierungen das Erzeugen eines Uniform Resource Locators (URL) umfasst, der die an den gegebenen Client herausgegebene gegebene Identifizierung anzeigt, so dass bewirkt wird, dass der gegebene Client die gegebene Identifizierung in die HTTP-Anfrage einfügt.
- Verfahren nach einem der vorstehenden Ansprüche, wobei das Bereitstellen der entsprechenden Identifizierungen umfasst: Empfangen einer ersten Anfrage von dem gegebenen Client nach Zugriff auf die Anwendung auf dem Server, wobei die erste Anfrage keine gültige Identifizierung beinhaltet; und Herausgeben der gegebenen Identifizierung an den gegebenen Client als Antwort auf die erste Anfrage, wobei das Empfangen der die gegebene Identifizierung umfassenden Anfrage das Empfangen der der ersten Anfrage nachfolgenden zweiten Anfrage von dem gegebenen Client nach Zugriff auf die Anwendung umfasst, wobei die zweite Anfrage die gegebene Identifizierung umfasst.
- Verfahren nach Anspruch 9, wobei das Führen der Liste das Eintragen der gegebenen Identifizierung in eine der Spalten der Liste, wenn zumindest eine der Spalten verfügbar ist, nach Empfangen der zweiten Anfrage umfasst.
- Verfahren nach einem der vorstehenden Ansprüche, wobei das Führen der Liste, wenn festgestellt wird, dass die gegebene Identifizierung nicht in der Liste erscheint, jedoch eine der Spalten in der Liste verfügbar ist, und dem gegebenen Client der Zugriff auf die Anwendung gestattet wird, das Eintragen der gegebenen Identifizierung in eine verfügbare Spalte umfasst.
- Verfahren nach einem der vorstehenden Ansprüche, wobei das dem gegebenen Client den Zugriff-auf-die-Anwendung-Gestatten das dem gegebenen Client den Zugriff-auf-die-Anwendung-Verweigern umfasst, wenn alle Spalten in der Liste von Identifizierungen anderer Clients, die gerade Zugriff auf die Anwendung haben, belegt sind.
- Verfahren nach Anspruch 12, wobei das Führen der Liste das Eintragen von Zeitstempeln, die entsprechende Zeiten anzeigen, zu denen die Clients zuletzt Zugriff auf die Anwendung hatten, in die Spalten umfasst, und wobei das dem gegebenen Client den Zugriff-auf-die-Anwendung-Gestatten das Freimachen einer der Spalten, welche einen abgelaufenen Zeitstempel enthält, und das dem gegebenen Client den Zugriff-auf-die-Anwendung-Gestatten, wobei die gegebene Identifizierung in die eine Spalte, welche freigemacht wurde, eingetragen wird, umfasst.
- Verfahren zum Steuern von Zugriff auf eine Software-Anwendung (
28 ), mit den folgenden Schritten: Laufenlassen der Software-Anwendung auf einem Server (22 ); Herausgeben von entsprechenden Session-Cookies von dem Server an eine Vielzahl von Clients (24 ), die um Zugriff auf die Anwendung auf dem Server nachsuchen, wobei jedes der Session-Cookies eine eindeutige Identifizierung umfasst; Führen einer Liste (40 ) der Identifizierungen der Clients, die berechtigt sind, Zugriff auf die Anwendung auf dem Server zu erhalten, wobei die Liste eine vorbestimmte Anzahl von Spalten (42 ,44 ,46 ,48 ) umfasst; Empfangen einer Nachricht von einem gegebenen Client aus der Vielzahl der Clients auf dem Server, wobei die Nachricht eine von dem Client übermittelte Anfrage auf Zugriff auf die Anwendung auf dem Server umfasst sowie ein an den gegebenen Client herausgegebenes gegebenes Session-Cookie umfasst; und dem gegebenen Client, als Reaktion auf die Anfrage, den Zugriff auf die Anwendung lediglich dann gestatten, wenn die in dem gegebenen Session-Cookie enthaltene Identifizierung in der Liste erscheint oder wenn zumindest eine der Spalten in der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Verfahren nach Anspruch 14, wobei das Empfangen der Nachricht das Empfangen einer Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
- Verfahren zum Steuern des Zugriffs auf eine Software-Anwendung (
28 ) mit den folgenden Schritten: Bereitstellen der Software-Anwendung unter Lizenz von einem Software-Händler an einen Betreiber eines Servers (22 ), wobei die Anwendung einen in codierter Form bereitgestellten Softwarecode und eine Lizenzdatei (34 ), welche Lizenzbedingungen einschließlich einer Begrenzung auf eine maximale Anzahl von Clients (24 ), denen gleichzeitig Zugriff auf die Anwendung auf den Server gestattet wird, beinhaltet, umfasst; Laufen lassen der Anwendung auf dem Server durch Decodieren des Softwarecodes unter Verwendung einer Lizenzsteuerungskomponente, welche gestattet, dass die Anmeldung unter den in der Lizenzdatei spezifizierten Bedingungen läuft; Empfangen einer Anfrage eines Clients auf Zugriff auf die Anwendung auf dem Server; und Verarbeiten der Anfrage unter Verwendung der Lizenzsteuerungskomponente so, dass dem Client der Zugriff auf die Anwendung unter der Begrenzung auf die maximale Anzahl von Clients gestattet wird. - Verfahren nach Anspruch 16, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert wird.
- Verfahren nach Anspruch 16 oder 17, wobei das Empfangen der Anfrage das Empfangen einer Nachricht umfasst, welche eine von dem Server an den Client herausgegebene Identifizierung umfasst, und wobei das Verarbeiten der Anfrage ein Vergleichen der Identifizierung mit einer Liste von Identifizierungen umfasst, welche auf dem Server geführt wird, wobei die Liste eine Anzahl von Spalten zur Aufnahme der Identifizierungen aufweist, die gleich der maximalen Anzahl der in der Lizenzdatei spezifizierten Clients ist.
- Verfahren gemäß Anspruch 18, wobei das Empfangen der Nachricht das Empfangen einer Hypertext-Transfer-Protokoll (HTTP)-Anfrage umfasst, welche die Identifizierung beinhaltet.
- Verfahren nach Anspruch 19, wobei die Identifizierung ein Session-Cookie umfasst.
- Verfahren nach Anspruch 19, wobei das Laufen lassen der Anwendung das dem Client einen Uniform Resource Locator (URL), der die Identifizierung anzeigt, Senden beinhaltet, so dass bewirkt wird, dass der Client die Identifizierung in die HTTP-Anfrage einfügt.
- Verfahren nach einem der Ansprüche 16 – 21, wobei die maximale Anzahl der Clients beträchtlich geringer ist als die gesamte Anzahl der Clients, die zu unterschiedlichen Zeiten Zugriff auf die Anwendung auf dem Server haben können.
- Server (
22 ) zum Laufen lassen einer Software-Anwendung (28 ), wobei der Server aufweist einen Speicher, der so angeordnet ist, dass ein von einem Software-Händler in codierter Form bereitgestellter Softwarecode zur Verwendung beim Laufen lassen der Software-Anwendung gespeichert wird; und einen Prozessor (32 ), der dazu ausgelegt ist, den Softwarecode gemäß den von dem Software-Händler in einer Lizenz festgelegten Bedingungen zu decodieren, so dass die Softwareanwendung läuft, sowie entsprechende Identifizierungen an eine Vielzahl von Clients (24 ), die um Zugriff auf die Anwendung auf dem Server nachsuchen, bereitzustellen, wobei in dem Speicher eine Liste (40 ) der Identifizierungen der Clients, die dazu berechtigt sind, Zugriff auf die Anwendung auf dem Server zu haben, geführt wird, wobei die Liste eine Anzahl von Spalten (42 ,44 ,46 ,48 ) aufweist, die von den Bedingungen der Lizenz bestimmt sind, wobei der Prozessor weiterhin dazu ausgelegt ist, beim Empfangen einer von einem gegebenen Client aus der Vielzahl von Clients übermittelten Anfrage nach Zugriff auf die Anwendung auf dem Server, wobei die Anfrage eine an den gegebenen Client herausgegebene gegebene Identifizierung umfasst, dem gegebenen Client als Reaktion auf die Anfrage nur dann Zugriff auf die Anwendung zu gestatten, wenn die gegebene Identifizierung in der Liste erscheint oder wenn zumindest eine der Spalten in der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Server gemäß Anspruch 23, wobei der Prozessor dazu ausgelegt ist, basierend auf einer Begrenzung, die in einer von dem Software-Hersteller bereitgestellten Lizenzdatei definiert ist, die Anzahl von Spalten, die in der Liste enthalten sein sollen, zu bestimmen, und den Softwarecode unter Verwendung einer auf dem Prozessor laufenden Lizenzsteuerungssoftwarekomponente, welche die Liste der Identifizierungen führt, zu decodieren.
- Server nach Anspruch 23 oder 24, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und daraufhin von dem Software-Händler codiert ist.
- Server nach einem der Ansprüche 23 – 25, wobei die entsprechenden Identifizierungen Cookies aufweisen, die von dem Prozessor an die Clients über ein Netzwerk gesendet werden, und wobei die Anfrage eine von dem gegebenen Client über das Netzwerk empfangene Nachricht umfasst, und wobei die Nachricht eines der Cookies aufweist, das an den gegebenen Client herausgegeben wurde.
- Server nach Anspruch 26, wobei die Cookies Session-Cookies umfassen.
- Server gemäß Anspruch 26 oder 27, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
- Server nach einem der Ansprüche 23 – 27, wobei die Anfrage eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst und wobei der Prozessor dazu ausgelegt ist, an den Client eine HTTP-Antwort in Übereinstimmung mit der Anwendung zu schicken.
- Server nach Anspruch 29, wobei der Prozessor dazu ausgelegt ist, einen Uniform Resource Locator (URL) zu erzeugen, der die an den gegebenen Client herausgegebene gegebene Identifizierung anzeigt, so dass bewirkt wird, dass der gegebene Client die gegebene Identifizierung in die HTTP-Anfrage einfügt.
- Server gemäß einem der Ansprüche 23 – 30, wobei der Prozessor dazu ausgelegt ist, als Reaktion auf das Empfangen einer ersten Anfrage von dem gegebenen Client auf Zugriff auf die Anwendung auf dem Server, wobei die erste Anfrage keine gültige Identifizierung beinhaltet, an den gegebenen Client die gegebene Identifizierung herauszugeben, und wobei die die gegebene Identifizierung umfassende Anfrage eine der ersten Anfrage folgende, von dem gegebenen Client empfangene zweite Anfrage umfasst.
- Server gemäß Anspruch 31, wobei der Prozessor dazu ausgelegt ist, nach Empfangen der zweiten Anfrage die gegebene Identifizierung in eine der Spalten in der Liste einzufügen, wenn zumindest eine der Spalten verfügbar ist.
- Server gemäß einem der Ansprüche 23 – 32, wobei der Prozessor dazu ausgelegt ist, die gegebene Identifizierung in eine verfügbare Spalte einzufügen, wenn festgestellt wird, dass die gegebene Identifizierung nicht auf der Liste erscheint, jedoch eine der Spalten in der Liste verfügbar ist, und dem gegebenen Client der Zugriff auf die Anwendung gestattet wird.
- Server gemäß einem der Ansprüche 23 – 33, wobei der Prozessor dazu ausgelegt ist, dem gegebenen Client den Zugriff auf die Anwendung zu verweigern, wenn alle Spalten in der Liste durch Identifizierungen von anderen Clients, die gerade Zugriff auf die Anwendung haben, belegt sind.
- Server gemäß Anspruch 34, wobei der Prozessor dazu ausgelegt ist, Zeitstempel in die Spalten einzutragen, welche entsprechende Zeiten angeben, zu denen die Clients zuletzt Zugriff zu der Anwendung hatten und eine der Spalten, welche einen abgelaufenen Zeitstempel enthält, freizumachen, so dass dem gegebenen Client der Zugriff auf die Anwendung erlaubt wird, wobei die gegebene Identifizierung in die eine der Spalten eingegeben wird, die freigemacht wurde.
- Server (
22 ) zum Laufen lassen einer Software-Anwendung (28 ), wobei der Server aufweist: einen Speicher; und einen Prozessor (32 ), der dazu ausgelegt ist, die Software-Anwendung laufen zu lassen, und welcher weiterhin dazu ausgelegt ist, entsprechende Session-Cookies an eine Vielzahl von Clients (24 ), die um Zugriff auf die Anwendung auf dem Server nachsuchen, herauszugeben, wobei jedes der Session-Cookies eine eindeutige Identifizierung enthält, und in dem Speicher eine Liste (40 ) der Identifizierungen der Clients, die berechtigt sind, Zugriff auf die Anwendung auf dem Server zu haben, zu führen, wobei die Liste eine vorbestimmte Anzahl von Spalten (42 ,44 ,46 ,48 ) aufweist, wobei der Prozessor weiterhin dazu ausgelegt ist, beim Empfangen einer Nachricht von einem gegebenen Client aus der Vielzahl der Clients, wobei die Nachricht eine von dem Client übermittelte Anfrage auf Zugriff auf die Anwendung auf dem Server aufweist und ein an den gegebenen Client ausgegebenes gegebenes Session-Cookie aufweist, dem gegebenen Client, als Reaktion auf die Anfrage, Zugriff auf die Anwendung lediglich dann zu gestatten, wenn die in dem gegebenen Session-Cookie enthaltene Identifizierung auf der Liste erscheint oder wenn zumindest eine der Spalten in der Liste verfügbar ist, um die gegebene Identifizierung auf zunehmen. - Server nach Anspruch 36, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
- Server (
22 ) zum Laufen lassen einer Software-Anwendung (28 ), die von einem Software-Händler einem Betreiber des Servers unter Lizenz bereitgestellt wird, wobei der Server aufweist: einen Speicher, der dazu ausgelegt ist, einen von dem Software-Händler in codierter Form bereitgestellten Softwarecode zur Verwendung beim Laufen lassen der Software-Anwendung zu speichern und eine Lizenzdatei (34 ), die von dem Software-Händler festgelegte Lizenzbedingungen spezifiziert einschließlich einer Begrenzung auf eine maximale Anzahl von Clients (24 ), denen gleichzeitig Zugriff auf die Anwendung auf dem Server gestattet wird, zu speichern; und einen Prozessor (32 ), der dazu ausgelegt ist, die Anwendung laufen zu lassen durch Decodieren des Softwarecodes unter Verwendung einer Lizenzsteuerungskomponente, welche erlaubt, dass die Anwendung unter den in der Lizenzdatei spezifizierten Bedingungen läuft, so dass bei Empfangen einer Anfrage von einem Client auf Zugriff auf die Anwendung auf dem Server der Prozessor die Anfrage unter Verwendung der Lizenzsteuerungskomponente verarbeitet, um dem Client den Zugriff auf die Anwendung unter der Beschränkung auf die maximale Anzahl von Clients zu gestatten. - Server gemäß Anspruch 38, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert ist.
- Server gemäß Anspruch 38 oder 39, wobei die von dem Client empfangene Anfrage eine Nachricht umfasst, welche eine von dem Prozessor an den Client herausgegebene Identifizierung umfasst, und wobei der Prozessor dazu ausgelegt ist, die Identifizierung mit einer Liste von Identifizierungen, die in dem Speicher geführt wird, zu vergleichen, um festzustellen, ob dem Client der Zugriff auf die Anwendung gestattet wird, wobei die Liste eine Anzahl von Spalten zur Aufnahme von Identifizierungen aufweist, die gleich der maximalen Anzahl von Clients ist, die in der Lizenzdatei spezifiziert ist.
- Server gemäß Anspruch 40, wobei die Nachricht eine die Identifizierung enthaltende Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
- Server gemäß Anspruch 41, wobei die Identifizierung ein Session-Cookie umfasst.
- Server gemäß Anspruch 41, wobei der Prozessor dazu ausgelegt ist, dem Client einen eindeutigen Uniform Resource Locator (URL) zu senden, der die Identifizierung anzeigt, so dass bewirkt wird, dass der Client die Identifizierung in die HTTP-Anfrage einfügt.
- Server gemäß einem der Ansprüche 38 – 43, wobei die maximale Anzahl der Clients wesentlich geringer ist als die gesamte Anzahl der Clients, die zu unterschiedlichen Zeiten Zugriff zu der Anwendung auf dem Server haben können.
- Computersoftware-Produkt, welches ein computerlesbares Medium umfasst, in dem Programmanweisungen gespeichert sind, wobei die Anweisungen, wenn sie von einem Server (
22 ) gelesen werden, bewirken, dass der Server einen von einem Software-Händler in codierter Form bereitgestellten Softwarecode zur Verwendung beim Laufen lassen einer Software-Anwendung (28 ) liest, und den Softwarecode unter den Bedingungen einer von dem Software-Händler festgelegten Lizenz decodiert, um die Software-Anwendung laufen zu lassen, wobei die Anweisungen weiterhin bewirken, dass der Server einer Vielzahl von Clients (24 ), die um Zugriff auf die Anwendung auf dem Server nachsuchen, entsprechende Identifizierungen bereitstellt, wobei eine Liste (40 ) der Identifizierungen der Clients, die berechtigt sind, Zugriff auf die Anwendung auf dem Server zu haben, geführt wird, wobei die Liste eine Anzahl von Spalten (42 ,44 ,46 ,48 ) aufweist, die durch die Bedingungen der Lizenz festgelegt ist, so dass beim Empfangen einer von einem gegebenen Client aus der Vielzahl der Clients übermittelten Anfrage auf Zugriff zu der Anwendung auf dem Server, wobei die Anfrage eine an den gegebenen Client herausgegebene gegebene Identifizierung umfasst, der Server als Reaktion auf die Anfrage dem gegebenen Client den Zugriff auf die Anwendung nur dann gestattet, wenn die gegebene Identifizierung in der Liste erscheint oder wenn zumindest eine der Spalten in der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Produkt gemäß Anspruch 45, wobei die Anweisungen bewirken, dass der Server die Anzahl der Spalten, welche die Liste aufzuweisen hat, basierend auf einer in der Lizenzdatei, die von dem Software-Händler bereitgestellt ist, definierten Begrenzung bestimmt, und den Softwarecode unter Verwendung einer auf dem Server laufenden Lizenzsoftwarekomponente, die die Liste der Identifizierungen führt, decodiert.
- Produkt gemäß Anspruch 45 oder 46, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert ist.
- Produkt gemäß einem der Ansprüche 45 – 47, wobei die entsprechenden Identifizierungen Cookies umfassen, welche von dem Server über ein Netzwerk an die Clients gesendet werden, und wobei die Anfrage eine von dem gegebenen Client über das Netzwerk empfangene Nachricht umfasst und wobei die Nachricht eines der Cookies umfasst, das an den gegebenen Client herausgegeben ist.
- Produkt gemäß Anspruch 48, wobei die Cookies Session-Cookies umfassen.
- Produkt gemäß Anspruch 48 oder 49, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
- Produkt gemäß einem der Ansprüche 45 – 49, wobei die Anfrage eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst und wobei die Anweisungen bewirken, dass der Server in Übereinstimmung mit der Anwendung eine HTTP-Antwort an den Client verschickt.
- Produkt gemäß Anspruch 51, wobei die Anweisungen bewirken, dass der Server einen Uniform Resource Locator (URL) erzeugt, der die an den gegebenen Client herausgegebene gegebene Identifizierung anzeigt, so dass bewirkt wird, dass der gegebene Client die gegebene Identifizierung in die HTTP-Anfrage einfügt.
- Produkt gemäß einem der Ansprüche 45 – 52, wobei die Anweisungen bewirken, dass der Server als Reaktion auf das Empfangen einer ersten Anfrage von dem gegebenen Client auf Zugriff auf die Anwendung auf dem Server, wobei die erste Anfrage keine gültige Identifizierung beinhaltet, die gegebene Identifizierung an den gegebenen Client herausgibt, und wobei die die Identifizierung enthaltende Anfrage eine zweite Anfrage umfasst, welche, nach der ersten Anfrage, von dem gegebenen Client empfangen wird.
- Produkt gemäß Anspruch 53, wobei die Anweisungen bewirken, dass der Server nach Empfangen der zweiten Anfrage die gegebene Identifizierung in eine der Spalten in der Liste einträgt, wenn zumindest eine der Spalten verfügbar ist.
- Produkt gemäß einem der Ansprüche 49 – 54, wobei die Anweisungen bewirken, dass der Server, wenn festgestellt wird, dass die gegebene Identifizierung nicht in der Liste erscheint, jedoch eine der Spalten in der Liste verfügbar ist, und wenn dem gegebenen Client Zugriff auf die Anwendung gestattet wird, die gegebene Identifizierung in die verfügbare Spalte einfügt.
- Produkt gemäß einem der Ansprüche 49 – 55, wobei die Anweisungen bewirken, dass der Server dem gegebenen Client den Zugriff auf die Anwendung verweigert, wenn alle Spalten in der Liste besetzt sind von den Identifizierungen von anderen Clients, die gerade Zugriff auf die Anwendung haben.
- Produkt gemäß Anspruch 56, wobei die Anweisungen bewirken, dass der Server Zeitstempel in die Spalten einträgt, welche entsprechende Zeiten anzeigen, zu denen die Clients zuletzt Zugriff zu der Anwendung hatten, und eine der Spalten, die einen abgelaufenen Zeitstempel enthält, freimacht, um zu erlauben, dass dem gegebenen Client Zugriff auf die Anwendung gestattet wird, wobei die gegebene Identifizierung in diejenige Spalte eingetragen wird, die freigemacht wurde.
- Computersoftware-Produkt, umfassend ein computerlesbares Medium, in dem Programmanweisungen gespeichert sind, wobei die Anweisungen, wenn sie von einem Server (
22 ) gelesen werden, bewirken, dass der Server eine Software-Anwendung (28 ) laufen lässt und entsprechende Session-Cookies an eine Vielzahl von Clients (24 ), die um Zugriff auf die Anwendung auf dem Server nachsuchen, herausgibt, wobei jedes der Session-Cookies eine eindeutige Identifizierung umfasst, wobei die Anweisungen ferner bewirken, dass der Server in dem Speicher eine Liste (40 ) der Identifizierungen der Clients, die berechtigt sind, Zugriff zu der Anwendung auf dem Server zu haben, führt, wobei die Liste eine vorbestimmte Anzahl von Spalten (42 ,44 ,46 ,48 ) aufweist, so dass bei Empfangen einer Nachricht von einem gegebenen Client aus der Vielzahl der Clients, wobei die Nachricht eine von dem Client übermittelte Anfrage auf Zugriff auf die Anwendung auf dem Server umfasst und ein gegebenes Session-Cookie, das an den gegebenen Client herausgegeben wurde, umfasst, der Server, als Reaktion auf die Anfrage, dem gegebenen Client den Zugriff auf die Anwendung nur erlaubt, wenn die Identifizierung, die in dem gegebenen Session-Cookie enthalten ist, in der Liste auftaucht oder wenn zumindest eine der Spalten in der Liste verfügbar ist, um die gegebene Identifizierung aufzunehmen. - Produkt gemäß Anspruch 58, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
- Computersoftware-Produkt, umfassend ein computerlesbares Medium, in dem Programmanweisungen gespeichert sind, wobei die Anweisungen, wenn sie von einem Server (
22 ) gelesen werden, bewirken, dass der Server einen Softwarecode liest, der von einem Software-Händler in codierter Form unter Lizenz einem Betreiber eines Servers zur Verwendung beim Laufen lassen einer Software-Anwendung (28 ) bereitgestellt wurde, und eine Lizenzdatei (34 ) liest, welche von dem Software-Händler festgelegte Lizenzbedingungen spezifiziert einschließlich einer Begrenzung auf eine maximale Anzahl von Clients (24 ), denen gleichzeitig Zugriff auf die Anwendung auf dem Server gestattet wird, wobei die Anweisungen bewirken, dass der Server die Software-Anwendung laufen lässt durch Decodieren des Softwarecodes unter Verwendung einer Lizenzsteuerungskomponente, welche erlaubt, dass die Anwendung unter den in der Lizenzdatei spezifizierten Bedingungen läuft, so dass beim Empfangen einer Anfrage von einem Client auf Zugriff auf die Anwendung auf dem Server die Lizenzsteuerungskomponente die Anfrage so verarbeitet, dass sie dem Client den Zugriff auf die Anwendung unter der Begrenzung auf die maximale Anzahl der Clients gestattet. - Produkt gemäß Anspruch 60, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert ist.
- Produkt gemäß Anspruch 60 oder 61, wobei die von dem Client empfangene Anfrage eine Nachricht umfasst, welche eine Identifizierung umfasst, die von dem Prozessor an den Client herausgegeben wurde, und wobei die Anweisungen bewirken, dass der Server die Identifizierung mit einer Liste von Identifizierungen, die in dem Speicher geführt wird, vergleicht, um zu bestimmen, ob dem Client der Zugriff auf die Anwendung gestattet wird, wobei die Liste eine Anzahl von Spalten zum Aufnehmen der Identifizierungen aufweist, die gleich der maximalen Anzahl von Clients ist, welche in der Lizenzdatei spezifiziert ist.
- Produkt gemäß Anspruch 62, wobei die Nachricht eine Hpyertext-Transfer-Protokoll(HTTP)-Anfrage umfasst, welche die Identifizierung aufweist.
- Produkt gemäß Anspruch 63, wobei die Identifizierung ein Session-Cookie aufweist.
- Produkt gemäß Anspruch 63, wobei die Anweisungen bewirken, dass der Server dem Client einen Uniform Resource Locator (URL) sendet, der die Identifizierung anzeigt, so dass bewirkt wird, dass der Client die Identifizierung in die HTTP-Anfrage einfügt.
- Produkt gemäß einem der Ansprüche 60 – 65, wobei die maximale Anzahl der Clients wesentlich geringer ist als eine Gesamtanzahl von Clients, die zu unterschiedlichen Zeiten Zugriff auf die Anwendung auf dem Server haben können.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/639,837 US20050050319A1 (en) | 2003-08-12 | 2003-08-12 | License control for web applications |
US10/639,837 | 2003-08-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102004038566A1 true DE102004038566A1 (de) | 2005-04-14 |
Family
ID=33030195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102004038566A Withdrawn DE102004038566A1 (de) | 2003-08-12 | 2004-08-06 | Lizenzsteuerung für Web-Anwendungen |
Country Status (3)
Country | Link |
---|---|
US (1) | US20050050319A1 (de) |
DE (1) | DE102004038566A1 (de) |
GB (1) | GB2405239A (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1407358B1 (de) * | 2001-06-06 | 2006-07-26 | Yahoo! Inc. | System und verfahren zum steuern des zugriffs auf digitalen inhalt einschliesslich streaming-medien |
US7815100B2 (en) * | 2004-04-30 | 2010-10-19 | Research In Motion Limited | System and method of owner application control of electronic devices |
WO2005106658A1 (en) * | 2004-04-26 | 2005-11-10 | Google Inc. | Methods and systems for dynamically composing distributed interactive applications from high-level programming languages |
US20060167982A1 (en) * | 2005-01-07 | 2006-07-27 | Apple Computer, Inc. | Restricted media sharing over networks |
US20100071070A1 (en) * | 2005-01-07 | 2010-03-18 | Amandeep Jawa | Managing Sharing of Media Content From a Server Computer to One or More of a Plurality of Client Computers Across the Computer Network |
US20060287959A1 (en) * | 2005-06-17 | 2006-12-21 | Macrovision Corporation | Software license manager employing license proofs for remote execution of software functions |
US8745223B2 (en) * | 2005-10-14 | 2014-06-03 | Psion Inc. | System and method of distributed license management |
US8045958B2 (en) | 2005-11-21 | 2011-10-25 | Research In Motion Limited | System and method for application program operation on a wireless device |
US8332906B2 (en) * | 2006-02-27 | 2012-12-11 | Research In Motion Limited | Method of customizing a standardized IT policy |
US8024439B2 (en) * | 2006-03-17 | 2011-09-20 | Microsoft Corporation | Server session management application program interface and schema |
US7912762B2 (en) | 2006-03-31 | 2011-03-22 | Amazon Technologies, Inc. | Customizable sign-on service |
US20070230415A1 (en) * | 2006-03-31 | 2007-10-04 | Symbol Technologies, Inc. | Methods and apparatus for cluster management using a common configuration file |
US20080134348A1 (en) * | 2006-12-05 | 2008-06-05 | Microsoft Corporation | Conditional policies in software licenses |
JP5053044B2 (ja) | 2007-11-13 | 2012-10-17 | ソニー株式会社 | 非水電解質二次電池 |
EP2388725B1 (de) * | 2010-05-21 | 2017-01-11 | SFNT Germany GmbH | Verfahren zur Steuerung der Ausführung einer Anwendung auf einem Computersystem |
JP5701715B2 (ja) * | 2011-08-12 | 2015-04-15 | 株式会社東芝 | エネルギー管理装置、電力管理システムおよびプログラム |
CN103078881B (zh) * | 2011-10-26 | 2016-05-11 | 腾讯科技(深圳)有限公司 | 网络资源下载信息的分享控制系统和方法 |
US9762613B2 (en) * | 2012-01-09 | 2017-09-12 | Bomgar Corporation | Method and apparatus for providing extended availability of representatives for remote support and management |
US10397233B2 (en) | 2015-04-20 | 2019-08-27 | Bomgar Corporation | Method and apparatus for credential handling |
US10229262B2 (en) | 2015-04-20 | 2019-03-12 | Bomgar Corporation | Systems, methods, and apparatuses for credential handling |
JP6499729B2 (ja) | 2017-07-19 | 2019-04-10 | ファナック株式会社 | アプリケーション販売管理サーバシステム |
US11983252B2 (en) | 2019-12-11 | 2024-05-14 | The Boeing Company | Software license manager security |
US11593463B2 (en) * | 2019-12-11 | 2023-02-28 | The Boeing Company | Execution type software license management |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5390297A (en) * | 1987-11-10 | 1995-02-14 | Auto-Trol Technology Corporation | System for controlling the number of concurrent copies of a program in a network based on the number of available licenses |
US5343526A (en) * | 1992-10-30 | 1994-08-30 | At&T Bell Laboratories | Method for establishing licensor changeable limits on software usage |
US6056786A (en) * | 1997-07-11 | 2000-05-02 | International Business Machines Corp. | Technique for monitoring for license compliance for client-server software |
US6061518A (en) * | 1997-11-25 | 2000-05-09 | International Business Machines Corporation | Data processing system and method for debugging a JavaScript program |
US6173446B1 (en) * | 1999-02-02 | 2001-01-09 | Ultimus, Inc. | Apparatus for licensing software applications |
US6453305B1 (en) * | 1999-05-21 | 2002-09-17 | Compaq Computer Corporation | Method and system for enforcing licenses on an open network |
US6824051B2 (en) * | 2001-06-07 | 2004-11-30 | Contentguard Holdings, Inc. | Protected content distribution system |
US6952714B2 (en) * | 2001-10-02 | 2005-10-04 | Citrix Systems, Inc. | Method for distributed program execution with server-based file type association |
US20030182563A1 (en) * | 2002-03-22 | 2003-09-25 | Liu James C. | Method and apparatus for software license verification |
-
2003
- 2003-08-12 US US10/639,837 patent/US20050050319A1/en not_active Abandoned
-
2004
- 2004-08-06 DE DE102004038566A patent/DE102004038566A1/de not_active Withdrawn
- 2004-08-10 GB GB0417768A patent/GB2405239A/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
GB2405239A (en) | 2005-02-23 |
GB0417768D0 (en) | 2004-09-15 |
US20050050319A1 (en) | 2005-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102004038566A1 (de) | Lizenzsteuerung für Web-Anwendungen | |
DE60006451T2 (de) | Verteilte Authentifizierungsmechanismen zur Behandlung von verschiedenen Authentifizierungssystemen in einem Betriebsrechnersystem | |
DE69635469T2 (de) | Synchronisierung zwischen verschiedenen Computeranbieterumgebungen | |
DE69921455T2 (de) | System und verfahren zur zugriffssteuerung auf gespeicherte dokumente | |
DE69733914T2 (de) | Verfahren und Vorrichtung zur dynamischen Klientenauthentifizierung in einem vernetzten Dateiensystem | |
DE69728182T2 (de) | Verfahren und gerät zum entfernten netzwerkzugriffseintrag und netzwerkzugriffsbericht | |
DE102009049674B4 (de) | Segregieren von anonymem Zugriff auf dynamischen Inhalt auf einem Webserver mit gecachedten Anmeldungen | |
DE60130377T2 (de) | Verfahren zur steuerung des zugriffs auf digitalen inhalt und streaming-medien | |
DE69725952T2 (de) | Benutzerkontrollierter Browser | |
DE69818008T2 (de) | Datenzugriffssteuerung | |
DE60309553T2 (de) | Verfahren und Vorrichtungen zur Gesamtbenutzung eines Netzwerkbetriebsmittels mit einem Benutzer ohne Zugang | |
DE69633564T2 (de) | Zugangskontrolle und überwachungssystem für internetserver | |
DE602005004214T2 (de) | Kommunikationssystem and Verfahren zur Aktualisierung von Software in einem Endbenutzergerät | |
DE60116903T2 (de) | Gesicherte sitzungverwaltung und authentifizierung für websites | |
DE60014341T2 (de) | Server, der die automatische einfügung von daten in elektronische formulare auf einem nutzer-computer ermöglicht | |
DE60319056T2 (de) | Methode und Gerät zur Bereitstellung von Informationen und Diensten bei Verhinderung des Missbrauchs derselben | |
DE69834579T2 (de) | Http- sitzung- überwachung | |
DE10144023B4 (de) | Vorrichtung und Verfahren zur automatischen Benutzerprofil-Konfiguration | |
DE10116640B4 (de) | Auf URL beruhende Token für schwierige Verteilungen, die einen serverseitigen Cookiebehälter benutzen | |
DE112015005024T5 (de) | Öffnen lokaler Anwendungen von Browsern | |
DE10213505A1 (de) | Verfahren und System zur globalen Beschränkung des Zugangs von Klienten zu einer gesicherten Website | |
DE202011110893U1 (de) | Verwaltung mehrfacher Anmeldungen über einen Einzelbrowser | |
DE112013007160T5 (de) | Entwicklungsumgebungssystem, Entwicklungsumgebungsvorrichtung, Entwicklungsumgebungsbereitstellungsverfahren und Programm | |
DE102005015830A1 (de) | System zum Verwalten einer Vorrichtung | |
DE10052313A1 (de) | Verfahren und Vorrichtung zur Beschränkung des freien Verweisens (Hyperlinking) auf Webseiten der ursprünglichen Inhaltserzeuger (Content producers) durch Internet-Inhaltsverteiler (Content distributors) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8139 | Disposal/non-payment of the annual fee |