DE112015005024T5 - Öffnen lokaler Anwendungen von Browsern - Google Patents

Öffnen lokaler Anwendungen von Browsern Download PDF

Info

Publication number
DE112015005024T5
DE112015005024T5 DE112015005024.8T DE112015005024T DE112015005024T5 DE 112015005024 T5 DE112015005024 T5 DE 112015005024T5 DE 112015005024 T DE112015005024 T DE 112015005024T DE 112015005024 T5 DE112015005024 T5 DE 112015005024T5
Authority
DE
Germany
Prior art keywords
application
file
user
local
list
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.)
Pending
Application number
DE112015005024.8T
Other languages
English (en)
Inventor
Jessie Lynne Newman
Frank Pape
Ali Akhavan Bitaghsir
Brian Schneider
James Michael McCollum
Eric Huayu Zhang
Rachel Werner Barton
Marc Miller
Rishi Sharma
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE112015005024T5 publication Critical patent/DE112015005024T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • 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/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Es werden hier Systeme und Verfahren zum Öffnen lokaler Anwendungen von Browsern offenbart. Von einem Nutzer wird eine Anforderung zum Öffnen eines Dokuments, das einem Cloud-Computing-System zugeordnet ist, empfangen. Es wird eine Bestimmung vorgenommen, dass die lokale Vorrichtung eine Kopie des Dokuments besitzt, und es wird eine lokale Anwendung zum Öffnen der lokalen Kopie ausgewählt. Es wird eine Nachricht zum Öffnen der lokalen Kopie mit der ausgewählten lokalen Anwendung gesendet.

