DE102004038566A1 - Lizenzsteuerung für Web-Anwendungen - Google Patents

Lizenzsteuerung für Web-Anwendungen Download PDF

Info

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
Application number
DE102004038566A
Other languages
English (en)
Inventor
Zeev Suraski
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.)
Zend Technologies Ltd
Original Assignee
Zend Technologies Ltd
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 Zend Technologies Ltd filed Critical Zend Technologies Ltd
Publication of DE102004038566A1 publication Critical patent/DE102004038566A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer 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 System 20 zum Laufen lassen einer Client/Server-Anwendung gemäß einer Ausführungsform der vorliegenden Erfindung ist. In dieser Ausführungsform läuft eine Web-Anwendung 28 auf einem Webserver 22. Clients 24 haben über ein Netzwerk 26, beispielsweise das Internet, unter Verwendung von Webbrowsern 30 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 Server 22 ein Universalrechner ist, bei dem eine Webserver-Software über ein Standardbetriebssystem, wie beispielsweise UNIX (Marke) oder Windows (Marke) läuft, und dass die Anwendung 28 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 Servers 22 von einem außen stehenden Händler unter Lizenz bereitgestellt. Der Softwarecode für die Anwendung 28 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 Anwendung 28 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 Lizenzdatei 34 in dem Computerspeicher befindet.
  • Um die Anwendung 28 laufen zu lassen, muss der Server 22 einen Decoder 32 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 Decoder 32 als die Lizenzsteuerungskomponente auf dem Server 22. Beim Lesen des Anwendungscodes auf dem Server entdeckt der Decoder 32, dass die Lizenz-Fflag in dem Code gesetzt ist. Als Reaktion auf diese Flag liest der Decoder die Lizenzdatei 34, 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 Clients 24, denen es erlaubt ist, gleichzeitig auf die Anwendung 28 zuzugreifen. Typischerweise beinhaltet die Lizenzdatei auch andere, übliche Lizenzbeschränkungen, wie beispielsweise die Identität des Servers 22 und das Ablaufdatum der Lizenz. Der Decoder 32 beginnt lediglich dann, die Anwendung 28 auf dem Server 22 laufen zu lassen, wenn er sichergestellt hat, dass die Lizenzdatei 34 eine gültige Lizenz enthält. Während die Anwendung 28 läuft, erlaubt der Decoder 32 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 Anwendung 28 und der Decoder 32 laufen. Alternativ kann der Server 22 einen Cluster aus mehreren Rechnern bzw. Maschinen umfassen, welche sich die Arbeit des Servers der Clients 24 teilen, wie dies aus dem Stand der Technik bekannt ist. Die Software für die Anwendung 28 und den Decoder 32 sowie die Lizenzdatei 34 können beispielsweise über ein Netzwerk in elektronischer Form auf den Server 22 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 Lizenzdatei 34 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 Zugriffsliste 40, die auf dem Server 22 geführt wird, gemäß einer Ausführungsform der vorliegenden Erfindung. Die Liste 40 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 Clients 24, denen es erlaubt ist, gleichzeitig Zugriff auf die Anwendung 28 auf dem Server 22 zu haben. Jedem Client 24, der um Zugriff auf die Anwendung 28 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 Anwendung 28 in Form von beispielsweise einer geeigneten HTTP-Anfrage an den Server 22 übermittelt, wird die Anfrage den Session-Cookie beinhalten. Der Decoder 32 überprüft die Liste 40, um festzustellen, ob der Cookie-ID-Code in einer der Spalten auftaucht. Falls nicht, sucht der Decoder nach einer freien Spalte in der Liste 40, (beispielsweise Spalte 46 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 Anwendung 28 gehabt hat. Wenn ein Client um Zugriff auf die Anwendung 28 nachfragt, kann der Decoder nach einem Eintrag mit einem „abgelaufenen" Zeitstempel, beispielsweise Spalte 44 in dem in 2 gezeigten Beispiel suchen, falls er die Cookie-ID des Clients in der Liste 40 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 Liste 40 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 Anwendung 28. Weiterhin kann der Decoder 32, alternativ oder zusätzlich, die entsprechenden Spalten in der Liste 40 freimachen, wenn die Clients sich abgemeldet haben, sofern die Anwendung 28 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 Decoder 32 beim Steuern des Zugriffs durch Clients 24 auf die auf dem Server 22 laufende Anwendung 28 gemäß einer Ausführungsform der vorliegenden Erfindung verwendet wird. Das Verfahren wird von dem Decoder 32 bei einem Client-Anfrageschritt 50 immer dann begonnen, wenn einer der Clients 24 eine Anfrage nach Zugriff auf die Anwendung 28 übermittelt. Im Zusammenhang mit dem Web, wie zuvor erwähnt, erfolgt die Client-Anfrage typischerweise in der Form einer HTTP-Anfrage. Der Decoder 32 überprüft die Anfrage, um sicherzustellen, ob sie ein gültiges Session-Cookie enthält, in einem Cookie-Gültigkeitsüberprüfungsschritt 52. 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 Schritt 52 ü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 Decoder 32 ü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ützungsverifikationsschritt 54. Angenommen, der Browser 30 auf dem Client 24 ist so konfiguriert, dass er Cookies unterstützt (oder bis der Server 22 in Schritt 58 sichergestellt hat, dass dieser Client Cookies nicht unterstützt), dann bewirkt der Decoder 32 in einem Cookie-Herausgabeschritt 56, dass ein Session-Cookie an den Client herausgegeben wird. Das Cookie wird durch den Server 22 an den Client 24 typischerweise in einer HTTP-Antwort herausgegeben, welche zudem den Client dazu veranlasst, eine neue Anfrage nach Zugriff auf die Anwendung 28 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 Client 24 die neue Anfrage im Schritt 50. Wenn ein Client zum ersten Mal versucht, Zugriff auf die Anwendung 28 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 Schritt 56 ein Session-Cookie zu empfangen. Andererseits, nachdem der Client den ersten Interaktions-Zyklus komplettiert und bei Schritt 56 einen Cookie empfangen hat, wird der Decoder 32 bei nachfolgenden Iterationen durch Schritt 52 herausfinden, dass die neue Client-Nachfrage ein gültiges Cookie enthält. In diesem Fall überprüft der Decoder 32 die Cookie-ID gegenüber der Liste 40 in einem Spaltenüberprüfungsschritt 58. Wenn die Cookie-ID mit dem Eintrag in einer der Spalten 42, 44, 46, 48,..., übereinstimmt, erlaubt der Decoder 32 dem Client den Zugriff auf die Anwendung 28 in normaler Art und Weise in einem Anwendungszugriffsschritt 60.
  • Wenn der Decoder 32 im Schritt 58 jedoch feststellt, dass die Liste 40 keinen Eintrag aufweist, der zur derzeitigen Cookie-ID passt, versucht er in einem Spaltensuchschritt 64, 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 Decoder 32 die Cookie-ID des Clients in einem Spalteneinfügeschritt 66 in die Spalte ein und erlaubt in Schritt 56 dem Client den Zugriff auf die Anwendung 28. Der Decoder kann in dieser Phase beispielsweise die neue Cookie-ID in die freie Spalte 46 (2) einfügen. Alternativ, wenn keine freie Spalte vorhanden ist, kann der Decoder die Liste 40 nach einer Spalte absuchen, welche einen abgelaufenen Zeitstempel hat, wie beispielsweise die Spalte 44, 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 Schritt 64 feststellt, dass keine Spalten in der Liste 40 verfügbar sind, verweigert er dem Client 24 den Zugriff auf die Anwendung 28 in einem Zugriffsverweigerungsschritt 68. Der Server 22 kann an dieser Stelle beispielsweise eine Nachricht in der Form „Anwendung derzeit nicht verfügbar, versuchen Sie es später noch einmal," an den Client 24 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 Server 22 den Browser 30 des Clients 24 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 Schritte 64 und 68 die Anzahl der Clients, die gleichzeitig Zugriff auf die Anwendung 28 haben können, auf die Anzahl der Spalten in Liste 40.
  • Nunmehr wiederum auf Schritt 58 zurückkommend, gibt es verschiedene Verfahren, die verwendet werden können, um festzustellen, dass der Client 24 Cookies nicht unterstützt. Wenn ein Client, der bei Schritt 50 zunächst Zugriff zur Öffnungsseite der Anwendung 28 hat, kein gültiger Session-Cookie präsentiert, kann der Decoder 32 nicht dazu in der Lage sein, zu bestimmen, ob der Client Cookies unterstützt oder nicht. Nachdem jedoch ein Session-Cookie bei Schritt 56 an den Client herausgegeben wurde und der Client dazu veranlasst wurde, Zugriff zur nächsten Seite der Anwendung 28 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 Decoder 32 Clients erlauben kann, Zugriff zur Öffnungsseite der Anwendung 28 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 Decoder 32 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 Decoder 32 in dem Zugriffsverweigerungsschritt 70 einfach dem Client den Zugriff auf die Anwendung 28 verweigern. In diesem Fall kann der Server 22 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 Server 22 an den Browser 30 gesendeten Web-Seiten analysiert werden, um Links mit eingelagerten URLs aufzufinden, die sich auf die Anwendung 28 rückbeziehen. Jede derartige URL wird dann dynamisch von dem Decoder 32 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 Clients 24 einen der Links anklickt, wird der Browser 30 auf dem Client 24 eine HTTP-Anfrage mit der modifizierten URL erzeugen. Der Decoder 32 liest diese Anfrage, um die Client-ID zu bestimmen, und entscheidet, ob er diesem Client den Zugriff auf die Anwendung 28 gestattet. Dieses Verfahren ist mit allen Browsern kompatibel und erfordert keine Cookies. Es kann somit vom Decoder 32 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 Liste 40 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 Lizenzdatei 34 festgelegt werden.
  • Ein weiterer zu beachtender Punkt gemäß dem Verfahren gemäß 3 ist, dass die Herausgabe von Session-Cookies in Schritt 56 und die Zuordnung der Cookies zu einer Spalte in Schritt 66 in unterschiedlichen, aufeinander folgenden Zyklen des Verfahrens erfolgt. Wenn die Schritte 64 und 66 unmittelbar nach Schritt 56 erfolgen würden, wäre es möglich, dass Cookies, die an nicht Cookie-unterstützende Clients herausgegeben werden, in freie Spalten in der Liste 40 eingetragen werden würden. Tatsächlich könnten diese nicht Cookie-unterstützenden Clients mehrfach Zugriff auf die Anwendung 28 erhalten und es würden mehrere Cookies herausgegeben, von denen alle in die Liste 40 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 Decoder 32 herausgegeben wird, nur dann in die Tabelle 40 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)

  1. 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.
  2. 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.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert wird.
  4. 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.
  5. Verfahren nach Anspruch 4, wobei die Cookies Session-Cookies umfassen.
  6. Verfahren nach Anspruch 4 oder 5, wobei das Empfangen der Nachricht das Empfangen einer Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. Verfahren nach Anspruch 14, wobei das Empfangen der Nachricht das Empfangen einer Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
  16. 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.
  17. Verfahren nach Anspruch 16, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert wird.
  18. 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.
  19. Verfahren gemäß Anspruch 18, wobei das Empfangen der Nachricht das Empfangen einer Hypertext-Transfer-Protokoll (HTTP)-Anfrage umfasst, welche die Identifizierung beinhaltet.
  20. Verfahren nach Anspruch 19, wobei die Identifizierung ein Session-Cookie umfasst.
  21. 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.
  22. 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.
  23. 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.
  24. 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.
  25. Server nach Anspruch 23 oder 24, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und daraufhin von dem Software-Händler codiert ist.
  26. 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.
  27. Server nach Anspruch 26, wobei die Cookies Session-Cookies umfassen.
  28. Server gemäß Anspruch 26 oder 27, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
  29. 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.
  30. 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.
  31. 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.
  32. 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.
  33. 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.
  34. 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.
  35. 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.
  36. 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.
  37. Server nach Anspruch 36, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
  38. 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.
  39. Server gemäß Anspruch 38, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert ist.
  40. 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.
  41. Server gemäß Anspruch 40, wobei die Nachricht eine die Identifizierung enthaltende Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
  42. Server gemäß Anspruch 41, wobei die Identifizierung ein Session-Cookie umfasst.
  43. 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.
  44. 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.
  45. 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.
  46. 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.
  47. Produkt gemäß Anspruch 45 oder 46, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert ist.
  48. 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.
  49. Produkt gemäß Anspruch 48, wobei die Cookies Session-Cookies umfassen.
  50. Produkt gemäß Anspruch 48 oder 49, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
  51. 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.
  52. 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.
  53. 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.
  54. 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.
  55. 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.
  56. 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.
  57. 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.
  58. 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.
  59. Produkt gemäß Anspruch 58, wobei die Nachricht eine Hypertext-Transfer-Protokoll(HTTP)-Anfrage umfasst.
  60. 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.
  61. Produkt gemäß Anspruch 60, wobei der Softwarecode in einer Scripting-Sprache geschrieben ist und dann durch den Software-Händler codiert ist.
  62. 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.
  63. Produkt gemäß Anspruch 62, wobei die Nachricht eine Hpyertext-Transfer-Protokoll(HTTP)-Anfrage umfasst, welche die Identifizierung aufweist.
  64. Produkt gemäß Anspruch 63, wobei die Identifizierung ein Session-Cookie aufweist.
  65. 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.
  66. 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.
DE102004038566A 2003-08-12 2004-08-06 Lizenzsteuerung für Web-Anwendungen Withdrawn DE102004038566A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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