Description

  • Querverweis auf verwandte Anmeldungen
  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Anmeldung lfd. Nr. 62/075.825, eingereicht am 5. November 2014, und der US-Anmeldung lfd. Nr. 14/547.086, eingereicht am 18. November 2014, deren beider Inhalte hier durch Bezugnahme vollständig mit aufgenommen sind.
  • Gebiet der Erfindung
  • Allgemein bezieht sich diese Offenbarung auf die Verwendung eines Browsers zum Öffnen einer lokalen Datei mit einer lokalen Anwendung.
  • Hintergrund
  • Cloud-basierte Dokumentspeichersysteme bieten Nutzern viele Vorteile, einschließlich des Zugriffs auf Dateien von mehreren Vorrichtungen, der Zusammenarbeit zwischen mehreren Nutzern und der automatischen Synchronisation von Dateien zwischen einer lokalen Vorrichtung und einem Server. Üblicherweise wird auf Dateien in der Cloud unter Verwendung eines von zwei Verfahren zugegriffen. In einem Verfahren werden Dateien in dem Dateisystem der lokalen Vorrichtung gespeichert und mit einem Server synchronisiert. In diesem Fall wird auf die Dateien lokal unter Verwendung des Betriebssystems der lokalen Vorrichtung und lokal installierter Anwendungen zugegriffen. Allerdings sind die einzigen Zugriffsbeschränkungen jene, die dem Betriebssystem zugeordnet sind. Darüber hinaus kann auf die Dateien nur unter Verwendung der lokalen Vorrichtung zugegriffen werden.
  • In einem anderen Verfahren wird ein Browser verwendet, um auf Dateien in der Cloud zuzugreifen. Das Browser-basierte Verfahren ist dadurch vorteilhaft flexibel, dass auf Dateien von irgendeiner Vorrichtung mit Browserfähigkeiten zugegriffen werden kann. Allerdings fehlen Browser-basierten Bearbeitungsanwendungen im Vergleich zu lokal installierten Anwendungen bestimmte Fähigkeiten. Darüber hinaus hängen Browser-basierte Anwendungen von der Netzkonnektivität und von einer hohen Bandbreite ab, um effektiv zu fungieren. In einem Beispiel wird auf eine Datei über einen Browser zugegriffen und wird sie manuell auf eine lokale Vorrichtung heruntergeladen. Der Nutzer muss dann manuell durch das Dateisystem der lokalen Vorrichtung navigieren, um die Datei unter Verwendung einer lokal installierten Anwendung zu öffnen. Der Prozess ist nicht nur unhandlich für den Nutzer, sondern führt außerdem nicht einmal dazu, dass die bearbeitete Datei mit dem Server synchronisiert wird.
  • Zusammenfassung
  • Dementsprechend werden hier Systeme und Verfahren beschrieben, um die Kommunikation zwischen einem Browser, einem Sync-Client und einer lokalen Anwendung zu ermöglichen. In bestimmten Aspekten beziehen sich die hier beschriebenen Systeme und Verfahren auf die Verwendung eines Browsers zum Öffnen lokaler Dateien mit lokalen Anwendungen. Von einer ersten Anwendung auf einer lokalen Vorrichtung wird eine Anforderung zum Öffnen eines Dokuments empfangen, das eine Dokumentkennung aufweist und das einer auf einem Server gespeicherten ersten Datei zugeordnet ist. Die Anforderung kann die Dokumentkennung und eine Nutzerkennung umfassen. Es kann bestimmt werden, dass der Dokumentkennung eine zweite Datei zugeordnet ist, die auf der lokalen Vorrichtung gespeichert ist, und es kann bestimmt werden, dass ein Nutzer, dem die Nutzerkennung zugeordnet ist, berechtigt ist, auf die zweite Datei zuzugreifen. Auf der Grundlage der Bestimmung kann an die erste Anwendung eine Liste gesendet werden, wobei die Liste eine oder mehrere Anwendungen umfasst, die auf der lokalen Vorrichtung sind und die die zweite Datei öffnen können. Von der ersten Anwendung kann eine Angabe einer aus der Liste ausgewählten zweiten Anwendung empfangen werden. Es kann eine Nachricht zum Öffnen der zweiten Datei mit der zweiten Anwendung gesendet werden.
  • Ein Sync-Client kann einen oder mehrere der oben beschriebenen Schritte des Auslesens, Bestimmens und Sendens ausführen. Der Sync-Client kann mit einem Vermittler-Proxy kommunizieren, der die Anforderung an den Sync-Client sendet, die Liste von dem Sync-Client empfängt und die Angabe an den Sync-Client sendet. Der Vermittler-Proxy kann auf der Grundlage von Formatierungsanforderungen für den Sync-Client und für die erste Anwendung die Anforderung und/oder die Liste und/oder die Angabe ändern.
  • Eine Inhaltsdatei kann eine Liste von Kennungen lokaler Anwendungen speichern, die mehreren lokalen Anwendungen entsprechen, die auf der lokalen Vorrichtung installiert sind und die bei dem Sync-Client registriert sind. Die Nachricht zum Öffnen der zweiten Datei kann eine Anwendungskennung umfassen, die der zweiten Anwendung zugeordnet ist. Es kann bestimmt werden, ob die Anwendungskennung in der Inhaltsdatei enthalten ist.
  • Das Bestimmen, ob der Nutzer berechtigt ist, auf die zweite Datei zuzugreifen, kann einen oder mehrere der folgenden Schritte umfassen. Es kann ein erster Hash empfangen werden, der auf der Grundlage wenigstens eines Pre-Shared Keys berechnet wird. Durch die erste Anwendung und auf der Grundlage des wenigstens einen Pre-Shared Keys kann ein zweiter Hash berechnet werden. Der erste Hash kann mit dem zweiten Hash verglichen werden. Falls der erste Hash zu dem zweiten Hash passt, kann der Nutzer berechtigt werden, auf die zweite Datei zuzugreifen.
  • Der erste und der zweite Hash können jeweils wenigstens teilweise auf der Grundlage eines Einmalschlüssels berechnet werden. Die Anforderung und/oder die Liste und/oder die Angabe können Eingangs- oder Ausgangs-Standarddatenströme enthalten, die der ersten Anwendung zugeordnet sind. Die zweite Datei kann aus einer Kopie der ersten Datei erstellt werden. Die erste Anwendung kann ein Browser oder eine dem Browser zugeordnete Browsererweiterung sein. Der Nutzer kann die eine oder die mehreren Anforderungen über den Browser bereitstellen. Die Liste kann nur dann an die erste Anwendung gesendet werden, wenn die zweite Datei mit der ersten Datei synchronisiert wird.
  • Bei einer lokalen Vorrichtung kann eine Anforderung von einem Nutzer zum Öffnen eines Dokuments, das eine Dokumentkennung besitzt und dem eine auf einem Server gespeicherte erste Datei zugeordnet ist, empfangen werden. Die Anforderung kann die Dokumentkennung und eine dem Nutzer zugeordnete Nutzerkennung umfassen. Die angeforderte Dokumentkennung und Nutzerkennung können an eine erste Anwendung auf der lokalen Vorrichtung gesendet werden. Von der ersten Anwendung kann eine Liste empfangen werden, wobei die Liste eine oder mehrere Anwendungen, die auf der lokalen Vorrichtung sind, umfasst. Von dem Nutzer kann eine Angabe einer zweiten Anwendung, die aus der Liste ausgewählt wird, empfangen werden. An die erste Anwendung kann eine Nachricht gesendet werden, wobei die Nachricht die Dateikennung und eine der zweiten Anwendung zugeordnete Kennung umfasst.
  • Das in dem obigen Absatz beschriebene Empfangen und/oder Senden kann eine dritte Anwendung ausführen. Die dritte Anwendung kann ein Browser oder eine dem Browser zugeordnete Browsererweiterung sein. Die dritte Anwendung kann mit einem Vermittler-Proxy kommunizieren, der die Anforderung an die dritte Anwendung sendet, von der dritten Anwendung die Liste empfängt und die Angabe an die dritte Anwendung sendet. Der Vermittler-Proxy kann die Anforderung und/oder die Liste und/oder die Angabe auf der Grundlage von Formatierungsanforderungen für die dritte Anwendung und für die erste Anwendung ändern.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockschaltplan eines Cloud-Computing-Dienstes in Übereinstimmung mit einer veranschaulichenden Implementierung;
  • 2 ist ein Blockschaltplan einer lokalen Vorrichtung in Kommunikation mit einem Server über ein Netz in Übereinstimmung mit einer veranschaulichenden Implementierung;
  • 3 ist ein Blockschaltplan einer lokalen Vorrichtung in Kommunikation mit einem Netz in Übereinstimmung mit einer veranschaulichenden Implementierung;
  • 4 zeigt eine Nutzerschnittstelle eines Cloud-Computing-Dienstes in Übereinstimmung mit einer veranschaulichenden Implementierung;
  • 5 ist ein Ablaufplan eines durch einen Browser ausgeführten Verfahrens zum Kommunizieren mit einer lokalen Anwendung zum Öffnen einer lokalen Datei in Übereinstimmung mit einer veranschaulichenden Implementierung;
  • 6 ist ein Ablaufplan eines durch einen Browser und durch einen Sync-Client ausgeführten Verfahrens zum Bestimmen, dass sie beide dasselbe Nutzerkonto präsentieren, in Übereinstimmung mit einer veranschaulichenden Implementierung; und
  • 7 ist ein Blockschaltplan einer Computervorrichtung zum Ausführen irgendwelcher der hier beschriebenen Prozesse in Übereinstimmung mit einer veranschaulichenden Implementierung.
  • Ausführliche Beschreibung
  • Um ein Gesamtverständnis der Offenbarung zu schaffen, werden nun bestimmte veranschaulichende Beispiele einschließlich eines Systems und eines Verfahrens zum Öffnen lokaler Anwendungen von Browsern beschrieben. Allerdings versteht der Durchschnittsfachmann auf dem Gebiet, dass die hier beschriebenen Systeme und Verfahren nach Bedarf für die Anwendung, die behandelt wird, angepasst und geändert werden können und dass die hier beschriebenen Systeme und Verfahren in anderen geeigneten Anwendungen genutzt werden können und dass solche anderen Hinzufügungen und Änderungen nicht von ihrem Schutzumfang abweichen. Allgemein können die hier beschriebenen computergestützten Systeme eine oder mehrere Komponenten umfassen, die eine oder mehrere Verarbeitungsvorrichtungen wie etwa einen Computer, einen Mikroprozessor, eine Logikvorrichtung oder eine andere Vorrichtung oder einen anderen Prozessor, der bzw. die mit Hardware, Firmware und Software zum Ausführen eines oder mehrerer der hier beschriebenen computergestützten Verfahren konfiguriert ist, enthalten.
  • Das Öffnen lokaler Anwendungen von Browsern ist nützlich, da lokale Anwendungen im Vergleich zu Browser-basierten Anwendungen, die von Servern geliefert werden, erhöhte oder andere Dateibearbeitungsfähigkeiten bereitstellen können. Durch das Öffnen lokaler Anwendungen von Browsern können die Vorteile der Verwendung lokaler Anwendungen verwirklicht werden, während ebenfalls die Vorteile des Speicherns von Dokumenten in Cloud-Diensten verwirklicht werden.
  • 1 zeigt ein Client-Server-System 100, das einen Cloud-Computing-Dienst 101 und eine Anzahl von Clientvorrichtungen 102a102d (allgemein Clientvorrichtung 102) enthält. Der Cloud-Computing-Dienst 101 stellt Cloud-Computing-Dienste für eine Menge von Clientvorrichtungen 102 bereit. Insbesondere kann der Cloud-Computing-Dienst 101 einen oder mehrere Server enthalten, die eine Anzahl von Dateien, auf die durch Clientvorrichtungen 102a102d zugegriffen werden kann, wie etwa ein beispielhaftes Zusammenarbeits-Spreadsheet 103 speichern. Nutzer der Clientvorrichtungen 102 können in dem Cloud-Computing-Dienst 101 gespeicherte Dateien erstellen, bearbeiten, kopieren, gemeinsam nutzen und löschen. Zum Beispiel können die Clientvorrichtungen 102 jeweils einen Web-Browser verwenden, um gleichzeitig auf das Spreadsheet 103 in dem Cloud-Computing-Dienst 101 zuzugreifen. Der Cloud-Computing-Dienst 101 stellt für jede Clientvorrichtung 102 eine lokale Kopie des Spreadsheets 103 bereit, die Nutzer an den Clientvorrichtungen 102 daraufhin betrachten und bearbeiten können. Der Cloud-Computing-Dienst 101 kann die lokalen Kopien des Spreadsheets 103 miteinander und mit einer Kopie des Spreadsheets 103, die auf einem Server in dem Cloud-Computing-Dienst 101 gespeichert ist, synchronisieren. In einem Beispiel werden Bearbeitungen, die hier als Mutationen bezeichnet werden können, die durch die Clientvorrichtung 102a vorgenommen werden, automatisch an den Cloud-Computing-Dienst 101 gesendet und an die anderen Clientvorrichtungen 102b, 102c und 102d gesendet. Auf diese Weise können Mutationen, die durch einen Mitarbeiter vorgenommen werden, von anderen Mitarbeitern sofort gesehen werden. Wie es hier verwendet ist, enthält eine Datei eine Menge digital codierter Bits, die in einem Datenspeichermedium gespeichert sind. Eine Cloud-Datei enthält eine Datei, die auf einem Server gespeichert ist und auf die über ein Netz zugegriffen werden kann. Eine lokale Datei enthält eine Datei, die auf der lokalen Vorrichtung eines Nutzers gespeichert ist. Eine Clientvorrichtung enthält eine lokale Vorrichtung, die in einer Client-Server-Beziehung mit einem Server kommuniziert. Wie es hier verwendet ist, ist ein Dokument Teil eines Cloud-Computing-Dienstes und können ihm mehrere Dateien zugeordnet sein. Zum Beispiel kann eine Cloud-Datei eine Kopie eines auf einem Server gespeicherten Dokuments sein und kann eine lokale Datei eine Kopie desselben auf einer lokalen Vorrichtung gespeicherten Dokuments sein. Allgemein können mehrere Kopien desselben Dokuments gleich sein, wobei sie sich aber unterscheiden können, falls Mutationen, die durch einen Mitarbeiter vorgenommen wurden, noch nicht an andere Mitarbeiter gesendet worden sind. Diese Situation kann auftreten, wenn eine Netzverbindung langsam oder intermittierend ist. Falls die Kopien auf unterschiedlichen Typen von Vorrichtungen wie etwa Vorrichtungen mit unterschiedlichen Betriebssystemen gespeichert sind, können sich mehrere Kopien desselben Dokuments ebenfalls geringfügig unterscheiden. In diesem Fall können verschiedene Kopien geringfügig verschiedene Metadaten aufweisen oder anders codiert sein. Zum Beispiel kann eine Kopie in einem Big-Endian-Format codiert sein und kann eine andere Kopie in einem Little-Endian-Format codiert sein. Diese Formatunterschiede können über mehrere Dateien vorhanden sein, die Kopien desselben Dokuments sind, solange die Substanz der Informationen, die dem Nutzer angezeigt werden, über die Kopien dasselbe ist.
  • Die Clientvorrichtungen 102 können irgendeine Kombination von Desktopcomputern, Laptopcomputern, Tablets, Smartphones, Mobilelektronikvorrichtungen oder irgendeiner anderen Vorrichtung, die über ein Netz mit dem Cloud-Computing-Dienst 101 verbunden sein kann, enthalten. Im System 100 sind nur vier Clientvorrichtungen 102 gezeigt, wobei aber zu verstehen ist, dass irgendeine Anzahl von Clientvorrichtungen 102 irgendeines Typs dafür konfiguriert sein können, mit dem Cloud-Computing-Dienst 101 zu kommunizieren. Der Cloud-Computing-Dienst 101 und die Clientvorrichtungen 102 des Systems 100 können über ein fernes Netz wie etwa das Internet verbunden sein. Die Netzverbindung kann über ein lokales Netz, über ein Weitverkehrsnetz, über ein Ethernet, über ein Glasfasernetz, über ein drahtloses Netz, über ein Zellennetz, über ein Netz des interaktiven Fernsehens, über ein Telephonnetz, über ein drahtloses Datenübertragungssystem, über ein Zweiwegekabelsystem, über ein kundenspezifisches privates oder öffentliches Computernetz, über ein interaktives Kiosk-Netz, über eine Direktverbindung, über ein Satellitennetz oder über irgendeine andere verdrahtete oder drahtlose Verbindung ermöglicht werden.
  • 2 stellt ein beispielhaftes System 200 einer lokalen Vorrichtung 202 in Kommunikation mit einem Server 206 über ein Netz 204 dar. Das System 200 kann zum Öffnen Cloud-basierter Dateien mit lokalen Anwendungen über einen Browser verwendet werden. Zur Klarheit der Darstellung sind in 2 nur eine lokale Vorrichtung 202 und ein Server 206 gezeigt, wobei aber über das Netz 204 allgemein irgendeine Anzahl lokaler Vorrichtungen 202 mit irgendeiner Anzahl von Servern 206 kommunizieren können. Die lokale Vorrichtung 202 kann äquivalent eine der in Bezug auf 1 gezeigten und beschriebenen Clientvorrichtungen 102 sein und der Server 206 kann in einem Cloud-Computing-Dienst wie etwa dem in 1 gezeigten Cloud-Computing-Dienst 101 enthalten sein. Wie in 2 gezeigt ist, enthält der Server 206 eine Datenbank 216, die Cloud-Dateien 218a, 218b, ..., 218m (allgemein Clouddateien 218) speichert. Jede Cloud-Datei 218 kann einem anderen Dokument in dem Cloud-Computing-Dienst 101 zugeordnet sein. Zum Beispiel können die Cloud-Dateien 218a und 218b jeweils verschiedenen Textverarbeitungsdokumenten zugeordnet sein, während die Cloud-Dateien 218m einem Spreadsheet-Dokument wie etwa dem in dem Cloud-Computing-Dienst 101 gespeicherten Spreadsheet-Dokument 103 zugeordnet sein können.
  • Die lokale Vorrichtung 202 enthält eine Datenbank 208, einen Browser 212 und eine Menge lokaler Anwendungen 214a, 214b, ..., 214k (allgemein lokale Anwendung 214). Die Datenbank 208 speichert lokale Dateien 210a, 210b, ..., 210n (allgemein lokale Dateien 210). Den lokalen Dateien 210 können Dokumente in einem Cloud-Computing-Dienst 101 zugeordnet sein oder nicht zugeordnet sein. Wenn den lokalen Dateien 210 Dokumente zugeordnet sind, die in dem Cloud-Computing-Dienst 101 gespeichert sind, kann die Zuordnung einer lokalen Datei zu einem Cloud-Computing-Dienst 101 eine Synchronisation der lokalen Datei mit einer auf einem Server gespeicherten Datei wie etwa einer der Cloud-Dateien 218 enthalten.
  • Die lokalen Anwendungen 214 können Software-Anwendungen sein, die an Dateien eine oder mehrere Operationen ausführen. Beispiele von Operationen, die durch irgendeine der lokalen Anwendungen 214 ausgeführt werden können, enthalten das Öffnen, das Anzeigen, das Bearbeiten, das Empfangen von Bearbeitungen dafür und das Sichern. Der Browser 212 kann dafür konfiguriert sein, über eine oder mehrere Vermittlerkomponenten oder Softwareanwendungen, die die lokalen Anwendungen 214 enthalten oder nicht enthalten können, mit dem Server 206 zu kommunizieren. Insbesondere kann der Browser 212 eine Nutzerschnittstelle anzeigen, so dass ein Nutzer mit Dokumenten in dem Cloud-Computing-Dienst 101 interagieren kann. In einem Beispiel empfängt der Browser 212 eine Nutzereingabe zum Anfordern eines Dokuments, das in dem Cloud-Computing-Dienst 101 gespeichert ist, und zum Ausführen von Operationen an dem Dokument. Das angeforderte Dokument, das in dem Cloud-Computing-Dienst 102 gespeichert ist, kann mit einer der auf der lokalen Vorrichtung 202 gespeicherten lokalen Dateien 210 synchronisiert werden. In Ansprechen auf den Empfang der Nutzereingabe kommuniziert der Browser 212 mit einer der lokalen Anwendungen 214, um für die lokale Anwendung 214 das Ausführen von Operationen an der entsprechenden lokalen Datei 210 anzufordern. Auf diese Weise ermöglicht das System 200 durch das Bereitstellen einer Dateisynchronisation zwischen der lokalen Vorrichtung 202 und dem fernen Server 206, dass ein Nutzer über einen Browser 212 das Ausführen von Operationen an lokalen Dateien 210 mit lokalen Anwendungen 214 anfordert.
  • 3 zeigt ein beispielhaftes System 300, das eine lokale Vorrichtung 302 enthält, die mit einem Netz 304 kommuniziert. Die lokale Vorrichtung 302 kann ähnlich der in Bezug auf 2 gezeigten und beschriebenen lokalen Vorrichtung 202 sein, wobei aber 3 eine genauere Ansicht der Komponenten innerhalb der lokalen Vorrichtung 302 zeigt. Genauer enthält die lokale Vorrichtung 302 eine lokale Datenbank 308, die lokale Dateien 310, einen Browser 312, lokale Anwendungen 314, einen Sync-Client 320, einen Proxy-Prozess 322, eine Browsererweiterung 324, eine Netzschnittstelle 326 und einen Prozessor 328 besitzt. Der Prozessor 328 führt auf der lokalen Vorrichtung 302 Anwendungen, Funktionen, Verfahren und Prozesse wie etwa die Anwendungen 314, den Sync-Client 320, den Proxy-Prozess 322, die Browserweiterung 324 und den Browser 312 aus. Das Netz 304, die Datenbank 308, die lokalen Dateien 310, der Browser 312 und die Anwendungen 314 können in dieser Reihenfolge ähnliche Funktionen wie das Netz 204, die Datenbank 208, die lokalen Dateien 210, der Browser 212 und die Anwendungen 214 ausführen. Die Netzschnittstelle 326 wirkt als ein Vermittler in der Kommunikation zwischen der lokalen Vorrichtung 302 und fernen Betriebsmitteln, auf die über das Netz 304 zugegriffen werden kann. Insbesondere kommunizieren die lokalen Anwendungen 314 und/oder die lokalen Dateien 310 auf der lokalen Vorrichtung 302 über das Netz 304 mit einem Server (wie etwa mit dem Server 206).
  • Wie in 3 gezeigt ist, kommuniziert der Browser 312 über die Browsererweiterung 324, den Proxy-Prozess 322 und den Sync-Client 320 mit lokalen Anwendungen 314. Wie in 3 gezeigt ist, enthält die lokale Vorrichtung 302 nur eine Browsererweiterung 324, einen Proxy-Prozess 322 und einen Sync-Client 320, wobei aber allgemein irgendeine Anzahl dieser Komponenten in der lokalen Vorrichtung 302 enthalten sein können und irgendwelche der hier beschriebenen Funktionen ausführen können. In einem Beispiel führt die Browsererweiterung 324 Aktionen in Ansprechen auf durch den Browser 312 empfangene Nutzeranforderungen aus. Solche Nutzeranforderungen können Anforderungen zum Ausführen von Operationen an Dokumenten in einem Cloud-Dienst wie etwa in dem Cloud-Computing-Dienst 101 enthalten. Die Browsererweiterung 324 kann JA-VASCRIPT-Code oder Code einer ähnlichen Sprache enthalten, der Objekte, Funktionen, Methoden, Unterprogramme, Prozesse oder Betriebssystembefehle aufrufen kann. Die Browsererweiterung 324 kann automatisch installiert werden, wenn der Sync-Client 320 auf der lokalen Vorrichtung 302 installiert wird oder wenn die Browsererweiterung 324 installiert wird. Wie es hier verwendet ist, bezieht sich "Browser" auf eine Softwareanwendung, die Informationen auslesen und anzeigen kann, auf eine Browsererweiterung oder auf irgendeine geeignete Kombination davon. Obwohl der Browser 312 und die Browserweiterung 324 in 3 als zwei getrennte Elemente gezeigt sind, ist zu verstehen, dass der Browser 312 die Browsererweiterung 324 enthalten kann und dass irgendwelche der Funktionen, die hier so beschrieben sind, dass sie durch die Browsererweiterung 324 ausgeführt werden, alternativ oder zusätzlich durch den Browser 312 ausgeführt werden können. Ähnlich kann irgendeine der Funktionen, die hier so beschrieben sind, dass sie durch den Browser 212 ausgeführt werden, stattdessen durch die Browsererweiterung 324 ausgeführt werden.
  • In einigen Beispielen enthält die Kommunikation zwischen irgendwelchen des Browsers 312, der Browsererweiterung 324, des Sync-Clients 320 und der lokalen Anwendungen 314 eine Interprozesskommunikation (IPC). In diesem Fall ermöglicht der Proxy-Prozess 322 die Kommunikation zwischen der Browsererweiterung 324 und dem Sync-Client 320 dadurch, dass er von einem (z. B. von der Browsererweiterung 324 oder von dem Sync-Client 320) empfangene Kombinationen zu dem anderen (z. B. zu dem Sync-Client 320 oder zu der Browsererweiterung 324) weiterleitet. Der Proxy-Prozess 322 ist eine getrennte ausführbare Datei, wobei mehrere Instanzen des Proxy-Prozesses 322 gleichzeitig geöffnet oder ausgeführt werden können. In einigen Beispielen wird eine neue Instanz des Proxy-Prozesses 322 gestartet, wenn JAVASCRIPT in der Browsererweiterung 324 in Ansprechen auf den Empfang einer Nutzeranforderung zum Öffnen eines Dokuments mit einer lokalen Anwendung eine Initiierungsfunktion aufruft. In einigen Beispielen kann eine Instanz des Proxy-Prozesses 322 durch den Browser 312, durch die Browsererweiterung 324, durch JAVASCRIPT in der Browsererweiterung 324 oder durch die Speicherbereinigung zerstört oder beendet werden. Die Speicherbereinigung bezieht sich hier auf eine Routinespeicherwartung, die durch Betriebssysteme, Programme, Prozesse und Anwendungen ausgeführt wird. Gelegentlich kann der Proxy-Prozess 322 eine Kommunikation ändern, bevor er die geänderte Kommunikation weiterleitet. In einem Beispiel ändert der Proxy-Prozess 322 die Kommunikation dadurch, dass er eines oder mehrere der folgenden ausführt: Ändern des Formats der Kommunikation, Hinzufügen von Daten oder Elementen zu der Kommunikation oder Entfernen von Daten oder Elementen von der Kommunikation. Die Kommunikation mit den Proxy-Prozessen 322 kann einen Standardeingabestrom (stdin), einen Standardausgabestrom (stdout) und einen Standardfehlerstrom (stderr) enthalten. Stdin-, stdout- und stderr-Ströme sind Byteströme von Daten zwischen einer Anwendung und ihrer Umgebung. Während standardmäßig der stdin-Strom Tastaturdaten annimmt und der stdout-Strom auf einem Monitor angezeigt wird, können irgendwelche der drei Ströme umgeleitet werden. In einem Beispiel kann der stdin-Strom der Browsererweiterung 324 zu dem Proxy-Prozess 322 umgeleitet werden, so dass die Browsererweiterung 324 eine Eingabe von dem Proxy-Prozess 322 empfängt. Der stdout- und der stderr-Strom der Browsererweiterung 324 können zu dem Proxy-Prozess 322 umgeleitet werden, so dass die Browsererweiterung 324 direkt an den Proxy-Prozess 322 ausgibt. Gleichfalls können irgendwelche des stdin-, des stdout- und des stderr-Stroms des Sync-Clients 320 zu dem Proxy-Prozess 322 geleitet werden. In einigen Beispielen erfolgt die stdin-, stdout- und stderr-Kommunikation in dem Format von JAVASCRIPT OBJECT NOTATION-Zeichenketten (JSON-Zeichenketten) mit vorangestellten Längenbytes oder Wörtern. In diesen Beispielen kann die Browsererweiterung nun serialisierbare JAVASCRIPT-Objekte an den Proxy-Prozess 322 geben und Objekte in einem ähnlichen Format zurückempfangen. In einem anderen Beispiel kann die Kommunikation mit dem Proxy-Prozess 322 die Verwendung einer oder mehrerer Named Pipes enthalten. In einem Beispiel kann die Kommunikation mit dem Proxy-Prozess 322 eine Nachrichtenübergabe enthalten. In einem anderen Beispiel kann vor der Kommunikation zwischen dem Browser 312, der Browsererweiterung 324 und dem Sync-Client 320 eine kryptographische Authentisierung erforderlich sein. In einem anderen Beispiel kann die Kommunikation zwischen dem Browser 312, der Browsererweiterung 324, dem Sync-Client 320 und den lokalen Anwendungen 314 andere Formen der Kommunikation zwischen Anwendungen enthalten. Um diese Kommunikation zu ermöglichen, kann die Browsererweiterung 324 installiert werden, wenn sich ein Nutzer bei dem Sync-Client 320 anmeldet oder auf andere Weise authentisiert. Der Browser 312 kann unter Verwendung des Proxy-Prozesses 322 zum Übergeben von Nachrichten zwischen der Browsererweiterung 324 und dem Sync-Client 320 mit lokalen Anwendungen 314 kommunizieren, um an lokalen Dateien 310 zu arbeiten.
  • In einigen Beispielen wird für die Kommunikation zwischen dem Browser 312, der Browsererweiterung 324 und dem Sync-Client 320 eine Platzhalter-Domain in dem Netz 304 verwendet. In einem Beispiel kann die Platzhalter-Domain bei einem Domain-Namen-System, das auf eine Domain wie etwa localhost (127.0.0.1), die einer lokalen Vorrichtung 302 üblicherweise zugeordnet ist, Bezug nimmt, registriert werden. In diesem Fall kann die lokale Vorrichtung 302 ein Zertifikat enthalten, das Secure-Hypertext-Transfer-Protocol-Anforderungen (HTTPS-Anforderungen) validiert. In diesem Fall kann der Proxy-Prozess 322 nicht verwendet werden.
  • In einigen Beispielen wird für die Kommunikation zwischen dem Browser 312 und dem Sync-Client 320 ein Vollduplexkommunikationsprotokoll wie etwa ein WebSocket-Protokoll verwendet. In einigen Beispielen kann die Browsererweiterung 324 nicht verwendet werden. Die Proxy-Prozesse 322 können als ein Vermittler-Proxy zwischen dem Browser 312 und dem Sync-Client 320 wirken. Die Browsererweiterung 324 kann über eine Messaging-Anwendungsprogrammierschnittstelle (Nachrichten-API) einen JSON-Protokollendpunkt freilegen. In diesem Fall kann eine in dem Browser 312 angezeigte Webseite Nachrichten an den Proxy-Prozess 322 senden und von ihm empfangen, der diese Nachrichten an den Sync-Client 320 und von ihm weiterleitet. Der Browser 312 kann sich mit dem Proxy-Prozess 322 verbinden, ein Port-Objekt festsetzen und eine Benachrichtigung an den Proxy-Prozess 322 senden. Der Browser 312 kann eine WebSocket-Verbindung aufbauen und die WebSocket-Verbindung dem Port-Objekt zuordnen. Auf diese Weise wird die Kommunikation zwischen dem Browser 312 und dem localhost (der Loopback-Netzschnittstelle der lokalen Vorrichtung 302) über die WebSocket-Verbindung behandelt. In diesem Fall können eingehende Nachrichten bei dem Port serialisiert und zu dem WebSocket weitergeleitet werden. Eingehende Nachrichten für den WebSocket können in JSON-Zeichenketten umgesetzt werden und an die Webseite zurückgesendet werden. Durch Verwendung des Proxy-Prozesses 322 zum Senden von Inhalt zwischen der in dem Browser 312 angezeigten Webseite und der unsicheren localhost-WebSocket-Verbindung können Warnungen über gemischten Inhalt, die andernfalls auftreten können, falls sichere Webseiten (wie etwa SSL-signierte Seiten) mit ungesicherten Netzadressen wie etwa localhost kommunizieren, vermieden werden. Solche Warnungen über gemischten Inhalt würden die Kommunikation zwischen dem Browser 312 und der localhost-WebSocket-Verbindung hemmen.
  • In einigen Beispielen kommuniziert der Sync-Client 320 mit den lokalen Anwendungen 314 und mit der Datenbank 308. Insbesondere kann der Sync-Client 320 den lokalen Dateien 310 in der Datenbank 308 zugeordnet sein. Diese Zuordnung kann daraus entstehen, dass der Sync-Client 320 eine Synchronisation der lokalen Dateien 310 in der Datenbank 308 mit Dokumenten in dem Cloud-Computing-Dienst 101 ausführt. In einem Beispiel kann die Synchronisation einer lokalen Datei 310a das Senden und Empfangen von Änderungen an der lokalen Datei 310a in der Weise, dass die lokale Datei 310a eine Kopie einer Cloud-Datei 218a ist, die auf dem Server 206 gespeichert ist, oder in der Weise, dass die Cloud-Datei 218a eine Kopie der lokalen Datei 310a ist, umfassen. Wie in 3 gezeigt ist, sendet der Sync-Client 320 durch Senden einer Anforderung zum Öffnen, zum Anzeigen, zum Bearbeiten oder zum Anzeigen einer Datei Anweisungen zum Öffnen an die lokalen Anwendungen 314.
  • In einigen Beispielen werden die Anwendungen 314 unter Verwendung einer Manifestdatei, die dynamisch erstellt werden kann und in einem Nutzerprofil angeordnet werden kann, wenn der Sync-Client 320 und/oder der Browser 312 initialisiert werden, bei dem Sync-Client 320 registriert. In einem Beispiel kann der Sync-Client 320 nur unter Verwendung der Manifestdatei mit lokalen Anwendungen 314, die bei dem Sync-Client 320 registriert sind, kommunizieren. Durch Registrieren lokaler Anwendungen über eine Manifestdatei kann der Sync-Client 320 die Wahrscheinlichkeit von Verletzungen der Sicherheit, die durch die Ausführung potentiell schädlicher Anwendungen verursacht werden, verringern.
  • 4 zeigt eine beispielhafte Nutzerschnittstelle 400, die zum Managen von Dokumenten, die in einem Cloud-Computing-Dienst 101 gespeichert sind, und um auf sie zuzugreifen verwendet wird. Die Nutzerschnittstelle 400 kann für einen Nutzer in einem Browser 212 auf einer lokalen Vorrichtung 202 bereitgestellt werden. Wie in 4 gezeigt ist, zeigt die Nutzerschnittstelle 400 eine Webseite an, die von einem Server gelieferten Inhalt enthält. Um die Nutzerschnittstelle 400 zu betrachten, kann es erforderlich sein, dass sich ein Nutzer bei einem Authentisierungsserver anmeldet oder authentisiert. Dadurch, dass eine Authentisierung erforderlich ist, kann die Nutzerschnittstelle 400 Inhalt anzeigen, der an den angemeldeten Nutzer angepasst ist, wie etwa eine Menge von Dokumenten 406, die in einem Cloud-Dienst (wie etwa in dem Cloud-Computing-Dienst 101) gespeichert sind und die dem Nutzer zugeordnet sind. In dem in 4 gezeigten Beispiel sind die Dokumente 406a und 406b Textverarbeitungsdokumente, ist das Dokument 406c ein Zeichnungsdokument, ist das Dokument 406d ein Formulardokument, ist das Dokument 406e ein Präsentationsdokument und ist das Dokument 406f ein Spreadsheet-Dokument. Diese Anordnung von Dokumenten ist nicht einschränkend und in der Nutzerschnittstelle 400 können andere Anordnungen oder Typen von Dokumenten als die in 4 gezeigten angezeigt werden, ohne von dem Schutzumfang der vorliegenden Offenbarung abzuweichen. In dem Cloud-Computing-Dienst 101 gespeicherte Dokumente können in Ordnern wie etwa in dem Ordner 408 angeordnet oder enthalten sein. Wenn der Nutzer eine Erstellen-Schaltfläche 410 auswählt, kann ein neues Dokument erstellt werden. Wie in 4 gezeigt ist, enthält die Nutzerschnittstelle 400 eine Anzeige von Ordnern auf dem Cloud-Dienst, die dem Nutzer zugeordnet sind, und eine Anzeige des Inhalts eines Ordners.
  • Gelegentlich ist die lokale Vorrichtung 202 online und mit dem Server 206 verbunden. In diesem Fall kann der Server 206 Kopien der angezeigten Dokumente 406 in der Datenbank 216 speichern. Die Menge angezeigter Dokumente 406 kann einer Menge von Dokumenten entsprechen, die dem Nutzer zugeordnet sind und für die der Server 206 Kopien in der Datenbank 216 besitzt. Während die lokale Vorrichtung 202 online ist, kann der Sync-Client 320 die Datenbank 208 aktualisieren, so dass lokale Kopien der Dokumente in dem Cloud-Computing-Dienst 101 auf der lokalen Vorrichtung 202 unterhalten werden, so dass weiterhin auf die Dokumente zugegriffen werden kann, selbst wenn die lokale Vorrichtung 202 offline ist. Die lokale Vorrichtung 202 kann offline und von dem Server 206 getrennt werden, wie etwa, wenn die lokale Vorrichtung 202 von dem Netz 204 getrennt wird. Dies kann auftreten, wenn die lokale Vorrichtung 202 in einem Gebiet intermittierender Versorgung mit drahtlosem Netz ist oder von einer verdrahteten Netzverbindung ausgesteckt ist. Der Offline-Zustand kann ebenfalls auftreten, wenn die lokale Vorrichtung 202 mit dem Netz 204 verbunden ist, die lokale Vorrichtung 202 und/oder eine der Anwendungen auf der lokalen Vorrichtung 202 aber nicht authentisiert ist, so dass der Server 206 verhindert, dass die lokale Vorrichtung 202 auf den Server 206 zugreifen kann. Wenn die lokale Vorrichtung 202 offline ist, kann die Nutzerschnittstelle 400 weiterhin in der Lage sein, Dokumente 406 anzuzeigen. Die Dokumente 406 können lokalen Dateien 210 entsprechen, die in der Datenbank 208 gespeichert sind und die dem angemeldeten Nutzer zugeordnet sind.
  • Der Nutzer kann die Nutzerschnittstelle 400 verwenden, um ein Dokument 406 zum Öffnen mit einer der lokalen Anwendungen 214 auszuwählen. Insbesondere kann der Nutzer eines der Dokumente 406 auswählen und daraufhin eine Anwendung 214 auswählen, mit der das ausgewählte Dokument 406 geöffnet werden soll. In dem in 4 gezeigten Beispiel hat der Nutzer durch Auswählen des benachbarten Optionsfelds ein Präsentationsdokument 406e ausgewählt. Allgemein können andere Verfahren zum Auswählen eines Dokuments wie etwa durch ein- oder mehrmaliges Anklicken des Namens des gewünschten Dokuments oder durch Ziehen und Ablegen des gewünschten Dokuments an einen spezifizierten Ort verwendet werden. Wie in 4 gezeigt ist, wählt der Nutzer daraufhin durch Auswählen des Menüs 402 eine Anwendung aus und wählt er daraufhin die Option 418 "Öffnen mit" aus.
  • Wenn der Nutzer die Option 418 ausgewählt hat, wird dem Nutzer eine Liste von Anwendungskandidaten 420a und 420b (allgemein Anwendungskandidat 420) dargestellt. Die Liste der Anwendungskandidaten 420 kann darauf beschränkt werden, nur Anwendungen zu enthalten, die dafür konfiguriert sind, Operationen an Dokumenten mit demselben Dateityp wie die ausgewählte Datei 406e auszuführen. Die in 4 gezeigten Anwendungskandidaten 420 enthalten nur eine lokale Anwendung 420A und eine Serveranwendung 420B, wobei aber allgemein irgendeine Anzahl lokaler Anwendungen und/oder Serveranwendungen gezeigt werden können. Gelegentlich können keine lokalen Anwendungen (oder Serveranwendungen) dafür konfiguriert sein, an der ausgewählten Datei zu arbeiten, so dass keine lokalen Anwendungen (oder Serveranwendungen) in der Liste enthalten sind. Der Nutzer kann eine der aufgeführten Anwendungen 420 dafür auswählen, an dem ausgewählten Dokument 406e zu arbeiten.
  • Wie in Bezug auf 4 beschrieben ist, wählt der Nutzer zunächst die Datei 406 und daraufhin die Anwendung 406, die zum Öffnen der ausgewählten Datei zu verwenden ist, aus. In einem anderen Beispiel kann der Nutzer zunächst aus einer Liste von Anwendungen eine Anwendung auswählen und daraufhin ein Dokument auswählen, von dem zu arbeiten die gewählte Anwendung konfiguriert ist. In einem anderen Beispiel kann der Nutzer keine Auswahl einer Anwendung bereitstellen und kann eine Standardanwendung verwendet werden, um die ausgewählten Datei zu öffnen. Wenn die lokale Vorrichtung 202 online ist, kann eine Kopie des ausgewählten Dokuments von einer der Cloud-Dateien 218 in der Serverdatenbank 216 bereitgestellt werden. Alternativ kann eine Kopie des ausgewählten Dokuments von einer der Dateien 214 in der lokalen Datenbank 208 bereitgestellt werden. Wenn die lokale Vorrichtung 202 offline ist, kann eine Kopie des ausgewählten Dokuments von einer der lokalen Dateien 210 in der lokalen Datenbank 208 bereitgestellt werden. Dementsprechend kann der Nutzer mit der Browser-basierten Nutzerschnittstelle 400 unter Verwendung einer lokalen Anwendung auf ein Cloud-basiertes Dokument zugreifen und es bearbeiten. Das Zugreifen auf ein Cloud-basiertes Dokument und dessen Bearbeiten mit einer lokalen Anwendung ermöglichen, dass der Nutzer im Vergleich zu einer Cloud-basierten Anwendung eine erhöhte Funktionalität der lokalen Anwendung nutzt. Die Verwendung lokaler Anwendungen kann ebenfalls eine verbesserte Bearbeitungserfahrung bereitstellen, da die Verwendung einer Cloud-basierten Anwendung zu einer merklichen Latenzzeit führen kann, falls eine Netzverbindung langsam oder intermittierend ist.
  • 5 ist ein Ablaufplan eines beispielhaften Verfahrens 500 zum Öffnen eines Dokuments unter Verwendung einer lokalen Anwendung auf der Grundlage einer Anforderung von einem Nutzer. In Schritt 502 empfängt der Browser 212 von einem Nutzer eine Anforderung zum Öffnen eines Dokuments, das in einem Cloud-Dienst wie etwa in dem Cloud-Computing-Dienst 101 gespeichert ist. Beispiele für angeforderte Dokumente können irgendeines des Dokuments 103 und der Dokumente 406 enthalten. Das angeforderte Dokument kann einer Datei zugeordnet sein, die auf einem Server wie etwa auf dem Server 206 gespeichert ist, wobei Beispiele der zugeordneten Dateien die Cloud-Dateien 218 enthalten können. In einem Beispiel wird die Anforderung durch die wie in Bezug auf 4 beschriebene Nutzerschnittstelle 400 empfangen.
  • Im Entscheidungsblock 504 bestimmt ein Prozessor, der die Browsererweiterung 324 ausführt, wie etwa der Prozessor 328, ob der Sync-Client 320 auf der lokalen Vorrichtung 302 ausgeführt wird. In einigen Beispielen bestimmt der Prozessor 328, ob der Sync-Client auf der lokalen Vorrichtung 302 installiert ist. In einigen Beispielen sieht ein Prozessor in einer Registry, in einer Eigenschaftsliste, in einer Plist, in einer Datenbank, in Präferenzen, in Konfigurationsdateien oder an Dateiorten nach, um zu bestimmen, ob der Sync-Client 320 installiert ist. Falls der Sync-Client 320 nicht installiert ist, geht das Verfahren 500 zu Schritt 506 über, um den Nutzer durch die Installation des Sync-Clients 320 zu führen. Falls der Client 320 andernfalls installiert ist, überspringt das Verfahren 500 den Schritt 506 und geht direkt zu dem Schritt 508 über. In einigen Beispielen führt das Verfahren 500 den Nutzer nicht durch die Installation des Sync-Clients 320 in Schritt 506, sondern endet das Verfahren 500 stattdessen, falls der Sync-Client 320 nicht installiert ist.
  • In Schritt 508 sendet die Browsererweiterung 324 eine Anforderung zum Öffnen des angeforderten Dokuments an den Sync-Client 320. Diese Anforderung kann über einen Proxy-Prozess 322 und/oder über ein WebSocket-Protokoll und/oder über eine Named Pipe und/oder über eine Standardeingabe und/oder über eine Standardausgabe und/oder über einen Standardfehler und/oder über ein Nachrichtenübergabeprotokoll und/oder über eine kryptographische Authentisierung und/oder über andere Mittel zur Kommunikation zwischen Anwendungen an den Sync-Client 320 gesendet werden. Die gesamte Kommunikation zwischen hier beschriebenen Anwendungen wie etwa zwischen irgendeinem des Browsers 312, der Browsererweiterung 324, des Proxy-Prozesses 322, des Sync-Clients 320, der Netzschnittstelle 326, der lokalen Anwendungen 314, der Datenbank 308, anderer Anwendungen auf der lokalen Vorrichtung 202 und ähnlicher Komponenten auf der lokalen Vorrichtung 302 und dem Server 206 können irgendeines der hier beschriebenen Mittel zur Kommunikation zwischen Anwendungen verwenden. Die Anforderung zum Öffnen des angeforderten Dokuments kann eine Kennung des angeforderten Dokuments und eine Kennung des bei dem Cloud-Computing-Dienst 101 angemeldeten Nutzers enthalten.
  • Im Entscheidungsblock 510 authentisieren sich die Browsererweiterung 324 und der Sync-Client 320 miteinander, um zu bestimmen, ob der Nutzer, der über den Browser 312 bei dem Cloud-Computing-Dienst 101 angemeldet ist, derselbe Nutzer ist wie ein Nutzer, der auf die lokalen Dateien 310 über den Sync-Client 320 zuzugreifen berechtigt ist. Diese Bestimmung kann das Bestimmen enthalten, ob der Nutzer, der bei dem Cloud-Computing-Dienst 101 angemeldet ist, und der berechtigte Nutzer des Sync-Clients 320 dasselbe Nutzerkonto repräsentieren. In einigen Beispielen führen der Browser 312 und der Sync-Client 320 eine Authentisierung dadurch aus, dass sie verifizieren, dass die Domain des Nutzerkontos eine erkannte Domain wie etwa google.com ist. In einigen Beispielen findet die Kommunikation zwischen der Browsererweiterung 324 und dem Sync-Client 320 zum Ausführen der Authentisierung über einen Proxy-Prozess 322 statt. In anderen Beispielen ist kein Proxy-Prozess an dieser Kommunikation beteiligt. Diese Authentisierung kann unter Verwendung eines Pre-Shared Keys, einer Kommunikation mit einem Authentisierungsserver oder eines anderen Verfahrens, um zu bestimmen, dass sowohl bei dem Browser 312 als auch bei dem Sync-Client 320 derselbe Nutzer angemeldet ist, ausgeführt werden. Der in 6 dargestellte Authentisierungsprozess kann zum Ausführen der obigen Authentisierung verwendet werden. In einigen Beispielen kann der Schritt 510 nach dem Schritt 514 oder nach dem Schritt 520 stattfinden.
  • Falls der Browser 312 und der Sync-Client 320 nicht dasselbe Nutzerkonto repräsentieren, geht das Verfahren 500 zu Schritt 512 über, um zu enden. In einigen Beispielen kann dem Nutzer über die Nutzerschnittstelle 400 beim Beenden eine Nachricht dargestellt werden. Die Nachricht kann den Grund für die Beendigung enthalten und kann eine oder mehrere Maßnahmen vorschlagen, die der Nutzer ergreifen kann, um sich richtig zu authentisieren. Vorgeschlagene Maßnahmen können das Anmelden bei dem Sync-Client 320 und das Anmelden bei dem Cloud-Computing-Dienst 101 in der Weise, dass dasselbe Nutzerkonto sowohl bei dem Sync-Client 320 als auch bei dem Cloud-Computing-Dienst 101 authentisiert ist, enthalten.
  • Im Entscheidungsblock 514 bestimmt der Prozessor 328, der den Sync-Client 320 ausführt, ob auf der lokalen Vorrichtung 302 eine lokale Kopie des angeforderten Dokuments verfügbar ist. Der Prozessor 328 kann diese Bestimmung dadurch vornehmen, dass er bestimmt, dass eine Datei in der Datenbank 308 wie eine der lokalen Dateien 310 dem angeforderten Dokument in dem Cloud-Computing-Dienst 101 zugeordnet ist. Der Prozessor kann die Dokumentkennung, die in der in Schritt 508 durch den Sync-Client 320 empfangenen übermittelten Anforderung enthalten ist, verwenden, um zu bestimmen, ob eine lokale Kopie verfügbar ist. Eine solche verfügbare lokale Kopie kann mit einer der Cloud-Dateien 218 auf dem Server 206 synchronisiert werden. Alternativ kann die verfügbare lokale Kopie unabhängig davon, ob die lokale Vorrichtung 302 online ist, und unabhängig von der Zeitdauer, die verstrichen ist, seit die lokale Kopie mit einer der Cloud-Dateien 218 auf dem Server 206 synchronisiert worden ist, zuvor mit einer der Cloud-Dateien 218 auf dem Server 206 zu einer früheren Zeit synchronisiert worden sein. In einigen Beispielen kann dem Nutzer eine Benachrichtigung dargestellt werden, dass der Nutzer mit einer lokalen Kopie arbeiten wird, die nicht die aktuellste Version des angeforderten Dokuments sein kann, falls die Zeitdauer, die verstrichen ist, seit die lokale Kopie mit dem Server 206 synchronisiert wurde, eine vorgegebene Schwellenzeitdauer übersteigt. Falls die Zeitdauer den vorgegebenen Schwellenwert übersteigt, kann das Verfahren 500 zum Entscheidungsblock 516 und zum Schritt 522 übergehen, um die neueste Kopie von dem Server 206 herunterzuladen zu versuchen. In einigen Beispielen kann das Verfahren 500 selbst dann zu Schritt 520 übergehen, wenn die Zeitdauer den vorgegebenen Schwellenwert überschreitet.
  • Falls der Prozessor 328, der den Sync-Client 320 ausführt, im Entscheidungsblock 514 bestimmt, dass auf der lokalen Vorrichtung 302 keine lokale Kopie des angeforderten Dokuments verfügbar ist, geht das Verfahren 500 zum Entscheidungsblock 516 über, in dem der Prozessor 328 bestimmt, ob die lokale Vorrichtung 302 online ist. Der Prozessor 328 kann diese Bestimmung dadurch vornehmen, dass er einen Server wie etwa den Server 206 anpingt oder auf andere Weise mit einer Vorrichtung an einem fernen Ort kommuniziert. Falls die lokale Vorrichtung 302 nicht online ist und somit von dem Server 206 getrennt ist, geht das Verfahren zu Schritt 518 über, um zu enden. Beim Beenden kann dem Nutzer über die Nutzerschnittstelle 400 eine Nachricht dargestellt werden. Die Nachricht kann eine Benachrichtigung enthalten, dass auf der lokalen Vorrichtung 302 keine lokale Kopie verfügbar ist und dass die lokale Vorrichtung 302 offline ist, was verhindert, dass eine lokale Kopie von dem Server 206 erhalten wird. In einigen Beispielen geht das Verfahren 500 direkt zu einem geänderten Schritt 524 über, in dem der Sync-Client 320 eine leere Liste lokaler Anwendungen an den Browser sendet, falls der Sync-Client 320 im Entscheidungsblock 514 bestimmt, dass auf der lokalen Vorrichtung 302 keine lokale Kopie des angeforderten Dokuments verfügbar ist.
  • Falls der Sync-Client 320 im Entscheidungsblock 516 bestimmt, dass die lokale Vorrichtung 302 online und somit mit dem Server 206 verbunden ist, geht das Verfahren 500 zu Schritt 522 über, in dem der Sync-Client 320 eine lokale Kopie des angeforderten Dokuments von dem Server 206 auf die lokale Vorrichtung 302 herunterlädt. In einem Beispiel kann die lokale Kopie eine der lokalen Dateien 310 in der Datenbank 308 sein. In einem anderen Beispiel kann die lokale Kopie an einem weniger dauerhaften Ort oder in einem flüchtigen Speicher wie etwa in einem Schreib-Lese-Speicher (RAM) gespeichert sein. Bevor das Verfahren zu Schritt 522 übergeht, kann der Nutzer benachrichtigt werden und aufgefordert werden zu ermöglichen, dass das Verfahren 500 fortgesetzt wird. Wegen einer vorher durch den Nutzer getroffenen Auswahl, das angeforderte Dokument nicht mit der lokalen Vorrichtung 302 zu synchronisieren, kann ursprünglich keine lokale Kopie verfügbar gewesen sein. Alternativ kann ursprünglich keine lokale Kopie verfügbar gewesen sein, falls der Sync-Client 320 in Schritt 502 nicht installiert wurde, sondern erst in Schritt 506 des Verfahrens 500 installiert wurde. Nachdem die lokale Kopie des Dokuments in Schritt 522 von dem Server heruntergeladen worden ist, geht das Verfahren 500 zu Schritt 520 über. Andernfalls bestimmt der Sync-Client 320 im Entscheidungsblock 514, dass eine lokale Kopie des angeforderten Dokuments verfügbar ist, und geht das Verfahren 500 zu Schritt 520 über.
  • In Schritt 520 bestimmt der Sync-Client 320, welche der lokalen Anwendungen 314, wenn überhaupt, in der Lage sind, Operationen an der lokalen Kopie auszuführen. Der Sync-Client 320 kann bestimmen, dass keine, eine oder mehrere lokale Anwendungen 314 zum Ausführen von Operationen an der lokalen Kopie konfiguriert sind. Der Sync-Client kann diese Bestimmung dadurch vornehmen, dass er den Dateityp der lokalen Kopie durch Analysieren der Dokumentkennung, des Dateinamens, der Dateierweiterung, des Anfangsblocks oder anderer Mittel zum Bestimmen des Formats bestimmt und daraufhin mit einer Manifestdatei und/oder einer Registry und/oder einer Eigenschaftsliste und/oder einer Plist und/oder Konfigurationsdateien und/oder Präferenzen und/oder einer Datenbank und/oder anderen Mitteln zur Bestimmung lokaler Anwendungen, die dafür konfiguriert sind, an einem bestimmten Dateityp oder Dateiformat Operationen auszuführen, vergleicht. Der Sync-Client 320 kann bestimmen, dass eine der lokalen Anwendungen 314 eine Standardanwendung zum Öffnen der lokalen Kopie ist.
  • In Schritt 524 sendet der Sync-Client 320 an die Browsererweiterung 324, optional über den Proxy-Prozess 322, eine Liste lokaler Anwendungen, die in der Lage sind, an der lokalen Kopie zu arbeiten. Die Liste kann unter Verwendung von Kennungen der Anwendungen auf keine, auf eine oder auf eine Menge der lokalen Anwendungen 314, die dafür konfiguriert sind, an der lokalen Kopie zu arbeiten, Bezug nehmen. Die Liste kann für jede Anwendung, auf die die Liste Bezug nimmt, die Tatsache, ob die Anwendung die Standardanwendung für Dateien des angeforderten Dateityps ist, und ein Symbol für die Anwendung enthalten.
  • In Schritt 526 stellt die Browsererweiterung 324 dem Nutzer über die Nutzerschnittstelle 400 die Liste der lokalen Anwendungen dar. In einigen Beispielen kann die Browsererweiterung 324 ebenfalls bestimmen, dass eine oder mehrere Serveranwendungen das angeforderte Dokument öffnen können. In diesen Beispielen kann die Browsererweiterung 324 dem Nutzer über die Nutzerschnittstelle 400 eine Liste von Serveranwendungen darstellen. Falls die empfangene Liste keine lokalen Anwendungen enthält, können dem Nutzer keine lokalen Anwendungen dargestellt werden und können ihm nur Serveranwendungen dargestellt werden. Falls keine Serveranwendungen dafür konfiguriert sind, Operationen an dem angeforderten Dokument auszuführen, können nur lokale Anwendungen dargestellt werden. Falls keine lokalen Anwendungen und keine Serveranwendungen dafür konfiguriert sind, Operationen an dem angeforderten Dokument oder an der lokalen Kopie auszuführen, können keine Anwendungen dargestellt werden und endet das Verfahren 500. Dem Nutzer kann eine Benachrichtigung dargestellt werden, dass das angeforderte Dokument nicht geöffnet werden kann.
  • In Schritt 528 wählt der Nutzer eine Anwendung aus der Liste aus. Der Nutzer kann die Auswahl über die Nutzerschnittstelle 400 vornehmen, wie sie in Bezug auf 4 erläutert ist. Anstatt zu fordern, dass der Nutzer eine Anwendung aus der Liste auswählt, kann dem Nutzer eine Option zur Verwendung einer Standardanwendung dargestellt werden. Standardanwendungen können insbesondere für Nutzer, die dieselbe Anwendung häufig zum Öffnen von Dateien ähnlicher Typen verwenden, nützlich sein. Die Standardanwendung für eine spezifische Datei oder für einen spezifischen Dateityp kann auf der Grundlage der vorherigen Auswahl von Anwendungen für diese Datei oder diesen Dateityp eines Nutzers aktualisiert werden.
  • Im Entscheidungsblock 530 bestimmt die Browsererweiterung 324, ob die ausgewählte Anwendung eine lokale Anwendung oder eine Serveranwendung ist. Zum Beispiel kann die Browsererweiterung 324 die ausgewählte Anwendung mit der in Schritt 524 gesendeten Liste von Anwendungen vergleichen, um zu bestimmen, ob die ausgewählte Anwendung eine lokale Anwendung oder eine Serveranwendung ist. Falls die ausgewählte Anwendung eine Serveranwendung ist, geht das Verfahren 500 zu Schritt 532 über, um das angeforderte Dokument unter Verwendung der ausgewählten Serveranwendung zu öffnen. In einem Beispiel kann die ausgewählte Serveranwendung das angeforderte Dokument von einem in dem Cloud-Computing-Dienst 101 enthaltenen Server 206 öffnen, anstatt eine lokale Kopie des angeforderten Dokuments zu öffnen. In einem anderen Beispiel kann die ausgewählte Serveranwendung eine lokale Kopie des angeforderten Dokuments von einer der lokalen Dateien 310 öffnen.
  • Falls die Browsererweiterung 324 im Entscheidungsblock 530 andernfalls bestimmt, dass die ausgewählte Anwendung eine lokale Anwendung ist, geht das Verfahren 500 zu Schritt 534 über, in dem die Browsererweiterung 324 an den Sync-Client 320, optional über den Proxy-Prozess 322, eine Kennung sendet, die der ausgewählten Kennung zugeordnet ist. Außerdem kann die Browsererweiterung 324 eine Kennung des Nutzers, der bei dem Cloud-Computing-Dienst 101 angemeldet ist, wie etwa eine E-Mail-Adresse, und eine Kennung für das angeforderte Dokument senden. Eine Manifestdatei kann Zuordnungen zwischen Anwendungen und Kennungen zur Verwendung in Schritt 534 speichern. In einem Beispiel kann anstelle eines lokalen Pfads, einer ausführbaren Datei oder einer anderen Form eines direkten Befehls eine Kennung gesendet werden, die der ausgewählten Anwendung entspricht. In diesem Beispiel ist die Sicherheit der lokalen Vorrichtung 302 erhöht, da ein lokaler Pfad, eine ausführbare Datei oder ein direkter Befehl verwendet werden können, um die lokale Vorrichtung zu böswilligen Zwecken anzugreifen. Wenn eine der ausgewählten Anwendung zugeordnete Kennung verwendet wird, muss der Sync-Client 320 ebenfalls die Zuordnung besitzen und muss die Anwendung dem Sync-Client 320 bekannt sein, damit der Sync-Client 320 auf der Grundlage der Kennung eine Aktion ausführt. Dies stellt eine zusätzliche Sicherheitsschicht für die lokale Vorrichtung 302 bereit. In anderen Beispielen wird keine Kennung der Anwendung verwendet und wird ein direkteres, aber weniger sicheres Verfahren zur Identifizierung wie etwa ein lokaler Pfad, eine ausführbare Datei oder eine andere Form eines direkten Befehls verwendet.
  • In Schritt 536 sendet der Sync-Client 320 an das Betriebssystem der lokalen Vorrichtung einen Befehl, die ausgewählte lokale Anwendung zum Öffnen der lokalen Kopie des angeforderten Dokuments zu verwenden. In Schritt 536 kann das Betriebssystem die ausgewählte lokale Anwendung bei Bedarf öffnen. Die ausgewählte lokale Anwendung kann eine der Anwendungen 314 sein und die lokale Kopie kann eine der lokalen Dateien 310 sein. In einigen Beispielen kann der Sync-Client 320 den Befehl direkt an die ausgewählte lokale Anwendung senden oder kann sich der Proxy-Prozess 322 am Senden des Befehls beteiligen. In einigen Beispielen enthält der Schritt 536 den Schritt, den Nutzer zu bestätigen aufzufordern, dass der Sync-Client 320 die ausgewählte Anwendung öffnen darf. In einigen Beispielen wird dieses Auffordern ausgeführt, wenn der Sync-Client 320 jede lokale Anwendung das erste Mal öffnet, und wird es in nachfolgenden Fällen, in denen der Sync-Client 320 diese Anwendung öffnet, nicht ausgeführt.
  • In Schritt 538 öffnet die ausgewählte lokale Anwendung die lokale Kopie des angeforderten Dokuments. Falls die ausgewählte lokale Anwendung noch nicht ausgeführt wird, startet die ausgewählte lokale Anwendung vor dem Öffnen der ausgewählten lokalen Kopie. Daraufhin kann der Nutzer die lokale Kopie des Dokuments unter Verwendung der ausgewählten lokalen Anwendung betrachten, bearbeiten und sichern. Irgendwelche durch den Nutzer an dem Dokument vorgenommenen Änderungen können durch den Sync-Client 320 an den Server 206 gesendet werden. Dadurch, dass es zwischen dem Browser 312, der Browsererweiterung 324, dem Sync-Client 320 und den lokalen Anwendungen 314 eine Kommunikation ermöglicht, ermöglicht das System 300, dass eine der lokalen Anwendungen 314 auf der Grundlage einer über die Nutzerschnittstelle 400 empfangenen Anforderung eine der lokalen Dateien 310 öffnet.
  • In einigen Beispielen ist das Verfahren 500 vereinfacht. Der Browser 312 kann in Schritt 502 den Dateityp der Datei bestimmen und den Dateityp in die in Schritt 508 gesendete Anforderung aufnehmen. In diesen Beispielen kann der Schritt 520 das Bestimmen, welche lokalen Anwendungen Dateien des angeforderten Dateityps unabhängig davon, ob eine lokale Kopie vorhanden ist, öffnen können, umfassen. In diesen Beispielen kann der Sync-Client 320 das angeforderte Dokument von einem Server herunterladen, um eine lokale Kopie 310a zu erstellen, wenn die Anwendung in Schritt 528 ausgewählt wird.
  • 6 ist ein Ablaufplan eines von dem System 200 verwendeten beispielhaften Verfahrens 600, um den Nutzer wie etwa in dem wie in Bezug auf 5 beschriebenen Entscheidungsblock 510 zu authentisieren. Die Browsererweiterung 324 und der Sync-Client 320 können das Verfahren 600 verwenden, um zu bestimmen, dass sie denselben Nutzer repräsentieren, und somit, damit der bei dem Browser angemeldete Nutzer Zugriff auf die lokalen Dateien 310 hat.
  • In Schritt 602 authentisiert sich der Nutzer unter Verwendung des Browsers 312 bei dem Cloud-Computing-Dienst 101. Während der Authentisierung kann der Browser 312 einen Pre-Shared Key von einem dem Cloud-Computing-Dienst 101 zugeordneten Server empfangen und kann er außerdem den Pre-Shared Key mit der Browsererweiterung 324 gemeinsam nutzen.
  • In Schritt 604 authentisiert sich der Nutzer bei dem Sync-Client 320. Die Authentisierung bei dem Sync-Client 320 kann Teil der Installation des Sync-Clients 320 sein oder kann mit der Installation des Sync-Clients 320 nicht zusammenhängen. Zum Beispiel kann die Authentisierung beim Start der lokalen Vorrichtung 302, bei einer Authentisierung in Ansprechen auf die Nutzeranforderung für ein Dokument in Schritt 502 des Verfahrens 500, bei einer Authentisierung, wenn die lokale Vorrichtung von Offline zu Online übergeht, oder bei einer Authentisierung zu einem anderen Zeitpunkt stattfinden.
  • In Schritt 606 sendet die Browsererweiterung 324, optional über den Proxy-Prozess 322, eine Anforderung zur Authentisierung an den Sync-Client 320. Während der Authentisierung wird bestimmt, dass sowohl durch die Browsererweiterung 324 als auch durch den Sync-Client 320 dasselbe Nutzerkonto dargestellt wird. Die Anforderung zur Authentisierung kann über irgendwelche der hier beschriebenen Verfahren oder Protokolle, die sich auf die Kommunikation zwischen Anwendungen beziehen, gesendet werden. In einigen Beispielen enthält die Sendung einer Anforderung zur Authentisierung das Senden eines Einmalschlüssels von der Browsererweiterung 324 an den Sync-Client 320.
  • In Schritt 608 berechnet der Sync-Client 320 den Initiierungs-Hash und sendet er den Initiierungs-Hash an die Browsererweiterung 324. In einem Beispiel umfasst das Berechnen eines Initiierungs-Hashs, dass der Sync-Client 320 einen getrennten Einmalschlüssel festsetzt und einen Hash des Folgenden berechnet: eines Einmalschlüssels, der von der Browsererweiterung 324 empfangen wird (wie etwa des Einmalschlüssels, der in Schritt 606 empfangen werden kann); eines getrennten Einmalschlüssels, der durch den Sync-Client 320 festgesetzt wird (wie etwa des getrennten Einmalschlüssels, der in Schritt 608 festgesetzt werden kann); eines "Festsetzungs"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto darstellt, das bei dem Sync-Client 320 angemeldet ist; oder irgendeiner geeigneten Kombination davon. In einem Beispiel sendet der Sync-Client 320 den durch den Sync-Client 320 berechneten Initiierungs-Hash und den durch den Sync-Client 320 festgesetzten Einmalschlüssel an die Browsererweiterung 324.
  • Im Entscheidungsblock 610 berechnet die Browsererweiterung 324 unabhängig einen Initiierungs-Hash und bestimmt sie, ob der durch die Browsererweiterung 324 berechnete Initiierungs-Hash zu dem von dem Sync-Client 320 empfangenen Initiierungs-Hash passt. Die unabhängige Berechnung des Initiierungs-Hashs kann enthalten, dass die Browsererweiterung 324 einen Hash des Folgenden berechnet: eines Einmalschlüssels, der durch die Browsererweiterung 324 festgesetzt wird (wie etwa des Einmalschlüssels, der in Schritt 606 festgesetzt werden kann); eines Einmalschlüssels, der von den Sync-Client 320 empfangen wird (wie etwa des Einmalschlüssels, der in Schritt 608 empfangen werden kann); eines "Festsetzungs"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto repräsentiert, das bei dem Cloud-Computing-Dienst 101 angemeldet ist; oder irgendeiner geeigneten Kombination davon. Nach der unabhängigen Berechnung des Initiierungs-Hashs bestimmt die Browsererweiterung 324, ob der unabhängig berechnete Initiierungs-Hash zu dem von dem Sync-Client 320 empfangenen Initiierungs-Hash passt. Falls der berechnete Initiierungs-Hash nicht zu dem empfangenen Initiierungs-Hash passt, kann dies widerspiegeln, dass nicht sowohl bei dem Sync-Client 320 als auch bei dem Cloud-Computing-Dienst 101 dasselbe Nutzerkonto angemeldet ist. Falls die Browsererweiterung 324 im Entscheidungsblock 610 bestimmt, dass diese zwei Initiierungs-Hashs nicht zusammenpassen, geht das Verfahren zu Schritt 612 über, um zu enden. Bei Beendigung des Verfahrens kann dem Nutzer eine Benachrichtigung dargestellt werden, dass die Authentisierung fehlgeschlagen ist, und können ihm eine oder mehrere Maßnahmen vorgeschlagen werden, die zur richtigen Authentisierung zu ergreifen sind.
  • Im Entscheidungsblock 610 bestimmt die Browsererweiterung 324, ob sowohl bei der Browsererweiterung 324 als auch bei dem Sync-Client 320 derselbe Nutzer angemeldet ist. Um die Sicherheit der lokal gespeicherten Dateien 310 zu verbessern, kann der Sync-Client dieselbe Bestimmung unabhängig vornehmen. Falls der empfangene Initiierungs-Hash im Entscheidungsblock 610 zu dem unabhängig berechneten Initiierungs-Hash passt, geht das Verfahren 600 zu Schritt 614 über, in dem die Browsererweiterung 324 einen Bestätigungs-Hash berechnet und den Bestätigungs-Hash an den Sync-Client 320 sendet. Die Berechnung des Bestätigungs-Hashs kann das Berechnen eines Hashs des Folgenden umfassen: eines durch die Browsererweiterung 324 festgesetzten Einmalschlüssels (wie etwa des Einmalschlüssels, der in Schritt 606 gesendet werden kann); eines Einmalschlüssels, der von dem Sync-Client 320 empfangen wird (wie etwa des Einmalschlüssel, der in Schritt 610 empfangen werden kann); eines "Bestätigen"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto repräsentiert, das bei dem Cloud-Computing-Dienst 101 angemeldet ist; oder irgendeiner geeigneten Kombination davon.
  • Im Entscheidungsblock 616 berechnet der Sync-Client 320 unabhängig einen Bestätigungs-Hash und bestimmt er, ob der durch den Sync-Client 320 berechnete Bestätigungs-Hash zu dem von der Browsererweiterung 324 empfangenen Bestätigungs-Hash passt. Die unabhängige Berechnung des Bestätigungs-Hashs durch den Sync-Client 320 kann umfassen, dass der Sync-Client 320 einen Hash des Folgenden berechnet: eines von der Browsererweiterung 324 empfangenen Einmalschlüssels (wie etwa des Einmalschlüssels, der in Schritt 606 empfangen werden kann); eines durch den Sync-Client 320 festgesetzten Einmalschlüssels (wie etwa des Einmalschlüssels, der in Schritt 608 festgesetzt werden kann); eines "Bestätigungs"-Schlüsselworts; eines Pre-Shared Keys, der das Nutzerkonto darstellt, das bei dem Sync-Client 320 angemeldet ist, oder irgendeiner geeigneten Kombination davon. Nach der unabhängigen Berechnung des Bestätigungs-Hashs durch den Sync-Client 320 bestimmt der Sync-Client, ob der durch den Sync-Client 320 berechnete Bestätigungs-Hash zu dem von der Browsererweiterung 324 empfangenen Bestätigungs-Hash passt. Falls der unabhängig berechnete Bestätigungs-Hash nicht zu dem empfangenen Bestätigungs-Hash passt, kann dies eine Angabe sein, dass nicht sowohl bei dem Sync-Client 320 als auch bei dem Cloud-Computing-Dienst 101 dasselbe Nutzerkonto angemeldet ist. Wenn das der Fall ist, geht das Verfahren 600 zu Schritt 618 über, um zu enden. Bei Beendigung des Verfahrens kann dem Nutzer eine Benachrichtigung dargestellt werden, dass die Authentisierung fehlgeschlagen ist, und können ihm eine oder mehrere Maßnahmen empfohlen werden, um sich richtig zu authentisieren.
  • Falls der Sync-Client 320 im Entscheidungsblock 616 andernfalls bestimmt, dass der von der Browsererweiterung 324 empfangene Bestätigungs-Hash zu dem durch den Sync-Client 320 unabhängig berechneten Bestätigungs-Hash passt, geht das Verfahren 600 zu Schritt 620 über, um die Authentisierung abzuschließen. Dadurch, dass diese Authentisierung ausgeführt wird, verifizieren der Sync-Client 320 und die Browsererweiterung 324 beide unabhängig, dass sie dasselbe Nutzerkonto repräsentieren, wodurch sichergestellt wird, dass nur berechtigte Nutzer auf lokal gespeicherte Dateien zugreifen können. Um die Detektion, ob die Browsererweiterung 324 oder der Sync-Client 320 gefährdet worden sind, zu verbessern, ist es vorteilhaft, dass sowohl die Browsererweiterung 324 als auch der Sync-Client 320 diese Verifizierung unabhängig ausführen. Allerdings kann eine unabhängige Verifizierung sowohl durch die Browsererweiterung 324 als auch durch den Sync-Client 320 zeitaufwändig und unnötig ineffizient sein. Somit kann nur eine dieser Komponenten die Verifizierung ausführen und an die andere Komponente eine Nachricht senden, die angibt, dass die Authentisierung abgeschlossen ist, was die Notwendigkeit, dass die andere Komponente eine getrennte Verifizierung ausführt, beseitigt.
  • 7 ist ein Blockschaltplan einer Computervorrichtung wie etwa irgendeiner der Komponenten des Systems aus 13 zum Ausführen irgendeines der hier beschriebenen Prozesse. Jede der Komponenten dieser Systeme kann in einer oder in mehreren Computervorrichtungen 700 implementiert sein. In bestimmten Aspekten können innerhalb einer Computervorrichtung 700 mehrere der Komponenten dieser Systeme enthalten sein. In bestimmten Implementierungen können eine Komponente und eine Datenspeichervorrichtung über mehrere Computervorrichtungen 700 implementiert sein.
  • Die Computervorrichtung 700 enthält wenigstens eine Kommunikationsschnittstelleneinheit, einen Eingabe/Ausgabe-Controller 710, einen Systemspeicher und eine oder mehrere Datenspeichervorrichtungen. Der Systemspeicher enthält wenigstens einen Schreib-Lese-Speicher (RAM 702) und wenigstens einen Nur-Lese-Speicher (ROM 704). Alle diese Elemente stehen in Verbindung mit einer Zentraleinheit (CPU 706), um den Betrieb der Computervorrichtung 700 zu ermöglichen. Die Computervorrichtung 700 kann auf viele verschiedene Arten konfiguriert sein. Zum Beispiel kann die Computervorrichtung 700 ein herkömmlicher Einplatzcomputer sein oder können die Funktionen der Computervorrichtung 700 alternativ über mehrere Computersysteme und Computerarchitekturen verteilt sein. Alternativ kann ein Computersystem virtualisiert sein, um die Funktionen mehrerer Computervorrichtungen 700 bereitzustellen. In 7 ist die Computervorrichtung 700 über ein Netz oder über ein lokales Netz mit anderen Servern oder Systemen verknüpft.
  • Die Computervorrichtung 700 kann in einer verteilten Architektur konfiguriert sein, wobei Datenbanken und Prozessoren in getrennten Einheiten oder an getrennten Orten aufgenommen sind. Einige Einheiten führen primäre Verarbeitungsfunktionen aus und enthalten mindestens einen allgemeinen Controller oder einen Prozessor und einen Systemspeicher. In Implementierungen einer verteilten Architektur kann jede dieser Einheiten über die Kommunikationsschnittstelleneinheit 708 an einen Kommunikations-Hub oder Kommunikations-Port (nicht gezeigt) angeschlossen sein, der als eine primäre Kommunikationsverbindung mit anderen Servern, mit anderen Client- oder Nutzercomputern und mit anderen verwandten Vorrichtungen dient. Der Kommunikations-Hub oder Kommunikations-Port kann selbst minimale Verarbeitungsfähigkeit aufweisen, wobei er primär als ein Kommunikationsrouter dient. Eine Vielzahl von Kommunikationsprotokollen, einschließlich, aber nicht beschränkt auf: Ethernet, SAP, SASTM, ATP, BLUETOOTHTM, GSM und TCP/IP, können Teil des Systems sein.
  • Die CPU 706 enthält einen Prozessor wie etwa einen oder mehrere herkömmliche Mikroprozessoren und einen oder mehrere ergänzende Coprozessoren wie etwa Mathematikcoprozessoren zum Verringern der Arbeitsbelastung der CPU 706. Die CPU 706 steht in Verbindung mit der Kommunikationsschnittstelleneinheit 708 und mit dem Eingabe/Ausgabe-Controller 710, über den die CPU 706 mit anderen Vorrichtungen wie etwa anderen Servern, Nutzerendgeräten oder Vorrichtungen kommuniziert. Die Kommunikationsschnittstelleneinheit 708 und der Eingabe/Ausgabe-Controller 710 können mehrere Kommunikationskanäle für die gleichzeitige Kommunikation z. B. mit anderen Prozessoren, Servern oder Clientendgeräten enthalten.
  • Außerdem steht die CPU 706 in Verbindung mit einer Datenspeichervorrichtung. Die Datenspeichervorrichtung kann eine geeignete Kombination aus magnetischem, optischem oder Halbleiterspeicher enthalten und kann z. B. RAM 702, ROM 704, ein Flash-Laufwerk, eine optische Platte wie etwa eine Compact Disc oder eine Festplatte oder ein Festplattenlaufwerk enthalten. Die CPU 706 und die Datenspeichervorrichtung können sich jeweils z. B. vollständig innerhalb eines einzelnen Computers oder einer anderen Computervorrichtung befinden; oder können durch ein Kommunikationsmedium wie etwa einen USB-Anschluss, ein serielles Anschlusskabel, ein Koaxialkabel, ein Ethernet-Kabel, eine Telephonleitung, einen Funkfrequenztransceiver oder ein anderes ähnliches drahtloses oder verdrahtetes Medium oder eine Kombination des Vorstehenden miteinander verbunden sein. Zum Beispiel kann die CPU 706 über die Kommunikationsschnittstelleneinheit 708 mit der Datenspeichervorrichtung verbunden sein. Die CPU 706 kann zum Ausführen einer oder mehrerer bestimmter Verarbeitungsfunktionen konfiguriert sein.
  • Die Datenspeichervorrichtung kann z. B. (i) ein Betriebssystem 712 für die Computervorrichtung 700; (ii) eine oder mehrere Anwendungen 714 (z. B. Computerprogrammcode oder ein Computerprogrammprodukt), die dafür ausgelegt sind, die CPU 706 in Übereinstimmung mit den hier beschriebenen Systemen und Verfahren und insbesondere in Übereinstimmung mit den hinsichtlich der CPU 706 ausführlich beschriebenen Prozessen anzuweisen; oder (iii) eine oder mehrere Datenbanken 716, die dafür ausgelegt sind, Informationen zu speichern, die zum Speichern von Informationen, die von dem Programm benötigt werden, genutzt werden können, speichern.
  • Das Betriebssystem 712 und die Anwendungen 714 können z. B. in einem komprimierten, in einem nicht kompilierten und in einem verschlüsselten Format gespeichert sein und können Computerprogrammcode enthalten. Die Anweisungen des Programms können von einem anderen computerlesbaren Medium als der Datenspeichervorrichtung wie etwa von dem ROM 704 oder von den RAM 702 in den Hauptspeicher des Prozessors gelesen werden. Obwohl die Ausführung von Folgen von Anweisungen in dem Programm veranlasst, dass die CPU 706 die hier beschriebenen Prozessschritte ausführt, kann anstelle oder zusammen mit Softwareanweisungen eine fest verdrahtete Schaltungsanordnung zur Implementierung der Prozesse der vorliegenden Erfindung verwendet werden. Somit sind die beschriebenen Systeme und Verfahren nicht auf irgendeine spezifische Kombination aus Hardware und Software beschränkt.
  • Es kann geeigneter Computerprogrammcode vorgesehen sein, um eine oder mehrere Funktionen in Bezug auf die Ausführung der wie hier beschriebenen Prozesse auszuführen. Außerdem kann das Programm Programmelemente wie etwa ein Betriebssystem 712, ein Datenbankmanagementsystem und "Vorrichtungstreiber" enthalten, die ermöglichen, dass sich der Prozessor über den Eingabe/Ausgabe-Controller 710 mit Computerperipherievorrichtungen (z. B. einer Videoanzeige, einer Tastatur, einer Computermaus usw.) über eine Schnittstelle verbindet.
  • Der Begriff "computerlesbares Medium", wie er hier verwendet ist, bezieht sich auf irgendein nicht temporäres Medium, das für den Prozessor der Computervorrichtung 700 (oder für irgendeinen anderen Prozessor einer hier beschriebenen Vorrichtung) Anweisungen zur Ausführung bereitstellt oder an deren Bereitstellung beteiligt ist. Ein solches Medium kann irgendwelche Formen einschließlich, aber nicht beschränkt auf, nichtflüchtiger Medien und flüchtiger Medien annehmen. Nichtflüchtige Medien enthalten z. B. optische, magnetische oder magnetooptische Platten oder einen Speicher mit integrierter Schaltung wie etwa einen Flash-Speicher. Flüchtige Medien enthalten einen dynamischen Schreib-Lese-Speicher (DRAM), der üblicherweise den Hauptspeicher bildet. Übliche Formen computerlesbarer Medien enthalten z. B. eine Diskette, eine flexible Platte, eine Festplatte, ein Magnetband, irgendein anderes magnetisches Medium, eine CD-ROM, eine DVD, irgendein anderes optisches Medium, Lochkarten, ein Papierband, irgendein anderes physikalisches Medium mit Lochmustern, einen RAM, einen PROM, einen EPROM oder EEPROM (elektronisch löschbaren programmierbaren Nur-Lese-Speicher), einen FLASH-EEPROM, irgendeinen anderen Speicherchip oder irgendeine andere Speicherkassette oder irgendein anderes nicht temporäres Medium, von dem ein Computer lesen kann.
  • An der Ausführung einer oder mehrerer Folgen einer oder mehrerer Anweisungen zur Ausführung für die CPU 706 (oder für irgendeinen anderen Prozessor einer hier beschriebenen Vorrichtung) können verschiedene Formen computerlesbarer Medien beteiligt sein. Zum Beispiel können die Anweisungen anfangs auf einer Magnetplatte eines fernen Computers (nicht gezeigt) getragen sein. Der ferne Computer kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen über eine Ethernet-Verbindung, über eine Kabelleitung oder sogar über eine Telephonleitung unter Verwendung eines Modems senden. Eine gegenüber einer Computervorrichtung 700 lokale Kommunikationsvorrichtung (z. B. ein Server) kann die Daten auf der jeweiligen Kommunikationsleitung empfangen und die Daten auf einem Systembus für den Prozessor anordnen. Der Systembus übermittelt die Daten an den Hauptspeicher, aus dem der Prozessor die Anweisungen ausliest und ausführt. Die durch den Hauptspeicher empfangenen Anweisungen können optional entweder vor oder nach der Ausführung durch den Prozessor im Speicher gespeichert werden. Außerdem können die Anweisungen über einen Kommunikationsport als elektrische, elektromagnetische oder optische Signale empfangen werden, die beispielhafte Formen drahtloser Kommunikationen oder Datenströme, die verschiedene Typen von Informationen übermitteln, sind.

Claims (22)

  1. Computerimplementiertes Verfahren, das umfasst: Empfangen einer Anforderung von einer ersten Anwendung auf einer lokalen Vorrichtung zum Öffnen eines Dokuments, das eine Dokumentkennung besitzt und dem eine erste Datei, die auf einem Server gespeichert ist, zugeordnet ist, wobei die Anforderung die Dokumentkennung und eine Nutzerkennung umfasst; Bestimmen, dass der Dokumentkennung eine zweite Datei, die auf der lokalen Vorrichtung gespeichert ist, zugeordnet ist und dass ein Nutzer, der der Nutzerkennung zugeordnet ist, zum Zugriff auf die zweite Datei berechtigt ist; Senden einer Liste, die eine oder mehrere Anwendungen umfasst, die auf der lokalen Vorrichtung sind und die in der Lage sind, die zweite Datei zu öffnen, auf der Grundlage der Bestimmung an die erste Anwendung; Empfangen einer Angabe einer aus der Liste ausgewählten zweiten Anwendung, von der ersten Anwendung; und Senden einer Nachricht zum Öffnen der zweiten Datei mit der zweiten Anwendung.
  2. Verfahren nach Anspruch 1, wobei: das Verfahren bei einem Sync-Client ausgeführt wird, der mit einem Vermittler-Proxy kommuniziert, der die Anforderung an den Sync-Client sendet, die Liste von dem Sync-Client empfängt und die Angabe an den Sync-Client sendet; und der Vermittler-Proxy die Anforderung und/oder die Liste und/oder die Angabe auf der Grundlage von Formatierungsanforderungen für den Sync-Client und für die erste Anwendung ändert.
  3. Verfahren nach Anspruch 1, wobei: das Verfahren bei einem Sync-Client ausgeführt wird; eine Inhaltsdatei eine Liste von Kennungen lokaler Anwendungen speichert, die mehreren lokalen Anwendungen entsprechen, die auf der lokalen Vorrichtung installiert sind und die bei dem Sync-Client registriert sind; die Nachricht zum Öffnen der zweiten Datei eine Anwendungskennung umfasst, die der zweiten Anwendung zugeordnet ist, und das Verfahren ferner das Bestimmen, ob die Anwendungskennung in der Inhaltsdatei enthalten ist, umfasst.
  4. Verfahren nach Anspruch 1, wobei das Bestimmen, ob der Nutzer auf die zweite Datei zuzugreifen berechtigt ist, umfasst: Empfangen eines ersten Hashs, der auf der Grundlage wenigstens eines Pre-Shared Keys berechnet wird; Berechnen eines zweiten Hashs durch die erste Anwendung und auf der Grundlage des wenigstens einen Pre-Shared Keys; Vergleichen des ersten Hashs mit dem zweiten Hash, wobei der Benutzer zum Zugriff auf die zweite Datei berechtigt ist, falls der erste Hash zu dem zweiten Hash passt.
  5. Verfahren nach Anspruch 4, wobei der erste und der zweite Hash jeweils wenigstens teilweise auf der Grundlage eines Einmalschlüssels berechnet werden.
  6. Verfahren nach Anspruch 1, wobei die Anforderung und/oder die Liste und/oder die Angabe Standardeingabestromdaten oder Standardausgabestromdaten, die der ersten Anwendung zugeordnet sind, enthält.
  7. Verfahren nach Anspruch 1, das ferner das Erstellen der zweiten Datei aus einer Kopie der ersten Datei umfasst.
  8. Verfahren nach Anspruch 1, wobei: die erste Anwendung ein Browser oder eine dem Browser zugeordnete Browsererweiterung ist; und der Nutzer die Anforderung über den Browser bereitstellt.
  9. Verfahren nach Anspruch 1, wobei die Liste nur dann an die erste Anwendung gesendet wird, wenn die zweite Datei mit der ersten Datei synchronisiert wird.
  10. Computerimplementiertes Verfahren, das umfasst: Empfangen einer Anforderung von einem Nutzer zum Öffnen eines Dokuments, das eine Dokumentkennung besitzt und dem eine erste Datei, die auf einem Server gespeichert ist, zugeordnet ist, bei einer lokalen Vorrichtung, wobei die Anforderung die Dokumentkennung und eine dem Nutzer zugeordnete Nutzerkennung umfasst; Senden der angeforderten Dokumentkennung und Nutzerkennung an eine erste Anwendung auf der lokalen Vorrichtung; Empfangen einer Liste, die eine oder mehrere Anwendungen, die auf der lokalen Vorrichtung sind, umfasst, von der ersten Anwendung; Empfangen einer Angabe einer aus der Liste ausgewählten zweiten Anwendung, von dem Nutzer; und Senden einer Nachricht, die die Dateikennung und eine der zweiten Anwendung zugeordnete Kennung umfasst, an die erste Anwendung.
  11. Verfahren nach Anspruch 10, wobei: das Verfahren bei einer dritten Anwendung ausgeführt wird; die dritte Anwendung ein Browser oder eine dem Browser zugeordnete Browsererweiterung ist; die dritte Anwendung mit einem Vermittler-Proxy kommuniziert, der die Anforderung an die dritte Anwendung sendet, die Liste von der dritten Anwendung empfängt und die Angabe an die dritte Anwendung sendet; und der Vermittler-Proxy die Anforderung und/oder die Liste und/oder die Angabe auf der Grundlage von Formatierungsanforderungen für die dritte Anwendung und für die erste Anwendung ändert.
  12. System, das einen Prozessor umfasst, der konfiguriert ist zum: Empfangen einer Anforderung von einer ersten Anwendung auf einer lokalen Vorrichtung zum Öffnen eines Dokuments, das eine Dokumentkennung besitzt und dem eine erste Datei, die auf einem Server gespeichert ist, zugeordnet ist, wobei die Anforderung die Dokumentkennung und eine Nutzerkennung umfasst; Bestimmen, dass der Dokumentkennung eine zweite Datei, die auf der lokalen Vorrichtung gespeichert ist, zugeordnet ist und dass ein Nutzer, der der Nutzerkennung zugeordnet ist, zum Zugriff auf die zweite Datei berechtigt ist; Senden einer Liste, die eine oder mehrere Anwendungen umfasst, die auf der lokalen Vorrichtung sind und die in der Lage sind, die zweite Datei zu öffnen, auf der Grundlage der Bestimmung an die erste Anwendung; Empfangen einer Angabe einer aus der Liste ausgewählten zweiten Anwendung, von der ersten Anwendung; und Senden einer Nachricht zum Öffnen der zweiten Datei mit der zweiten Anwendung.
  13. System nach Anspruch 12, wobei: das Empfangen, das Bestimmen und das Senden bei einem Sync-Client ausgeführt werden, der mit einem Vermittler-Proxy kommuniziert, der die Anforderung an den Sync-Client sendet, die Liste von dem Sync-Client empfängt und die Angabe an den Sync-Client sendet; und der Vermittler-Proxy die Anforderung und/oder die Liste und/oder die Angabe auf der Grundlage von Formatierungsanforderungen für den Sync-Client und für die erste Anwendung ändert.
  14. System nach Anspruch 12, wobei: das Empfangen, das Senden und das Bestimmen bei einem Sync-Client ausgeführt werden; eine Inhaltsdatei eine Liste von Kennungen lokaler Anwendungen speichert, die mehreren lokalen Anwendungen entsprechen, die auf der lokalen Vorrichtung installiert sind und die bei dem Sync-Client registriert sind; eine Nachricht zum Öffnen der zweiten Datei eine Anwendungskennung umfasst, die der zweiten Anwendung zugeordnet ist, und die Nachricht zum Öffnen der zweiten Datei auf der Grundlage einer Bestimmung, dass die Anwendungskennung in der Inhaltsdatei enthalten ist, gesendet wird.
  15. System nach Anspruch 12, wobei das Bestimmen, ob der Nutzer auf die zweite Datei zuzugreifen berechtigt ist, umfasst: Empfangen eines ersten Hashs, der auf der Grundlage wenigstens eines Pre-Shared Keys berechnet wird; Berechnen eines zweiten Hashs durch die erste Anwendung und auf der Grundlage des wenigstens einen Pre-Shared Keys; Vergleichen des ersten Hashs mit dem zweiten Hash, wobei der Benutzer zum Zugriff auf die zweite Datei berechtigt ist, falls der erste Hash zu dem zweiten Hash passt.
  16. System nach Anspruch 15, wobei der erste und der zweite Hash jeweils wenigstens teilweise auf der Grundlage eines Einmalschlüssels berechnet werden.
  17. System nach Anspruch 12, wobei die Anforderung und/oder die Liste und/oder die Angabe Standardeingabestromdaten oder Standardausgabestromdaten, die der ersten Anwendung zugeordnet sind, enthält.
  18. System nach Anspruch 12, das ferner das Erstellen der zweiten Datei aus einer Kopie der ersten Datei umfasst.
  19. System nach Anspruch 12, wobei: die erste Anwendung ein Browser oder eine dem Browser zugeordnete Browsererweiterung ist; und der Nutzer die Anforderung über den Browser bereitstellt.
  20. System nach Anspruch 12, wobei die Liste nur dann an die erste Anwendung gesendet wird, wenn die zweite Datei mit der ersten Datei synchronisiert wird.
  21. System, das einen Prozessor umfasst, der konfiguriert ist zum: Empfangen einer Anforderung von einem Nutzer zum Öffnen eines Dokuments, das eine Dokumentkennung besitzt und dem eine erste Datei, die auf einem Server gespeichert ist, zugeordnet ist, bei einer lokalen Vorrichtung, wobei die Anforderung die Dokumentkennung und eine dem Nutzer zugeordnete Nutzerkennung umfasst; Senden der angeforderten Dokumentkennung und Nutzerkennung an eine erste Anwendung auf der lokalen Vorrichtung; Empfangen einer Liste, die eine oder mehrere Anwendungen, die auf der lokalen Vorrichtung sind, umfasst, von der ersten Anwendung; Empfangen einer Angabe einer aus der Liste ausgewählten zweiten Anwendung, von dem Nutzer; und Senden einer Nachricht, die die Dateikennung und eine der zweiten Anwendung zugeordnete Kennung umfasst, an die erste Anwendung.
  22. System nach Anspruch 21, wobei: das Empfangen und das Senden bei einer dritten Anwendung ausgeführt werden; die dritte Anwendung ein Browser oder eine dem Browser zugeordnete Browsererweiterung ist; die dritte Anwendung mit einem Vermittler-Proxy kommuniziert, der die Anforderung an die dritte Anwendung sendet, die Liste von der dritten Anwendung empfängt und die Angabe an die dritte Anwendung sendet; und der Vermittler-Proxy die Anforderung und/oder die Liste und/oder die Angabe auf der Grundlage von Formatierungsanforderungen für die dritte Anwendung und für die erste Anwendung ändert.
DE112015005024.8T 2014-11-05 2015-11-03 Öffnen lokaler Anwendungen von Browsern Pending DE112015005024T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462075825P 2014-11-05 2014-11-05
US62/075,825 2014-11-05
US14/547,086 US9876849B2 (en) 2014-11-05 2014-11-18 Opening local applications from browsers
US14/547,086 2014-11-18
PCT/US2015/058793 WO2016073452A1 (en) 2014-11-05 2015-11-03 Opening local applications from browsers

Publications (1)

Publication Number Publication Date
DE112015005024T5 true DE112015005024T5 (de) 2017-07-27

Family

ID=55854038

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112015005024.8T Pending DE112015005024T5 (de) 2014-11-05 2015-11-03 Öffnen lokaler Anwendungen von Browsern
DE202015009311.6U Active DE202015009311U1 (de) 2014-11-05 2015-11-03 Öffnen lokaler Anwendungen von Browsern

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE202015009311.6U Active DE202015009311U1 (de) 2014-11-05 2015-11-03 Öffnen lokaler Anwendungen von Browsern

Country Status (4)

Country Link
US (3) US9876849B2 (de)
CN (2) CN112416882B (de)
DE (2) DE112015005024T5 (de)
WO (1) WO2016073452A1 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336226B2 (en) 2013-01-11 2016-05-10 Commvault Systems, Inc. Criteria-based data synchronization management
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
US9898520B2 (en) 2014-03-25 2018-02-20 Open Text Sa Ulc Systems and methods for seamless access to remotely managed documents using synchronization of locally stored documents
US9876849B2 (en) * 2014-11-05 2018-01-23 Google Llc Opening local applications from browsers
US9645891B2 (en) 2014-12-04 2017-05-09 Commvault Systems, Inc. Opportunistic execution of secondary copy operations
US9753816B2 (en) 2014-12-05 2017-09-05 Commvault Systems, Inc. Synchronization based on filtered browsing
US9952934B2 (en) 2015-01-20 2018-04-24 Commvault Systems, Inc. Synchronizing selected portions of data in a storage management system
US9588849B2 (en) 2015-01-20 2017-03-07 Commvault Systems, Inc. Synchronizing selected portions of data in a storage management system
US9298355B1 (en) 2015-03-23 2016-03-29 Dropbox, Inc. Content item templates
US11329935B2 (en) * 2015-04-23 2022-05-10 Microsoft Technology Licensing, Llc Smart attachment of cloud-based files to communications
US10108688B2 (en) 2015-12-22 2018-10-23 Dropbox, Inc. Managing content across discrete systems
US10152590B2 (en) * 2016-01-04 2018-12-11 Oracle International Corporation Implementing a WebSocket server to circumvent access controls, by a web browser, on a web application
CN107370775B (zh) * 2016-05-11 2020-04-28 阿里巴巴集团控股有限公司 一种启动应用的方法和系统
US11003632B2 (en) 2016-11-28 2021-05-11 Open Text Sa Ulc System and method for content synchronization
US10970679B2 (en) 2016-12-29 2021-04-06 Dropbox, Inc. Presenting project data managed by a content management system
US10970656B2 (en) 2016-12-29 2021-04-06 Dropbox, Inc. Automatically suggesting project affiliations
US10402786B2 (en) 2016-12-30 2019-09-03 Dropbox, Inc. Managing projects in a content management system
CN108282501B (zh) * 2017-01-05 2021-03-09 阿里巴巴集团控股有限公司 一种云服务器资源信息同步方法、装置和系统
US11301431B2 (en) 2017-06-02 2022-04-12 Open Text Sa Ulc System and method for selective synchronization
US11226939B2 (en) 2017-12-29 2022-01-18 Dropbox, Inc. Synchronizing changes within a collaborative content management system
US11200282B1 (en) * 2018-03-22 2021-12-14 Atlassian Pty Ltd. Integrated views of multiple different computer program applications with action options
CN110851190A (zh) * 2018-07-26 2020-02-28 珠海金山办公软件有限公司 一种打开多个最近使用文档的方法、系统及终端
US11194766B2 (en) 2018-11-06 2021-12-07 Dropbox, Inc. Technologies for integrating cloud content items across platforms
US11017048B2 (en) * 2018-12-21 2021-05-25 Box, Inc. Synchronized content replication
CN110175052A (zh) * 2019-04-16 2019-08-27 努比亚技术有限公司 一种开启文件的方法、装置及计算机可读存储介质
CN111273950B (zh) * 2019-12-31 2023-03-21 百度国际科技(深圳)有限公司 应用唤起方法、装置、电子设备及计算机可读存储介质
CN111371868B (zh) * 2020-02-26 2023-02-03 北京奇艺世纪科技有限公司 关联web应用和客户端的方法、装置、设备、系统以及存储介质
CN112579227A (zh) * 2020-09-19 2021-03-30 王小燕 一种基于人工智能的文件浏览方法及系统
CN113094607B (zh) * 2021-04-08 2024-04-19 百度在线网络技术(北京)有限公司 获取本地资源的方法及装置
US11716381B2 (en) 2021-04-13 2023-08-01 Capital One Services, Llc Exporting data to a cloud-based service
CN114257441B (zh) * 2021-12-17 2023-12-15 北京字跳网络技术有限公司 一种基于云文档组件的数据处理方法及装置
US20230334018A1 (en) * 2022-04-18 2023-10-19 Microsoft Technology Licensing, Llc File selection user interface
CN114936538B (zh) * 2022-05-16 2023-02-03 三峡高科信息技术有限责任公司 基于浏览器和办公软件客户端进行文档比对的方法
US20230418624A1 (en) * 2022-06-24 2023-12-28 Microsoft Technology Licensing, Llc File opening optimization
US11928079B1 (en) * 2022-10-25 2024-03-12 Dell Products L.P. Intelligently associating a file with an application

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892905A (en) * 1996-12-23 1999-04-06 International Business Machines Corporation Computer apparatus and method for providing a common user interface for software applications accessed via the world-wide web
US5991760A (en) * 1997-06-26 1999-11-23 Digital Equipment Corporation Method and apparatus for modifying copies of remotely stored documents using a web browser
US6105028A (en) * 1997-06-26 2000-08-15 Digital Equipment Corporation Method and apparatus for accessing copies of documents using a web browser request interceptor
US6523166B1 (en) 1998-09-21 2003-02-18 Microsoft Corporation Method and system for on-demand installation of software implementations
JP3983940B2 (ja) 1999-06-28 2007-09-26 東芝マイクロエレクトロニクス株式会社 不揮発性半導体メモリ
US7424543B2 (en) * 1999-09-08 2008-09-09 Rice Iii James L System and method of permissive data flow and application transfer
US6947556B1 (en) * 2000-08-21 2005-09-20 International Business Machines Corporation Secure data storage and retrieval with key management and user authentication
US7251827B1 (en) * 2002-05-01 2007-07-31 Microsoft Corporation In-line sign in
US7536713B1 (en) * 2002-12-11 2009-05-19 Alan Bartholomew Knowledge broadcasting and classification system
CN100426719C (zh) * 2003-09-01 2008-10-15 台均科技(深圳)有限公司 用户端设备与本地客户端应用服务器或远程网络服务器间鉴权的方法
CN101180619B (zh) * 2005-02-28 2012-05-23 雅虎公司 媒体管理系统和方法
US20060206484A1 (en) * 2005-03-14 2006-09-14 Hitachi, Ltd. Method for preserving consistency between worm file attributes and information in management servers
US7743026B2 (en) 2006-01-31 2010-06-22 Microsoft Corporation Redirection to local copies of server-based files
CA2678737A1 (en) 2006-02-20 2007-08-30 Topeer Corporation System and method for controlling local computer applications using a web interface
US7873957B2 (en) * 2006-07-27 2011-01-18 Microsoft Corporation Minimizing user disruption during modification operations
JP5003131B2 (ja) * 2006-12-04 2012-08-15 富士ゼロックス株式会社 文書提供システム及び情報提供プログラム
KR100863461B1 (ko) * 2006-12-11 2008-10-16 소프트캠프(주) 데이터 보안을 위한 네트워크 내 결재시스템
US8452853B2 (en) 2007-03-05 2013-05-28 International Business Machines Corporation Browser with offline web-application architecture
US20090157727A1 (en) * 2007-12-18 2009-06-18 Nokia Corporation Method, Apparatus and Computer Program Product for Providing Native Broadcast Support for Hypermedia Formats and/or Widgets
US20090265607A1 (en) * 2008-04-17 2009-10-22 Razoss Ltd. Method, system and computer readable product for management, personalization and sharing of web content
US8621608B2 (en) 2008-04-29 2013-12-31 Mcafee, Inc. System, method, and computer program product for dynamically adjusting a level of security applied to a system
CA2665436A1 (en) * 2008-05-07 2009-11-07 Research In Motion Limited Interaction between web pages and local applications
US8127033B1 (en) * 2008-09-29 2012-02-28 Symantec Corporation Method and apparatus for accessing local computer system resources from a browser
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
WO2010135359A2 (en) 2009-05-19 2010-11-25 Smx Inet Global Services Sa Providing a local device with computing services from a remote host
US20130254314A1 (en) * 2009-06-09 2013-09-26 Edmond K. Chow Digital content delivery
WO2011023134A1 (en) * 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
US9390172B2 (en) 2009-12-03 2016-07-12 Microsoft Technology Licensing, Llc Communication channel between web application and process outside browser
US20110191676A1 (en) * 2010-01-29 2011-08-04 Microsoft Corporation Cross-Browser Interactivity Recording, Playback, and Editing
US9081633B2 (en) * 2010-05-24 2015-07-14 Microsoft Technology Licensing, Llc Remote application connection sharing
US9361395B2 (en) * 2011-01-13 2016-06-07 Google Inc. System and method for providing offline access in a hosted document service
US9424018B2 (en) 2011-03-21 2016-08-23 Microsoft Technology Licensing, Llc Filtering and promoting application store applications
US20120266079A1 (en) * 2011-04-18 2012-10-18 Mark Lee Usability of cross-device user interfaces
GB2491176A (en) * 2011-05-26 2012-11-28 Vodafone Ip Licensing Ltd A media server transcodes media from an initial format to a format requested by a rendering device.
US10880359B2 (en) * 2011-12-21 2020-12-29 Workshare, Ltd. System and method for cross platform document sharing
CN102819531B (zh) * 2011-06-10 2016-03-09 北大方正集团有限公司 一种云阅读服务系统、云阅读服务方法和装置
US20130060842A1 (en) * 2011-08-21 2013-03-07 World Software Corporation Remote desktop and data management system
MX345059B (es) * 2011-10-11 2017-01-16 Microsoft Technology Licensing Llc Servicio de evento para aplicaciones de cliente local a traves de servidor local.
US8949352B2 (en) * 2011-10-28 2015-02-03 Microsoft Corporation Document sharing through browser
US9355115B2 (en) 2011-11-21 2016-05-31 Microsoft Technology Licensing, Llc Client application file access
US20130226876A1 (en) * 2012-02-29 2013-08-29 Construcs, Inc. Synchronizing local clients with a cloud-based data storage system
US9317709B2 (en) * 2012-06-26 2016-04-19 Google Inc. System and method for detecting and integrating with native applications enabled for web-based storage
US20140101310A1 (en) 2012-10-04 2014-04-10 Box, Inc. Seamless access, editing, and creation of files in a web interface or mobile interface to a collaborative cloud platform
US9131010B2 (en) * 2012-10-19 2015-09-08 Nec Laboratories America, Inc. Delay-tolerant and loss-tolerant data transfer for mobile applications
US9326145B2 (en) 2012-12-16 2016-04-26 Aruba Networks, Inc. System and method for application usage controls through policy enforcement
EP2974110B1 (de) * 2013-03-14 2019-10-16 Intel Corporation Datenschutzbewusster dhcp-dienst
US9672023B2 (en) 2013-03-15 2017-06-06 Apple Inc. Providing a unified update center for security software updates and application software updates
WO2014144005A1 (en) * 2013-03-15 2014-09-18 Jadhav Ajay Use of collaborative server in a cloud-based environment
US10320628B2 (en) 2013-06-19 2019-06-11 Citrix Systems, Inc. Confidence scoring of device reputation based on characteristic network behavior
US9313299B2 (en) * 2013-12-18 2016-04-12 Verizon Patent And Licensing Inc. Cloud edge appliances to extend cloud applications to customer premises
US20150365469A1 (en) 2014-06-17 2015-12-17 Google Inc. System and method for integrating web and native applications from web-based contexts
US9876849B2 (en) * 2014-11-05 2018-01-23 Google Llc Opening local applications from browsers
US20160357737A1 (en) * 2015-06-05 2016-12-08 Apple Inc. Networked media player with searching capabilities
US10146873B2 (en) * 2015-06-29 2018-12-04 Microsoft Technology Licensing, Llc Cloud-native documents integrated with legacy tools

Also Published As

Publication number Publication date
US20160127452A1 (en) 2016-05-05
US20200153891A1 (en) 2020-05-14
WO2016073452A1 (en) 2016-05-12
CN107111630A (zh) 2017-08-29
US10999354B2 (en) 2021-05-04
US9876849B2 (en) 2018-01-23
US10536513B2 (en) 2020-01-14
US20180146029A1 (en) 2018-05-24
CN107111630B (zh) 2020-12-08
DE202015009311U1 (de) 2017-02-02
CN112416882B (zh) 2024-04-09
CN112416882A (zh) 2021-02-26
US20210273989A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
DE112015005024T5 (de) Öffnen lokaler Anwendungen von Browsern
DE102017125428A1 (de) Systeme und Verfahren zum Bereitstellen von Zugriff auf eine in einem Datenspeichersystem gespeicherte Datei
DE602004001716T2 (de) Verfahren und System zur Verbindung eines Fernbenutzers mit einer lokalen Rechnerumgebung über einen Intranet-Server
DE112013002544T5 (de) Cloudbasiertes Teilen von Datenpunkten und Zusammenarbeit unter Benutzergruppen
DE202013012493U1 (de) Stufen der Datenspeicherung für Webanwendungen und Browser-Erweiterungen
DE112013002542T5 (de) Cloud-basierte Anwendungsressourcendateien
DE112020000538T5 (de) Feinkörnige zugriffskontrolle auf token-grundlage
DE112012002774T5 (de) Verfahren und Vorrichtung für einen keep-alive Push-Agenten
DE202014010945U1 (de) Systeme zur Bereitstellung von Meldungen von Änderungen in einem Cloud-basierten Dateisystem
DE112015004267T5 (de) Speicherung und Übertragung von Anwendungsdaten zwischen Vorrichtungen
DE202011110893U1 (de) Verwaltung mehrfacher Anmeldungen über einen Einzelbrowser
DE112010004135T5 (de) Sicherung Asynchroner Client-Server-Transaktionen
DE202015009286U1 (de) Kurzlebige Anwendungen
DE102014114005A1 (de) Risikobeurteilung von Interaktionen von Anwendungen für mobile Einheiten aufgrund von Reputation
DE112016000291T5 (de) Sichere Datenverwaltungstechniken
DE112013002539T5 (de) Validierung mobiler Einheiten
DE102017107147A1 (de) Betrugssichere Autorisierung und Authentifizierung für sichere Interaktionen mit Smartphones
EP3970337A1 (de) Verfahren zum selektiven ausführen eines containers und netzwerkanordnung
DE112021005026T5 (de) Persistente quellwerte für angenommene alternative identitäten
DE112012007196T5 (de) Parametereinstellungssystem, Programmverwaltungsvorrichtung, und Informationsverarbeitungsvorrichtung
DE102022132069A1 (de) Server, der einen sicherheitszugriff eines endgeräts des benutzers unterstützt, und steuerverfahren dafür
EP3537654B1 (de) Verfahren und system zum ermitteln einer konfiguration einer schnittstelle
DE112016000705T5 (de) Automatisches Entdecken und An-Bord-Nehmen von elektronischen Vorrichtungen
WO2012069239A1 (de) Verfahren zum zugang zu einem betriebssystem, wechselspeichermedium und verwendung eines wechselspeichermediums
EP4179758B1 (de) Authentisierung eines kommunikationspartners an einem gerät

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000