-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf Computer und
das Internet, und im Besonderen auf im Internet verteilte Entwicklung
von Autorensoftware und Versionierung (Internet Distributed Authoring
and Versioning).
-
HINTERGRUND
DER ERFINDUNG
-
Die
Verwendung von Online-Speicherdiensten zum Speichern und zur Mitbenutzung
von Daten wird immer populärer.
Im Allgemeinen basieren die meisten heutigen Zugriffe auf Internet-Speicher
auf relativ komplizierten Protokollen, wie zum Beispiel FTP (File
Transfer Protocol – Dateiübertragungsprotokoll),
das eine spezielle Anwendungsunterstützung erfordert.
-
WebDAV,
oder einfach DAV, (Distributed Authoring and Versioning – verteilte
Entwicklung von Autorensoftware und Versionierung), ist ein Protokoll, das
in Extensible Markup Language (XML – erweiterbare Auszeichungssprache)
beschrieben ist, welche HTTP (HyperText Transfer Protocol) im Wesentlichen erweitert,
so dass Internet-Inhalte und ähnliches
manipuliert werden können.
Zum Beispiel, obwohl HTTP es erlaubt, dass Inhalt unter Verwendung
der PUT und POST Verben geschrieben wird, erlaubt WebDAV das Abfragen
und Manipulieren von Metadaten auf den Dateien, wobei Verben verwendet
werden wie PROPFIND und PROPPATCH, sowie das Sperren (LOCKing) von
Dateien, welches zusammen mit den HTTP-Verben wie PUT und POST eine
Dokumentenmanipulation erlaubt. Dazwischenliegende Programme sind
geschrieben worden, um die Verwendung von diesen Protokollen zu
vereinfachen. Zum Beispiel stellen Windows® 95,
Windows® 98
und Windows® 2000
Betriebssysteme von Microsoft Corporations "wWeb-Ordner" (Web Folders) bereit, welche als Schnittstellen
zu einer Sammlung von Ressourcen, die auf einem DAV-Server gespeichert
sind, fungieren. Web-Ordner erscheinen ähnlich wie lokale Dateiordner,
zum Beispiel können
Dateien gezogen und in einer Darstellung eines Web-Ordners abgelegt werden
(dragged and dropped), und so weiter. Jedoch können Web-Ordner nicht mit einem
nicht modifizierten Anwendungsprogramm verwendet werden, und nur
Anwendungen, die Web-Ordner in ihren Code integriert haben, können Web-Ordner
benutzen.
-
Alternativ
gibt es ein paar Anwendungen, die DAV kennen, und in der Lage sind,
mit Dateien auf WebDAV-Servern, wie zum Beispiel Dateien die in Web-Ordnern
erscheinen, zu arbeiten. Jedoch erfordern solche Anwendungen eine
bestimmte Unterstützung
der Protokolle, um auf die Daten im Internet zuzugreifen, und sind
im Allgemeinen auf ein paar spezielle Web-Authoring-Werkzeuge begrenzt.
Die Mehrheit der Anwendungen, einschließlich Anwendungen die bereits
existieren, sind nicht in der Lage auf WebDAV-Server-Dateien zuzugreifen, und es ist nahezu
unmöglich,
solche existierenden Anwendungen rückwirkend anzupassen, um dies
zu tun.
-
Whitehead,
E.J. und andere, " WebDAV: IEFT
standard for collaborative authoring on the Web", IEEE Internet Computing, vol. 2, Nummer
5, Septermber 1998 bis Oktober 1998, Seiten 34-40, beschreiben eine
Reihe von Erweiterungen für
die Basis des HyperText-Transfer-Protocols für WebDAV, um eine Standardinfrastruktur
für ein
asynchrones Entwickeln (Authoring) für (Software für eine)
Zusammenarbeit quer über
das Internet bereitzustellen. Im Besonderen wird es beschrieben,
wie ein üblicher Web-Client
diese Erweiterung verwenden könnte,
um die Quelle einer Web-Ressource zu editieren. Dabei erlangt der
Client die Ressource-Eigenschaften und die Inhalte der Ressource,
welche anschließend
zum Editieren angezeigt werden. Sobald alle Editierungen abgeschlossen
worden sind, wird die Ressource auf den WebDAV-Server zurückgespeichert.
-
KURZFASSUNG
DER ERFINDUNG
-
Es
ist die Aufgabe der Erfindung einen WebDAV-Datei-Zugriff automatisch
und unsichtbar zu erledigen, wobei Anwendungen, einschließlich Anwendungen,
die sich WebDAV nicht bewusst sind, auf WebDAV-Dateien in einer üblichen
Art und Weise zugreifen können.
-
Diese
Aufgabe wird durch die Erfindung wie in den unabhängigen Ansprüchen beansprucht
gelöst.
-
Bevorzugte
Ausführungsformen
werden durch die abhängigen
Ansprüche
definiert.
-
Kurzgesagt
stellt die vorliegende Erfindung ein System und Verfahren bereit,
das einen WebDAV-Datei-Zugriff automatisch und unsichtbar erledigt,
wobei Anwendungen (einschließlich
Anwendungen, die sich WebDAV nicht bewusst sind) auf WebDAV-Dateien
durch konventionelle auf das Dateisystem gerichtete API-Aufrufe
(Application Programing Interface Calls – Anwendungsprogrammierungsschnittstellenaufrufe)
oder Ähnli ches
zugreifen können.
Anwendungen können
ebenso netzwerkbezogene Anfragen an WebDAV-Server ausgeben, wie zum
Beispiel zum Durchsuchen (browsing), wobei jene Anfragen unsichtbar
erledigt werden, als wäre ein
freigegebenes WebDAV-Laufwerk (share) ein lokaler Ordner.
-
Zu
diesem Zweck umfasst die vorliegende Erfindung einen WebDAV-Umleiter
(redirector) und in Beziehung stehende Komponenten, die Anfragen, die
an einen WebDAV-Server
gerichtet sind, empfangen, und die Maßnahmen ergreifen, um die Anfrage lokal
oder dezentral (remotely), soweit erforderlich, zu erledigen. Zum
Beispiel unterstützen
der WebDAV-Umleiter und in Beziehung stehende Komponenten I/O-Anfragen
(Eingabe/Ausgabe-Anfragen) und Netzwerkanfragen, die an WebDAV-Server
gerichtet sind, die durch URI-Namen (Universal Resource Identifier
Names – universelle
Ressourcenkennzeichnernamen) oder durch ein Laufwerk identifiziert werden,
können
auf ein freigegebenes WebDAV-Laufwerk abgebildet werden.
-
Zu
diesem Zweck arbeiten die Umleiterkomponenten, um zu ermitteln,
ob eine Erzeugungs- oder Öffnen-I/O-Anfrage
einer Anwendung auf einen WebDAV-Server gerichtet ist, der verbunden
ist und arbeitet, und wenn dem so ist, ob auf ein bestimmte freigegebenes
Laufwerk und eine bestimmte Datei auf diesem Server zugegriffen
werden kann. Wenn ja, informiert der Umleiter einen Anbieter für mehrere
UNC (multiple UNC provider), dass er die Anfrage bearbeiten kann,
und eine lokale Kopie der Datei wird heruntergeladen und für lokalen
I/O-Zugriff zwischengespeichert, wobei das Lesen und Schreiben zu
dem WebDAV-Server von und zu der zwischengespeicherten Datei gemacht
wird. Wenn die lokale Datei geschlossen wird, wird sie zu dem WebDAV-Server heraufgeladen,
wenn sie auf dem Client modifiziert worden ist.
-
Netzwerk-bezogene
Anfragen, die auf einen WebDAV-Server gerichtet sind, wie zum Beispiel
Anfragen die sich auf ein Durchsuchen (browsing) beziehen, werden
ebenso durch das Agieren auf API-Aufrufe oder Ähnlichem entsprechend der Anfrage
unsichtbar bearbeitet. Zum Beispiel wird ein API-Aufruf zum Enumerieren
eines freigegebenen WebDAV-Laufwerks den WebDAV-Umleiterkomponenten
bereitgestellt, welche ermitteln, ob der Server und die Beteiligung
gültig
sind, und wenn dem so ist, einen Router für mehrere Anbieter informieren,
dass die Anfrage bearbeitet werden kann. Netzwerkverbindungen werden
durch die WebDAV-Umleiterkomponenten gesteuert, um die Anfrage zu
bearbeiten. WebDAV-Dateien können
auf dem Dateisystemlevel lokal verschlüsselt und entschlüsselt werden,
was unsichtbar für
die Anwendungen und den WebDAV- Server
ist. Ein Verschlüsselungsdateisystem führt lokale
Verschlüsselung
und Entschlüsselung auf
dem lokalen Dateisystemlevel durch, wobei die Dateien bei dem Web-DAV-Server nicht
betrachtet werden können,
und der WebDAV-Server nicht mit der Verschlüsselungs- oder Entschlüsselungsbearbeitung
belastet werden muss.
-
Andere
Vorteile werden durch die folgende detaillierte Beschreibung ersichtlich,
wenn sie in Zusammenhang mit den Zeichnungen gelesen wird, in denen:
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm, das ein exemplarisches Computersystem darstellt,
in dem die Erfindung inkorporiert werden kann;
-
2 ist
ein Blockdiagramm, das allgemein Komponenten zum Implementieren
von Aspekten des WebDAV-Umleiters gemäß der vorliegenden Erfindung
darstellt;
-
3 und 4 umfassen
ein Flussdiagramm, das im Allgemeinen eine Logik zum Zugreifen auf
WebDAV-Serverdateien gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
5 ist
ein Flussdiagramm, das im Allgemeinen eine Logik zum Herunterladen
einer WebDAV-Serverdatei für
einen lokalen Zugriff gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
6 ist
ein Flussdiagramm, das im Allgemeinen eine Logik zum Zwischenspeichern
einer WebDAV-Serverdatei für
lokalen Zugriff gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
7 ist
ein Flussdiagramm, das im Allgemeinen eine Logik zum Heraufladen
einer lokal zwischengespeicherten Datei zu einem WebDAV-Server gemäß einem
Aspekt der vorliegenden Erfindung darstellt; und
-
8 ist
ein Blockdiagramm, das im Allgemeinen Komponenten zum Integrieren
von WebDAV-Dateien mit einem Verschlüsselungsdateisystem gemäß einem
anderen Aspekt der vorliegenden Erfindung darstellt.
-
DETAILLIERTE BESCHREIBUNG
-
EXEMPLARISCHE ARBEITSUMGEBUNG
-
1 stellt
ein Beispiel einer geeigneten Computersystemumgebung 100 dar,
auf der die Erfindung implementiert werden kann. Die Computersystemumgebung 100 ist
nur ein Beispiel einer geeigneten Computerumgebung und ist nicht
gedacht, irgendwelche Einschränkungen
auf den Umfang der Verwendung oder Funktionalität der Erfindung vorzuschlagen.
Noch sollte die Computerumgebung 100 so interpretiert werden
als hätte
sie irgendwelche Abhängigkeiten
oder Erfordernisse bezüglich
irgendeiner oder einer Kombination von Komponenten, die in der exemplarischen
Arbeitsumgebung 100 dargestellt sind.
-
Die
Erfindung ist mit einer Vielzahl anderer Allzweck- oder Spezialzweckcomputersystemumgebungen
oder Konfigurationen betriebsbereit. Beispiele von gut bekannten
Computersystemen, Umgebungen und/oder Konfigurationen, die für die Verwendung
mit der Erfindung geeignet sein können, schließen ein,
sind aber nicht darauf begrenzt, Personalcomputer, Servercomputer,
tragbare oder Laptopgeräte,
Tablet-Geräte,
Multiprozessorsysteme, mikroprozessorbasierte Systeme, Set-Top-Boxen,
programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputer,
Mainframecomputer, verteilte Computerumgebungen, die irgendeins
der oben genannten Systeme oder Geräte einschließen, und Ähnliches.
-
Die
Erfindung kann im allgemeinen Kontext von computer-ausführbaren
Instruktionen beschrieben werden, wie zum Beispiel Programmmodulen, die
durch einen Computer ausgeführt
werden. Im Allgemeinen schließen
Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen
usw. ein, die bestimmte Aufgaben durchführen oder bestimmte abstrakte
Datentypen implementieren. Die Erfindung kann ebenso in verteilten
Computerumgebungen praktiziert werden, wo Aufgaben durch Remote
(entfernt liegende) verarbeitende Geräte durchgeführt werden, die durch ein Datenübertragungsnetzwerk
miteinander verbunden sind. In einer verteilten Computerumgebung
können
Programmmodule sowohl in lokalen als auch Remote-Computerdatenspeicherträgern, einschließlich Datenspeichergeräten, liegen.
-
Mit
Bezug auf 1 schließt ein exemplarisches System
zum Implementieren der Erfindung ein Allzweckcomputergerät in der
Form eines Computers 110 ein. Komponenten des Computers 110 können einschließen, sind
aber nicht darauf begrenzt, eine Prozessoreinheit 120,
einen Systemspeicher 130 und einen Systembus 121,
der verschiedene Systemkomponenten einschließlich des Systemspeichers mit
der Prozessoreinheit 120 koppelt. Der Systembus 121 kann
irgendeiner von verschiedenen Busstrukturtypen sein, einschließlich einem Speicherbus
oder Speicherkontroller, einem Peripheriebus und einem lokalen Bus,
der irgendeine von einer Vielfalt von Busarchitekturen verwendet.
Als Beispiel, und nicht Einschränkung,
schließen
solche Architekturen Industry-Standard-Architecture-Bus (ISA-Bus), Micro-Channel-Architecture-Bus (MCA-Bus),
Enhanced-ISA-BUS
(EISA-Bus), Video-Electronics-Standards-Association-Local-Bus (VESA-Local-Bus), und Peripheral-Component-Interconnect-Bus
(PCI-Bus) ebenso bekannt als Mezzannine-Bus, ein.
-
Der
Computer 110 schließt üblicherweise eine
Vielfalt von computerlesbaren Datenträgern ein. Computerlesbare Datenträger können irgendein
verfügbarer
Datenträger
sein, auf den durch den Computer 110 zugegriffen werden
kann, und schließt
sowohl flüchtige
als auch nicht-flüchtig
Datenträger
und entfernbare und nicht-entfernbare Datenträger ein. Als Beispiel, und
nicht Einschränkung,
können
computerlesbare Datenträger
Computerspeicherdatenträger
und Datenübertragungsdatenträger umfassen. Computerspeicherdatenträger schließen sowohl flüchtige und
nicht-flüchtige,
entfernbare und nichtentfernbare Datenträger ein, die durch irgendein
Verfahren oder eine Technologie zur Speicherung von Informationen,
wie zum Beispiel computerlesbare Instruktionen, Datenstrukturen,
Programmmodule oder andere Daten, implementiert wurden. Computerspeicherdatenträger schließen ein,
sind aber nicht darauf begrenzt, RAM, ROM, EEPROM, flash-memory
oder andere Speichertechnologie, CD-ROM, digital versatile disks
(DVD) oder andere optische Diskspeicher, magnetische Kassetten,
magnetische Bänder,
magnetischen Diskspeicher oder andere magnetische Speichergeräte, oder
irgendeinen anderen Datenträger,
der verwendet werden kann, um die gewünschten Informationen zu speichern,
und auf den durch den Computer 110 zugegriffen werden kann.
Datenübertragungsdatenträger verkörpern üblicherweise computerlesbare
Instruktionen, Datenstrukturen, Programmmodule oder andere Daten
in einem modulierten Datensignal, wie zum Beispiel einer Trägerwelle
oder anderem Transportmechanismus und schließen irgendwelche informationsliefernde
Datenträger
ein. Der Begriff "moduliertes
Datensignal" bedeutet
ein Signal, das eine oder mehrere seiner Charakteristiken in solch
einer Weise gesetzt oder verändert
hat, dass Informationen in das Signal codiert wurden. Als Beispiel,
und nicht Einschränkung, schließen Datenübertragungsdatenträger verkabelte Datenträger, wie
zum Beispiel ein verkabeltes Netzwerk oder direktverkabelte Verbindung,
und kabellose Datenträger,
wie zum Beispiel akustische RF-, infrarote und andere kabellose
Datenträger
ein. Kombinationen von irgendwelchen der oben genannten sollten
ebenso in den Umfang der computerlesbaren Datenträger eingeschlossen
sein. Der Systemspeicher 130 enthält Computerspeicherdatenträger in der Form
von flüchtigem
und/oder nicht-flüchtigem
Speicher, wie zum Beispiel Nur-Lesespeicher (read only memory – ROM) 131 und
Speicher mit wahlfreiem Zugriff (random access memon – RAM) 132.
Ein Basic-Input/Output-System (BIOS) 133, enthält die Basisroutinen,
die helfen, Informationen zwischen Elementen innerhalb des Computers 110,
wie zum Beispiel während
des Hochfahrens, zu transferieren, ist üblicherweise in dem ROM 131 gespeichert.
Der RAM 132 enthält üblicherweise
Daten und/oder Programmmodule, auf die unmittelbar durch die Prozessoreinheit 120 zugegriffen
werden kann und/oder auf der derzeit durch die Prozessoreinheit 120 gearbeitet wird.
Als Beispiel, und nicht Einschränkung,
stellt 1 ein Betriebssystem 134, Dateisystem 135,
Anwendungsprogramme 136, andere Programmmodule 137 und
Programmdaten 138 dar.
-
Der
Computer 110 kann ebenso andere entfernbare/nicht-entfernbar,
flüchtige/nichtflüchtige Computerspeicherdatenträger einschließen. Nur
als Beispiel stellt 1 ein Festplattenlaufwerk 141,
das von oder zu nicht entfernbaren, nicht-flüchtigen magnetischen Datenträgern liest
oder schreibt, ein magnetisches Disklaufwerk 151, das von
oder zu einer entfernbaren, nicht-flüchtigen magnetischen Disk 152 liest
oder schreibt, und ein optisches Disklaufwerk 155, das
von oder zu einer entfernbaren, nicht-flüchtigen optischen Disk 156 wie
zum Beispiel einer CD-ROM oder anderem optischen Datenträger liest
oder schreibt, dar. Andere entfernbare/nicht-entfernbare, flüchtige/nicht-flüchtige Computerspeicherdatenträger, die
in der exemplarischen Arbeitsumgebung verwendet werden können, schließen ein,
sind aber nicht darauf begrenzt, magnetische Bandkassetten, Flash-Speicherkarten,
digital versatile disks, digitale Videobänder, solid-state-RAM, solid-state-ROM,
und Ähnliches.
Das Festplattenlaufwerk 141 ist üblicherweise mit dem Systembus 121 durch
eine Schnittstelle für
nicht-entfernbaren Speicher, wie zum Beispiel Schnittstelle 140,
verbunden, und das magnetische Disklaufwerk 151 und optische
Disklaufwerk 155 sind üblicherweise
mit dem Systembus 121 durch eine Schnittstelle für entfernbaren Speicher,
wie zum Beispiel Schnittstelle 150, verbunden.
-
Die
Laufwerke und ihre zugehörigen
Computerspeicherdatenträger,
die oberhalb diskutiert und in 1 dargestellt
sind, stellen Speicher für
computerlesbare Instruktionen, Datenstrukturen, Programmmodule und
andere Daten für
den Computer 110 bereit. In 1 ist zum
Beispiel das Festplattenlaufwerk 141 so dargestellt, dass
es das Betriebssystem 144, Anwendungsprogramme 145,
andere Programmmodule 146 und Programmdaten 147 speichert.
Es ist zu beachten, dass diese Komponenten entweder die selben sein
können
oder verschieden sein können
von dem Betriebssystem 134, Anwendungsprogrammen 136,
anderen Programmmodulen 137, und Programmdaten 138.
Das Betriebssystem 144, Anwendungsprogramme 145,
andere Programmmodule 146 und Programmdaten 147 sind hier
verschiedene Nummern gegeben worden, um darzustellen, dass sie wenigstens
unterschiedliche Kopien sind. Ein Benutzer kann Befehle und Informationen
in den Computer 20 durch Eingabegeräte, wie zum Beispiel ein Tablet
(elektronischer Digitalisierer) 164, ein Mikrofon 163,
eine Tastatur 162 und ein Zeigergerät 161, allgemein als
eine Maus, Trackball oder Touch-Pad bezeichnet, eingeben. Andere
Eingabegeräte
(nicht gezeigt) können
einen Joystick, Game-Pad, Satellitenschüssel, Scanner, oder Ähnliches
einschließen.
Diese und andere Eingabegeräte sind
oft mit der Prozessoreinheit 120 durch eine Benutzereingabeschnittstelle 160 verbunden,
die mit dem Systembus gekoppelt ist, können aber ebenso durch andere
Schnittstellen und Busstrukturen verbunden sein, wie zum Beispiel
einem Parallelanschluss, Game-Port oder einem Universal-Serial-Bus (USB).
Ein Monitor 191 oder anderer Typ von Anzeigegerät ist ebenso
mit dem Systembus 121 über
eine Schnittstelle, wie zum Beispiel einer Videoschnittstelle 190,
verbunden. Der Monitor 191 kann ebenso ein Berührungsbildschirmpanel
(Touch-Screen-Panel) oder Ähnliches
integriert haben. Es ist zu beachten, dass der Monitor und/oder
das Touch-Screen-Panel physikalisch mit einem Gehäuse gekoppelt
sein kann, in dem das Computergerät 110 inkorporiert
ist, wie zum Beispiel in einem Personalcomputer des Tablet-Typs.
Zusätzlich
können
Computer, wie zum Beispiel das Computergerät 110, ebenso andere
periphere Ausgabegeräte,
wie zum Beispiel Lautsprecher 195 und Drucker 196,
einschließen,
welche durch eine Ausgabeperipherieschnittstelle 194 oder Ähnliches
verbunden sind.
-
Der
Computer 110 kann in einer Netzwerkumgebung unter Verwendung
logischer Verbindungen zu einem oder mehreren Remote-Computern, wie
zum Beispiel einem Remote-Computer 180, arbeiten. Der Remote-Computer 180 kann
ein Personalcomputer, ein Server, ein Router, ein Netzwerk-PC, ein
Peer-Gerät
oder anderer allgemeiner Netzwerkknoten sein und schließt üblicherweise
viele oder alle der oben mit Bezug auf Computer 110 beschriebenen
Elemente ein, obwohl nur ein Datenspeichergerät 181 in 1 dargestellt
worden ist. Die logischen Verbindungen, die in 1 gezeigt
sind, schließen
ein Local Area Network (LAN) 171 und ein Wide Area Network
(WAN) 173 ein, aber können ebenso
andere Netzwerke einschließen.
Solche Netzwerkumbebungen sind alltäglich in Büros, unternehmensweiten Computernetzwerken,
Intranets und dem Internet. Zum Beispiel kann in der vorliegenden Erfindung
das Computersystem 110 eine Datenquellen-Maschine umfassen,
von der Daten migriert werden, und der Remote-Computer 180 kann
die Zielmaschine umfassen. Es ist jedoch zu beachten, dass die Quell-
und Zielmaschinen nicht durch ein Netzwerk oder irgendwelche anderen
Mittel verbunden sein müssen,
aber stattdessen Daten über
irgendeinen Datenträger,
der im Stande ist, durch die Quellplatfform beschrieben zu werden
und durch die Zielplattform oder andere Platfformen gelesen zu werden,
zu migrieren.
-
Wenn
er in einer LAN-Netzwerkumgebung verwendet wird, ist der Computer 110 mit
dem LAN 171 durch eine Netzwerkschnittstelle oder -adapter 170 verbunden.
Wenn er in einer WAN-Netzwerkumgebung verwendet wird, schließt der Computer 110 üblicherweise
ein Modem 172 oder andere Mittel zum Herstellen von Datenübertragungen über das
WAN 173, wie zum Beispiel dem Internet, ein. Das Modem 172,
welches intern oder extern sein kann, kann mit dem Systembus 121 über die
Benutzereingabeschnittstelle 160 oder anderen entsprechenden
Mechanismus verbunden sein. In einer Netzwerkumgebung könne Programmmodule,
die mit Bezug auf Computer 110 gezeigt sind, oder Teile
davon, in dem Remote-Datenspeichergerät gespeichert sein. Als Beispiel,
und nicht Einschränkung,
stellt 1 Remote-Anwendungsprogramme 185 dar,
so dass sie auf dem Speichergerät 181 liegen.
Es wird begrüßt, dass
die gezeigten Netzwerkverbindungen exemplarisch sind und andere
Mittel zum Herstellen einer Datenübertragungsverbindung zwischen
den Computern verwendet werden kann.
-
WEBDAV-UMLEITER (Redirector)
-
Die
vorliegende Erfindung wird im Allgemeinen in dem Kontext des Windows®XP-Betriebssystems von
Microsoft Corporation, welches das NTFS-Dateisystem verwendet, beschrieben.
Dennoch kann es leicht erkannt werden, dass die vorliegende Erfindung
mit nahezu jedem Betriebssystem und/oder Dateisystem implementiert
werden kann.
-
Mit
Bezug nun auf 2 der Zeichnungen wird ein Anwendungsprogramm
im Benutzermodus (user mode application program) 200 gezeigt,
welches verschiedene Systemfunktionen durch das Aufrufen von Anwendungsprogrammierungsschnittstellen
(APIs) 202 anfrägt.
Zum Zugreifen auf Netzwerkressourcen kann die Anwendung 200 im
Allgemeinen auf mindestens eine von zwei möglichen Art und Weisen arbeiten,
von denen eine erste das Platzieren von Datei-Eingabe/Ausgabe-API-Aufrufen
(Input/Output- I/O), die auf eine Netzwerkressource gerichtet sind,
auf einen API-Layer 202 ist. Zum Beispiel können Anwendungen
Ressourcen auf Remote-Systemen durch Verwenden eines UNC-Standards
(Uniform Naving Convention Standard) mit Win32-Funktionen untersuchen
oder darauf zugreifen, um eine Remote-Ressource direkt zu adressieren,
zum Beispiel in der Form "\\server\share", oder über ein
Laufwerk, das auf einen im Netzwerk, gemeinsam nutzbaren Ordner
oder Ähnliches
abgebildet (mapped) ist. Eine andere Möglichkeit, wie eine Anwendung
auf Netzwerkressourcen zugreifen kann, ist durch das Aufrufen von
Netzwerk-APIs, (zum Beispiel Win32-Windows-Networking-APIs (WNet)
in dem Windows®2002-Betriebssystem),
wie zum Beispiel um die Dateien auf einem Server während des Durchsuchens
aufzuzählen. Über diese
WNet-APIs können
Anwender Computer und Ressourcen, die von Computern zum Teilen exportiert
werden, aufzählen.
-
Wenn
eine Datei-I/O-API (zum Beispiel eine Datei-Öffen- oder -Erzeugen-Anfrage)
mit einem Remote-Dateinamen, wie zum Beispiel einem UNC-Namen, aufgerufen
wird, wird eine Datei-I/O-Anfrage bei einem I/O-Manager 204 empfangen.
Um den Remote-Namen handzuhaben, ruft der I/O-Manager 204 einen
Mehrfach-UNC-Bereitsteller (Multiple UNC Provider), oder MUP 206 auf,
um herauszufinden, welches Gerät
den Namen bedient (handle). Mit anderen Worten ermittelt der MUP 206 (der
zum Beispiel einen Treiber im Kernelmodus umfasst), auf welches
Netzwerk zugegriffen werden muss, wenn eine Anwendung 200 eine
I/O-API verwendet, um eine Remote-Datei zu öffnen.
-
Spezieller
gesagt, um ein Gerät
zu ermitteln, das den gegebenen Namen bedienen (bearbeiten) kann,
frägt (to
poll) der MUP 206 (über
asynchrone I/O-Anfragepakete, oder IRPs) irgendwelche Umleiter ab,
die vorher mit dem MUP registriert worden sind, zum Beispiel, Umleiter 208 und 212 in 2. Jeder
Umleiter, der den Namen bedienen kann, antwortet zurück, und
wenn mehr als einer antwortet, ermittelt der MUP 206 aus
einer Prioritätsreihenfolge (die
zum Beispiel in mindestens einem System-Registrierungsschlüssel oder Ähnlichem geführt ist), welcher
die Priorität
(Präzedenz)
hat, die Anfrage zu bedienen. In einer Implementation hat der SMB-Umleiter
(server message block redirector – Servernachrichtenblockumleiter)
standardmäßig die
erste Priorität
zur Bearbeitung von UNC-Anfragen. Der SMB-Umleiter, zusammen mit
den IRPs und dem I/O-Manager sind allgemein in dem Literaturhinweis "Inside Microsoft® Windows®2000", dritte Edition,
D. Solomon und M. Russinovich, Microsoft Press (2000) beschrieben.
-
Als
Teil der Antwort an den MUP 206 indiziert jeder Umleiter,
der den Namen erkennt, wie viel von dem Namen für ihn eindeutig ist. Zum Beispiel,
wenn der Name der UNC-Name "\\SERVER\SHARE\foo\bar1.doc" ist, erkennt der
SMB-Umleiter 208 (Server Message Block Redirector) den Namen
als im möglichen
Bearbeitungsrahmen, und wenn der Server ein SMB-Server ist, antwortet
er durch das Beanspruchen der Zeichenfolge "\\SERVER\SHARE" als seine eigene.
-
Wenn
mindestens ein Umleiter antwortet und die Zwischenspeicherinformation
bereitstellt, speichert der MUP-Treiber 206 die Information
in Zusammenhang mit dem Umleiter, der geantwortet hat, zwischen,
(wenn es mehr als einer war, speichert er die Information des einen
zwischen, der die Priorität
hält) wobei
weitere Anfragen, die mit dieser Zeichenfolge beginnen direkt an
den Umleiter, ohne die Abfragefunktion (polling operation), geschickt
werden Zum Beispiel werden zukünftige
SMB-Anfragen, die auf eine Netzwerkbeteiligung entsprechend einer
zwischengespeicherten Zeichenfolge gerichtet sind, an den SMB-Umleiter 208 weitergegeben,
welcher anschließend
jene SMB-Anfragen
in eine Datenstruktur packt, die über das Netzwerk zu diesem
Remote-SMB-Server
gesendet werden kann. Es ist zu beachten, dass die Zeichenfolgeninformation
in dem Zwischenspeicher, wenn sie für zu lange Zeit inaktiv war,
ablaufen wird, wobei das Abfragen (polling) wieder notwendig werden
wird.
-
Gemäß einem
Aspekt der vorliegenden Erfindung wird der Zugriff auf WebDAV-Sever
Anwendungen in einer Weise bereitgestellt, die im Wesentlichen unsichtbar/transparent
für die
Anwendung ist. Zu diesem Zweck wird ein WebDAV-Umleiter 210 bereitgestellt,
der Dateisystem-I/O- und Netzwerk-Befehle, die an WebDAV-Server
gerichtet sind, die durch URI-Namen (Universal Ressource Identifier Names)
identifiziert werden, unterstütz.
In einer beschriebenen Implementation, die der entspricht, die in 2 dargestellt
ist, umfasst der WebDAV-Umleiter 210 eine Umleiter-Reflektorkomponente
im Kernelmodus 212, eine Umleiterkomponente im Benutzermodus 214 (web
client service) und einen Netzwerkanbieter im Benutzermodus 216 (user
mode network provider). Die allgemeinen Funktionen und Strukturen
dieser Komponenten werden unterhalb beschrieben.
-
Im
Allgemeinen hat ein WebDAV-URI-Name die folgende Syntax, (wobei
Teile in eckigen Klammern optional sind):
http://hostname[:port][/path]
oder
https://hostname[:port)[/path]
wobei path=rootdir/...
gilt, und rootdir ein virtuelles oder physisches Verzeichnis umfasst,
das durch einen IIS-WebDAV-Server 218 dargelegt wird. In Übereinstimmung
mit der vorliegenden Erfindung, wenn der I/O-Manager 204 zum
ersten Mal eine solchen URI-Namen
empfängt,
kontaktiert der I/O-Manager 204 den MUP 206, welcher
den Namen an die verschiedenen Umleiter in der oben beschriebenen
Weise bereitstellt, einschließlich
der WebDAV-Umleiterkomponente im Kernelmodus 212, welche
konfiguriert ist, URI-Namen, wie unterhalb beschrieben, zu unterstützen. Es
ist zu beachten, dass die WebDAV-Umleiterkomponente 212 ebenso
UNC-Namen unterstützt,
um mit all den bestehenden Anwendungen, die eine Win32-Datei-I/O
versenden, kompatibel zu sein,.
-
In
der vorliegenden Erfindung wird der WebDAV-Kernel-Umleiter 212,
weil die Anfrage ein URI-Name ist, der einzige Umleiter sein, der
antwortet, (oder andernfalls die Priorität hat), vorausgesetzt, der
URI-Name identifiziert einen tatsächlichen, zugreifbaren Web-DAV-Server, wie unterhalb
beschrieben. Die Antwort wird dem MUP 206 anzeigen, dass der
WebDAV-Kernel-Umleiter 212 im Stande ist, Datei-I/O-Anfragen,
die auf diese Beteiligung (share) gerichtet sind, zu bearbeiten,
und die Informationen bereitstellt, die notwendig sind, um die Abfragefunktion
(polling operation) für
nachfolgende Anfragen, die an die selbe Beteiligung gerichtet sind,
zu umgehen.
-
Sobald
ihre Informationen in dem MUP 206 zwischengespeichert sind,
wird auf diese Weise jede I/O-Abfrage, die auf diese WebDAV-Beteiligung
gerichtet ist, zu der Web-DAV-Komponente
im Kernelmodus 212 des WebDAV-Umleiters 210 gesendet,
welcher versucht sie zu erfüllen
(zum Beispiel lokal, wie unten beschrieben). Wenn die WebDAV-Umleiterkomponente
im Kernelmodus 212 eine I/O-Anfrage nicht lokal durch das
Aufrufen des zugrundeliegenden Dateisystems erfüllen kann, wird der WebDAV-Umleiter
anschließend
die Anfrage zu der WebDAV-Umleiterkomponente im Benutzermodus 214 reflektieren,
welche einen WebDAV-Klient implementiert und versucht, die Anfrage über eine
Internet-Transport-Komponente 220 (zum Beispiel Winlnet-APIs)
und den Web-DAV-Server 218 abzuschließen. Die
WebDAV-Umleiterkomponente im Benutzermodus 214 gibt die
Steuerung (control) und irgendeine Antwort des WebDAV-Servers zurück an den WebDAV-Umweiter
im Kernelmodus 212. Auf diese Weise werden Datei-I/O- Anfragen, die an
den WebDAV-Server gerichtet sind, duch den WebDAV-Umleiter 210 bearbeitet,
wobei die Anwendung 200 einen transparenten Zugriff (zum
Beispiel wenn sie auf einem lokalen oder SNB-Netzwerklaufwerk sind)
auf jene Dateien haben wird. WebDAV-Datei-I/O-Anfragen werden unterhalb
mit Bezug auf die Flussdiagramme der 3 bis 7 beschrieben.
Es ist der Vollständigkeit
halber zu beachten, dass 2 jeden Umleiter im Kernelmodus 208 und 212 so
darstellt, dass sie mit einem zurückgerichteten Pufferuntersystem 222 (Re-Directed
Buffering Subsystem), oder RDBSS, verbunden sind, welches eine Remote-Dateisystemkomponente
umfasst, die mehrere Datei-Level-Protokolle durch das Bereitstellen
von gemeinsamem Pufferungscode für
die Umleiter im Kernelmodus, einschließlich dem SNB-Umleiter 208 und
dem WebDAV-Umleiter 212,
unterstützt.
-
In
der anderen Netzwerk-API-Alternative zum Zugreifen auf Remote-Ressourcen,
die oben erwähnt
wurden, ruft eine Anwendung 200 Netzwerk-APIs (zum Beispiel
WNet-APIs) auf,
welche es neben anderen Funktionen Anwendungen erlauben, sich mit
einer Netzwerkressource zu verbinden, wie zum Beispiel Dateiservern
und Druckern, und durch die Inhalte irgendwelcher Remote-Dateisystemtypen zu
stöbern.
Weil eine Netzwerk-API aufgerufen werden kann, um in unterschiedlichen
Netzwerken, die verschiedene Transportprotokolle verwenden, zu arbeiten,
wird ein entsprechender Netzwerkanbieter (zum Beispiel Netzwerkanbieter 216 oder 224)
verwendet, wenn eine dieser Netzwerk-APIs aufgerufen wird, um die
Anfrage korrekt über
das Netzwerk zu senden, und um die Ergebnisse, die der Remote-Server
zurückgibt,
zu verstehen.
-
Im
Allgemeinen umfasst ein Netzwerkanbieter Software-Code, der das
Betriebssystem als einen Client eines Remote-Netzwerkservers erstellt.
Zum Beispiel schließen
manche der Funktionen, die ein Netzwerkanbieter durchführt, das
Erstellen und Trennen von Netzwerkverbindungen, das entfernte (remote)
Drucken und das Übertragen
von Daten ein. Deshalb, und wie es bekannt ist, schließen übliche Funktionen,
die durch einen Netzwerkanbieter bereitgestellt werden, Fähigkeitsfunktionen,
welche es dem Aufrufer erlauben, die Fähigkeiten des Netzwerkanbieters
zu ermitteln, Benutzernamefunktionen, welche den Netzwerkanbieter
für den
Benutzernamen zugehörig
zu einer Verbindung abfragen, und Geräteumleitungsfunktionen, welche
es einem Netzwerkanbieter erlauben, Laufwerksbuchstaben, (wie unterhalb
beschrieben), MS-DOS®-Geräte und LPT-Anschlüsse umzuleiten, ein. Andere
Funktionen schließen
anbieterspezifische Dialogfunktionen, welche es einem Netzwerkanbieter
erlauben, netzwerkspezifische Informationen anzuzeigen oder darauf
zu arbeiten, administrative Funktionen, welche es einem Netzwerkanbieter
erlauben spezielle Netzwerkverzeichnisse anzuzeigen oder darauf
zu arbeiten, und Aufzählungsfunktionen,
welche es erlauben, Netzwerkressourcen zu durchstöbern, ein.
-
Um
zu ermitteln, welcher Netzwerkanbieter aufgerufen werden soll, wenn
eine Anwendung eine Netzwerkroutine der APIs 204 aufruft,
wird der Aufruf, in einer Implementation, an einen Router für mehrere Netzwerkanbieter,
oder MPR 228, welcher als eine dynamische Verbindungsbibliothek
(Dynamic Link Library- DLL) installiert ist, weitergegeben. Ähnlich zu dem
MUP 206 ermittelt der MPR 228, welcher Netzwerkanbieter
im Benutzermodus die Ressource, auf die zugegriffen wird, erkennt.
Für diesen
Zweck liefert jeder installierte Netzwerkanbieter unterhalb des MPR 228 eine
Reihe von Funktionen, die zusammengefasst als eine Netzwerkanbieterschnittstelle
bezeichnet sind, die es dem MPR 228 erlaubt, zu ermitteln,
auf welches Netzwerk die Anwendung versucht zuzugreifen, und um
die Anfrage auf die passende Netzwerkanbietersoftware zu richten.
Zum Beispiel ist der Netzwerkanbieter der SMB-mini-Umleiter 208 ein
LANMAN- (Local Area Network Manager) -Netzwerkanbieter 224,
wie es in einem Systemregistrierungsschlüssel oder Ähnlichem spezifiziert ist.
Der Netzwerkanbieter des WebDAV-Umleiters 210 ist ein WebDAV-Netzwerkanbieter 216,
der ebenso in einem Systemregistrierungsschlüssel oder Ähnlichem spezifiziert ist.
-
In
einer beschriebenen Implementation überprüft der MPR 228, wenn
er aufgerufen wurde, um mit einer Remote-Netzwerkressource zu verbinden, die
Registrierung, um zu ermitteln, welche Netzwerkanbieter geladen
sind. Der MPR 228 fragt diese dann (polls them) einen nach
dem anderen ab, in der Reihenfolge, in der sie in der Registrierung
aufgelistet sind, (was konfigurierbar ist), und jeder Netzwerkanbieter
kommuniziert mit seinem entsprechenden Umleiter, bis die Ressource
erkannt wurde oder bis alle verfügbaren
Netzwerkanbieter abgefragt worden sind. Für den Fall eines Netzwerk-API-Aufrufs, der auf
den WebDAV-Server 218 (zum Beispiel über eine URI, die als ein Aufrufparameter übergeben
wurde) gerichtet ist, wird der MPR deshalb den WebDAV-Netzwerkanbieter 216 abfragen,
welcher wiederum über
RPC (Remote Procedure Call – entfernter
Prozeduraufruf) den Webservice 214 aufrufen wird, welcher
den WebDAV-Umleiter
im Kernelmodus 212 kontaktiert, um zu ermitteln, ob die
API behandelt werden kann, zum Beispiel, ob die spezifizierte WebDAV-Beteiligung
tatsächlich
ein zugreifbarer WebDAV-Server ist. Wenn dem so ist, wird die API
durch die WebDAV-Umleiterkomponenten 210 bearbeitet.
-
Eine
andere Möglichkeit,
in der Anwendungen transparent auf Netzwerkressourcen zugreifen zu
können,
ist über
einen Laufwerksbuchstaben oder Gerätename, der vorher dieser Ressource
zugewiesen wurde (zum Beispiel über
eine Netzwerk-API, wie zum Beispiel WnetAddConnection). Für diesen Zweck
steuert die API, wenn aufgerufen, den Aufruf zu dem passenden Netzwerkanbieter,
zum Beispiel über
das Abfragen (polling) wie oben beschrieben. Der verantwortliche
Netzwerkanbieter wiederum erzeugt ein symbolisch verlinktes Objekt
(symbolic-link object) in einem Objektmanagernamensbereich, der den
definierten Laufwerksbuchstaben seinem zugehörigen Umleiter für dieses
Netzwerk zuordnet. Sobald er zugeordnet ist, und wenn die WNet oder
andere API einen Aufruf macht, um eine Ressource auf einem unterschiedlichen
Netzwerk zu öffnen,
lokalisiert der I/O-Manager (in Zusammenhang mit einem Objektmanager,
nicht gezeigt) den Umleiter, der die Anfrage bearbeitet. In Übereinstimmung
mit der vorliegenden Erfindung kann ein Benutzer deshalb ein Laufwerk
einer WebDAV-URI zuordnen, wie zum Beispiel durch die Verwendung
einer Shell, um die WnetAddConnection-API-Funktion aufzurufen, und sobald
das Laufwerk in dem Namensbereich des Objektmanagers zugeordnet
ist, können
Anwendungen auf Dateien auf dem WebDAV-Server 212 über den Laufwerksbuchstaben
zugreifen, weil das I/O-System die Zuordnung des Buchstabens zu
der korrekten URI handhabt.
-
Im
Allgemeinen kann ein Benutzer, obwohl es im Wesentlichen für Anwendungen
unsichtbar ist, mit der WebDAV-Funktionalität der vorliegenden Erfindung über ein
Systembefehlsfenster interagieren, wobei ein "net"-Befehl
eine Buchstabenbenutzerschnittstelle für eine WebDAV-Umleitung bereitstellen
wird, zum Beispiel "NET
USE* HTTP://...",
durch das Zuordnen eines Netzwerklaufwerkes, Hinzufügen eines
Netzwerk-Ortes,
Erzeugen von Verknüpfungen
(shortcuts), Öffnen
von Dateien, Koppeln (interfacing) einer Browser-Adressleiste, und
Eintippen über
eine "Start" → "Ausführen" ("run") Schnittstelle oder Ähnliches.
Wie es als verstanden gilt, können andere
Mechanismen, die mit Netzwerken umgehen, ebenso zu der aufgerufenen
WebDAV-Funktionalität führen.
-
Zurückkehrend
zu einer Erläuterung
der Funktionsweise der Erfindung, und wie es in den Flussdiagrammen
der 3 bis 7 allgemein dargestellt ist,
arbeitet der Web-DAV-Umleiter
im Kernelmodus 212, wenn er gebraucht wird, um zu ermitteln, ob
er eine gegebene URI behandeln kann, zuerst durch das Kontaktieren
des genannten Server mit einer HTTP-"OPTIONS"-Anfrage. Zum Beispiel kann dies als
Antwort auf eine Anfrage vom Typ Datei-I/O-Erzeugen/Öffnen sein,
die als ein IRP oder als Teil einer browser ähnlichen Anfrage, um die beteiligten
Ordner eines Servers anzuzeigen, ankommt, und die, wie oberhalb
beschrieben, von einem WebDAV-Netzwerkanbieter empfangen wird. Um
zu ermitteln, ob der WebDAV-Umleiter die Anfrage behandeln kann,
kontaktiert der WebDAV-Umleiter im Kernelmodus 212 die
WebDAV-Umleiterkomponente im Benutzermodus 214, um den
HTTP-OPTIONS-Aufruf zu dem identifizierten Remote-Server über seinen Servernamen
(aus der URI erlangt (parsed)) und über die Internettransportkomponente 220 (zum
Beispiel Winlnet) auszugeben. Dies ist allgemein in 3 durch
die Schritte 300, 302 und 304 dargestellt.
-
Eine
Möglichkeit
ist es, dass der Remote-Server nicht auf die OPTIONS-Anfrage antwortet, (zum
Beispiel wird ein Timeout erreicht oder etwas Unlesbares kommt zurück), während es
eine andere Möglichkeit
ist, dass der Remote-Server antwortet, aber es kein WebDAV-Server
ist, was von der zurückgegebenen
Information in der Antwort auf die OPTIONS-Anfrage ermittelbar ist.
Die Schritte 306 und 308 stellen die Handhabung
dieser Möglichkeiten dar,
wobei der Schritt 310 die Fehlerbehandlung darstellt. Wenn
zum Beispiel der MUP 206 den WebDAV-Umleiter im Kernelmodus 212 abfragt,
kann in einer beschriebenen Implementation die Fehlerbehandlung
einfach das Antworten an den MUP 206 mit einem Fehlercode
oder Ähnlichem
umfassen, was anzeigt, dass er den bestimmten Pfad nicht handhaben
kann. Wenn die Funktion durch den MPR 228 initiiert war,
der den WebDAV-Netzwerkanbieter 214 aufruft, welcher wiederum
den WebDAV-Umleiter
im Kernelmodus 212 kontaktiert, um herauszufinden, ob er
die URI behandeln könnte,
kann der WebDAV-Umleiter im Kernelmodus 212 dem WebDAV-Netzwerkanbieter 214 negativ
antworten, um passend zu handeln. Es ist zu beachten, dass es möglich ist,
obwohl es nicht notwendig ist, einen Zeitüberschreitungsfehler bei Schritt 206 dadurch
zu handhaben, dass es ein paar mal wiederholt versucht wird (zurück zu Schritt 304),
bevor die Funktion als ein Fehler erachtet wird.
-
Wenn
bei den Schritten 306 und 308 der Server mit Informationen
antwortet, die anzeigen, dass der Server ein WebDAV-Server ist,
wird Schritt 312 ausgeführt,
welcher das Erhalten irgendwelcher relevanter Informationen, die
in der Antwort auf die HTTP-OPTIONS-Anfrage
zurückgegeben
wurden, darstellt, zum Beispiel eine Liste von Fähigkeiten des Servers. Zu dieser
Zeit fährt
der Schritt 312 aus 3 zu Schritt 400 aus 4 weiter,
soweit erforderlich.
-
Die 4 und 5 stellen
ein Beispiel dar, was passiert, wenn eine URI für eine URI angefragt wird,
die einen Server, eine Beteiligung und Pfad spezifiziert, zum Beispiel
in einer Datei-I/O-Anfrage, um eine Datei auf einem WebDAV-Server
zu öffnen/erzeugen.
Es sollte beachtet werden, dass der Netzwerkanbieter 216 solche
Informationen nicht anfragen muss, aber stattdessen, zum Beispiel
einfach eine Aufzählung
der Beteiligungen auf dem WebDAV-Server anfragt, in welchem Fall
eine spezifische Beteiligung und Pfad nicht vorhanden sein müssen. Ebenso
kann die Anfrage für
eine Aufzählung
der Dateien auf einer Beteiligung sein, in welchem Fall keine bestimmte
Datei für
das Erzeugen/Öffnen
identifiziert werden wird. Deshalb kann der Netzwerkprovider zum
Beispiel dem MPR antworten, der diesen URI handhabt, wobei der Server-Name
und Beteiligung oder Beteiligungen für eine spätere Verwendung zwischengespeichert
werden können,
wobei der anfragenden Anwendung das passende Ergebnis geliefert wird.
Solche Aufzählungen
und Ähnliches
(zum Beispiel das zuordnen von Laufwerken, Erstellen von impliziten
Verbindungen) sind jedoch relativ unkompliziert, und deshalb werden
sich die Beispiele der Einfachheit wegen unterhalb auf das Öffnen, Lesen
und Schreiben einer WebDAV-gespeicherten Datei, auf die über eine
Datei-I/O-Funktion zugegriffen wird, konzentrieren.
-
Bei
Schritt 400 aus 4 versucht der Prozess, sobald
bekannt ist, dass der Server WebDAV unterstützt, die Eigenschaften der
in der URI identifizierten Beteiligung über eine WebDAV-PROPFIND-Anfrage,
die die Beteiligung identifiziert, zu erlangen. Es ist zu beachten,
dass dies wie oberhalb beschrieben über eine Umleiterkomponente
im Benutzermodus 214 (welche zum Beispiel regelmäßig abfragt
(poll), um auf Web-Services gerichtete Anfragen zu erlangen, wenn
sie durch die Kernelmoduskomponente vorbereitet (readied) werden)
und der Internet-Transportkomponente 220 erreicht wird. Schritt 402 stellt
das Evaluieren dar, ob die PROPFIND-Anfrage erfolgreich war. Zum
Beispiel kann die PROPFIND-Anfrage dazu führen, dass der Server mit einem
Fehler antwortet (zum Beispiel wenn die angefragte Beteiligung nicht
existiert) oder die PROPFIND-Anfrage
kann eine Zeitüberschreitung ohne
eine Antwort haben. Wenn die PROPFIND-Anfrage fehlschlägt, wird die Fehlerbehandlung
bei Schritt 410 dargestellt, welche, wie es als verstanden gilt,
darin variieren kann, was angemessen ist. Zum Beispiel kann eine
negative Antwort an den MUP oder MPR ausreichen, wie oberhalb beschrieben. Unter
anderen Umständen,
wie zum Beispiel, wenn der Server eine WebDAV-Beteiligung ist, aber
die bestimmte angefragte Beteiligung nicht existiert, wäre eine
Antwort angebracht, die letztendlich die Anwendung informiert, das
die spezifizierte Beteiligung nicht gefunden wurde. Natürlich ist
es möglich,
jeden Zeitüberschreitungsfehler
oder Ähnliches
wieder zu versuchen, wie es gewünscht
ist, bevor ein Fehler in Betracht gezogen wird.
-
Für den Fall
dass die Eigenschaften der Beteiligung zurückgegeben werden, werden sie
in einem Datei-Steuerungsblock (file control block) oder Ähnlichem
bei Schritt 404 aufbewahrt. Zum Beispiel, wie unterhalb
beschrieben, kann eine der Eigenschaften anzeigen, dass der Beteiligungsordner
verschlüsselt
ist, was das System wissen muss, so dass jede neu erzeugte Datei
in diesem Ordner in verschlüsselter
Form auf dem Web-DAV-Server
gespeichert wird. Datei-Steuerungsblöcke sind gut bekannte Datenstrukturen
für das
Führen
von Informationen zugehörig
zu Objekten eines Dateisystems, und werden deshalb der Einfachheit
halber hier nicht beschrieben.
-
Wenn
der Schritt 402 und der nachfolgenden Schritt 404 erfolgreich
ausgeführt
wurden, wird der Schritt 406 ausgeführt, um eine PROPFIND-Anfrage auf
dem identifizierten Pfad auszugeben, um die Dateieigenschaften zu
erlangen, zum Beispiel über
die Umleiterkomponente im Benutzermodus 214. Wenn die Datei
existiert und kein anderer Fehler (zum Beispiel keine Antwort),
wie durch Schritt 408 ermittelt, aufgetreten ist, wird
Schritt 412 durchgeführt,
um die Dateieigenschaften in den Dateisteuerungsblock zu platzieren.
Zu dieser Zeit antwortet die Umleiterkomponente im Kernelmodus 212 mit
einer Erfolgsmeldung, zum Beispiel an den MUP 206, mit
Informationen, die veranlassen, dass der MUP den "Server/Beteiligung"-Teil der URI, wie
oberhalb diskutiert, zwischenspeichert. Es sollte beachtet werde,
dass manche oder alle der WebDAV-Anfragen in einer einzelnen PROPFIND-Anfrage,
die den Pfad spezifiziert, erreicht werden können. Ebenso kann der "Server/Beteiligung"-Teil der URI infolge
einer erfolgreichen PROPFIND(Beteiligungs)-Funktion zwischengespeichert
werden. In einer bevorzugten Implementation ist es jedoch herausgefunden
worden, dass das separate Ausgeben einer OPTI-ONS-Anfrage, einer PRPOFIND-(Beteiligungs)-Anfrage
und dann einer PROPFIND(Pfad)-Anfrage, die gewünschten übergreifenden Ergebnisse für verschiedene
tatsächliche
Umstände
bereitstellt.
-
Sobald
es bekannt ist, dass die Datei existiert und ihre Eigenschaften
empfangen worden sind, wird Schritt 500 in 5 ausgeführt, um
eine "GET"-Anfrage auszugeben,
um die Datei auf einem lokalen Speicher zu empfangen. Eine Möglichkeit, dass
dies erreicht werden kann, ist es, dass die WebDAV-Umleiterkomponente
im Benutzermodus 214 die Internet-Transport-Komponente 220 instruiert,
die Datei auf das Empfangen hin zwischenzuspeichern. Zum Beispiel
kann mit der Winlnet-Funktionalität ein privater, pro Benutzer
und/oder versteckter Zwischenspeicher 240 im Voraus spezifiziert
werden (zum Beispiel logisch getrennt von einem anderen lokalen
Dateisystem und aus dem Internet zwischengespeicherten Dateien 242).
Wenn die Dateidaten empfangen wurden, wird die Internet-Transportkomponente 200 die
abgerufenen Dateidaten über
das lokale Dateisystem 244 (zum Beispiel NTFS, welches mit
dem Dateisystem 135 aus 1 übereinstimmen kann)
eher zu dem spezifizierten Ort 240 zwischenspeichern, als,
zum Beispiel, in einen regulären
Ordner oder den Zwischenspeicher, der für normalen Internet-Inhaltsempfang
verwendet wird.
-
Für den Zweck
der Einfachheit wird die vorliegende Erfindung in erster Linie mit
Bezug auf das Herunterladen der gesamten Datei als ein Ganzes über eine
GET-Anfrage (Schritt 500), und einem späterem Zurückschreiben auf dem WebDAV-Server
als ein Ganzes über
eine PUT-Anfrage, wenn die Anwendung die Datei schließt, beschrieben.
Nichtsdestotrotz sind READ RANGE (Lesebereich) und andere Erweiterungen
gut verstandene Alternativen zum Herunterladen von Dateidaten. Ausserdem
gilt es als verstanden, dass, obwohl, WRITE RANGE (Schreibebereich)-Anfragen
derzeit nicht in WebDAV implementiert sind, das Zurückschreiben
der Datei in Bereichen/Teilen, im Gegensatz zu der gesamten Datei, ebenso
eine praktische Alternative ist.
-
Als
Beispiel können
auch anstatt (oder zusätzlich
zu) dem Herausgeben einer GET-Anfrage eine
oder mehrere READ-RANGE-Anfragen spezifiziert sein. Dies würde es erlauben
einige Dateidaten zu empfangen, ohne das Herunterladen der gesamten
Datei abzuwarten, was eine mehr zufrieden stellende Benutzererfahrung
bieten würde,
insbesondere bei sehr großen
Dateien und/oder einer Verbindung mit geringer Bandbreite. Zum Beispiel
könnte bei
einer existierenden Datei, weil die Datei-Öffnen-Anfrage der Anwendung üblicherweise
von einer Lese-Anfrage gefolgt wird, eine separate READ-RANGE-Anfrage wenigstens
manche (zum Beispiel der erste Teil) der wahrscheinlich angefragten
Daten der Anwendung verfügbar
gemacht werden, ohne darauf zu warten, dass die GET-Anfrage abgeschlossen
ist. Alternativ könnten
mehrere READ-RANGE-Anfragen
gesendet werden, um die Dateidaten herunterzuladen. Wie es verstanden
wird, können,
wenn verwendet, READ-RANGE-Anfragen auf Wunsch gemacht werden, wenn
Daten benötigt werden
und/oder es kann im Vorgriff auf zu lesende Daten gemacht werden.
Wie es ebenso verstanden wird, wenn es der Anwendung erlaubt wird,
die Datei zu beschreiben, dann kann es jedoch nicht erlaubt sein,
dass irgendwelche beschriebenen (veränderten) Teile der Datei mit
eingehenden Daten überschrieben
werden, oder das Geschriebene würde verloren
gehen. Zu diesem Zweck würden
solche veränderten
Teile verfolgt werden müssen,
wie zum Beispiel über
eine Bitmap, wobei die Daten gehalten werden, entweder durch Nichtschreiben
der Veränderungen
an der Datei, bis die GET-Anfrage oder READ-RANGE-Anfrage zu der
veränderten
Region abge schlossen ist, oder durch das Verhindern des Überschreibens
veränderter
Regionen durch heruntergeladene Daten.
-
Zurückkehrend
zur 5, stellt Schritt 500 das Ausgeben der
GET-Anfrage zum Lesen der Daten der gesamten Datei dar. Wenn sie
nicht erfolgreich war, kann die Anfrage eine bestimmte Anzahl von
Malen wiederholt werden, bevor von einem Fehler ausgegangen wird,
aber sobald ein Fehler ermittelt wurde, wird er bei Schritt 510 behandelt,
wie zum Beispiel durch das Zurückgeben
eines geeigneten Fehlercodes an die Anwendung, als Reaktion auf
die fehlgeschlagene Datei-Erzeugen/Öffnen-API-Anfrage.
-
Der
Prozess führt
bei Schritt 600 von 6 fort,
welcher das Zwischenspeichern der heruntergeladenen Daten darstellt.
Bei Schritt 600 wird eine Entscheidung gemacht, ob die
heruntergeladene Datei verschlüsselt
ist, wie unterhalb beschrieben. Dies kann dadurch getan werden,
dass Dateiattributinformationen überprüft werden
und/oder durch die Verwendung einer Verschlüsselungsdateisystemfunktion,
die die Daten von irgendeiner Datei evaluiert, und ermittelt, ob
sie durch das Verschlüsselungsdateisystem
verschlüsselt
ist. Das Verschlüsselungsdateisystem
wird unten mit Bezug auf 8 beschrieben.
-
Für den Zweck
des vorliegenden Beispiels, wird zu dieser Zeit nicht davon ausgegangen,
dass die Datei verschlüsselt
ist, und deshalb geht der Schritt 600 zu Schritt 602 weiter,
welcher eine Datei in dem lokalen Dateisystem, zum Beispiel in einem versteckten,
privaten WebDAV-Zwischenspeicher 240 öffnet (erzeugt), und Schritt 604 schreibt
die Dateidaten (zum Beispiel aus den Pufferspeichern des Internet-Transports 220)
in die Datei in dem Zwischenspeicher 240. Der Vorgang kehrt
dann zur 5, Schritt 504, zurück, um den
Datei-Handle zurückzugeben
und damit an die Anwendung, und deshalb kann die Datei zu dieser
Zeit offen gelassen werden.
-
Sobald
sie lokal zwischengespeichert ist, wird die lokal zwischengespeicherte
Dateiinformation (zum Beispiel ein durch das Dateisystem 244 zurückgegebenes
Datei-Handle) den WebDAV-Umleiterkomponenten 210 verfügbar gemacht,
wie es durch Schritt 504 dargestellt wird. Schritt 506 stellt
das Zurückgeben
dieses Handle an den I/O-Manager 204 dar, welcher das Handle
der Anwendung 200 über die
API-Antwort bereitstellt. Es ist zu beachten, dass das File-Handle
(Identifizierer), das durch das NTFS-Dateisystem 240 an
die WebDAV-Komponenten 210 gegeben wurde, nicht das gleiche
Datei-Handle ist, das der WebDAV-Umleiter im Kernelmodus 212 an
den I/O-Manager 204 zurückgibt,
sondern eher eines, das erzeugt wird, um ihm zu entsprechen. In
jedem Fall kennt der WebDAV-Umleiter im Kernelmodus 212 das
Datei-Handle, das die Anwendung 200 hat, wobei, wie es
unten beschrieben wird, der WebDAV-Umleiter im Kernelmodus 212 entdecken
kann, wann dieses Datei-Handle geschlossen wird und danach die Datei
zurück
auf den WebDAV-Server 218 legt.
-
Einige
Zeit, nachdem die Datei geöffnet
ist, verwendet die Anwendung das Datei-Handle in einer Datei-I/O-Anfrage
(zum Beispiel beim Lesen oder Schreiben), die an den I/O-Manager 204 über eine Datei-I/O-API
gesendet wurde, wie es durch Schritt 508 dargestellt wird.
Wie es bekannt ist, wird als ein Ergebnis dieses I/O-bezogenen API-Aufrufs
ein IRP entsprechend dieser Anfrage durch den WebDAV-Umleiter im
Kernelmodus 212 empfangen, was in dem Treiber-Stack ist.
Der WebDAV-Umleiter im Kernelmodus 212 erkennt das Datei-Handle
und (zum Beispiel wenn die Datei nicht bei Schritt 512 geschlossen
worden ist) erfüllt
die Anfrage durch das einfache Weitergeben des IRP an den Dateisystemtreiber 244 bei
Schritt 514, wobei der Handle-Wert in dem IRP in das Handle
der zwischengespeicherten Datei übersetzt
wird, wenn sich etwas geändert
hat. Mit anderen Worten, weil in dem vorliegenden Beispiel die gesamte
Datei in dem lokalen Speicher 240 vorhanden ist, bis die
Datei geschlossen wird, werden irgendwelche Datei-I/O-Anfragen (in
der Form von IRPs), um von/zu dieser Datei, wie sie durch das Handle
identifiziert wird, zu lesen oder zu schreiben, durch den WebDAV-Umleiter
im Kernelmodus 212 zu dem Dateisystemtreiber 244 weitergegeben,
der das Datei-Handle falls notwendig anpasst. Auf diese Weise wird
das Lesen und Schreiben über
das Dateisystem 244 auf der lokalen Dateikopie gemacht,
was diesen Aspekt des Umleiters im Kernelmodus 2121 einfach
hält.
-
Eventuell
wird die Anwendung 200 das Schließen der Datei anfragen, wie
es durch Schritt 512 entdeckt wird, welcher dann zu Schritt 516 weitergeht.
Es ist zu beachten, dass für
die Efiizienz der Umleiter im Kernelmodus 212 verfolgen
kann, ob mindestens eine Schreibanfrage oder andere (zum Beispiel
Eigenschafts-) Veränderung
stattfand, so dass, wenn nicht (wobei die Datei möglicherweise nicht
verändert
wurde), über
Schritt 516, die identische Datei nicht auf den WebDAV-Server 218 zurückgelegt
werden muss. Jedoch wird, wenn sie modifiziert wurde, wie durch
Schritt 516 entdeckt, um die Datei auf dem WebDAV-Server
zu bewahren, zu der Zeit des Dateischließens, der Umleiter im Kernelmodus 212 eine
PUT-Anfrage ausgeben, um den Dateiinhalt auf den WebDAV-Server 218 über den
Umleiter im Benutzermodus 214 und die Internet-Transportkomponente 220 hochzuladen.
-
7 stellt
die PUT-Anfrage dar, die die Datei zu dem Server hochlädt. Die
Schritte 700, 702 und 704 sind darauf
gerichtet, zu testen, ob die Datei verschlüsselt ist, wie unterhalb beschrieben.
Weil in dem vorliegenden Beispiel zu dieser Zeit die Datei nicht verschlüsselt ist,
stellen Schritte 706 und 708 das Übertragen
der Dateiinhalte zu einem Übermittlungs-Zwischenspeicher
(zum Beispiel des Internet-Transports 220) oder Ähnliches,
der die Eigenschaft des Anfrageobjekthauptteils hält, und
das Schließen
der lokalen Datei, sobald das Lesen abgeschlossen ist, dar.
-
Schritt 722 stellt
das Ausgeben der "PUT"-Anfrage zum Heraufladen
der Datei zu dem WebDAV-Server 218 dar. Wie mit anderen
Datenübertragungen
wird dies über
die Web-Services
der WebDAV-Umleiterkomponente im Benutzermodus 214 in Verbindung
mit dem Internet-Transport 220 durchgeführt. Schritt 722 kehrt
dann zu Schritt 518 aus 5 zurück.
-
Schritt 518 in 5 stellt
das Testen dar, ob die PUT-Anfrage erfolgreich war. Wenn PUT nicht
erfolgreich war, kann der WebDAV-Umleiter im Kernelmodus 212 bei
Schritt 520 in Aktion treten, um sicherzustellen, dass
irgendwelche Veränderungen
nicht verloren gehen. Zum Beispiel kann der WebDAV-Umleiter im Kernelmodus 212 Information
(zum Beispiel in der Registrierung) bewahren, die den Ort der lokal zwischengespeicherten
Datei und andere relevante Information anzeigt, so dass der WebDAV-Umleiter im
Kernelmodus 212 später
die Datei auf den WebDAV-Server schreiben kann, wie zum Beispiel
wenn die Konnektivität
dorthin wiederhergestellt wurde. Damit die Dateidaten nicht vorrübergehend
verloren gehen, kann der WebDAV-Umleiter im Kernelmodus 212 ebenso
solch eine unbeschriebene lokale Kopie, anstatt der WebDAV-Kopie,
wieder öffnen,
wenn es angefragt wurde, bis der WebDAV-Umleiter im Kernelmodus 212 in
der Lage ist, die lokale Kopie erfolgreich auf den WebDAV-Server
hochzuladen und einen normalen Betrieb wiederaufzunehmen.
-
Wenn
die PUT-Anfrage bei Schritt 518 erfolgreich war, (oder
wenn die Datei bei Schritt 516 nicht modifiziert war),
dann wird Schritt 522 ausgeführt, um irgendwelche Aufräum-Funktionen oder Ähnliches durchzuführen. Auf
diese Weise werden die Daten von der Perspektive der Anwendung transparent
zu und von einem WebDAV-Server 218 wie jede andere gespeicherte
Datei übertragen.
Es ist jedoch zu beachten, dass die lokale Datei vorzugsweise nicht
gelöscht
wird, sondern lokal behalten wird (wenigstens für manche Zeit), für den Fall,
dass der Benutzer sich entscheidet, die Datei, zum Beispiel relativ
bald, wieder zu öffnen.
Auf diese Weise kann die zwischengespeicherte Datei (wenn sie nicht
modifiziert worden ist) wieder verwendet werden, anstatt eine GET-Anfrage zu erfordern,
um die Datei von dem Server herunterzuladen. Es sollte beachtet
werden, dass die Sicherheit durch den Internet-Transport, zum Beispiel
die Winlnet-APIs,
gehandhabt wird, welcher die Authentifizierung des Servers behandelt.
Dies schließt
eine Passport-Authentifizierung ein. Wie es bekannt ist, ist Microsoft®-Passport
ein Online-Service, der Benutzer mit einem sicheren Zugriff auf mehrere
Passport-fähige
Websites und Services unter lediglicher Verwendung einer E-Mailadresse
und eines einzelnen Passwortes bereitstellt.
-
Auf
die oben genannte Weise können
bestehende Anwendungen den Vorteil eines WebDAV-Dateizugriffs auf
eine Weise erlangen, die im Wesentlichen unsichtbar von der Perspektive
der Anwendung im Benutzermodus ist. Als ein Ergebnis arbeiten Anwendungen
einfach mit einer WebDAV-Datei, als wäre sie auf einem lokalen Laufwerk
oder SMB-Netzwerklaufwerk. Weil WebDAV ein Dateizugriffsprotokoll
ist, das über
HTTP läuft,
läuft WebDAV
jedoch über
die existierende Internetinfrastruktur (zum Beispiel durch Firewalls
und Router), was einen Zugriff auf Dateien im Wesentlichen von irgendeinem
Internetverbundenen Ort bereitstellt.
-
VERSCHLÜSSELTE WEBDAVDATEIEN
-
In
bekannten früheren
Netzwerkspeicherlösungen
kann eine Datei eine zugehörige
Zugriffskontrollliste (Acces Control List – ACL) haben, wobei nur Benutzer,
die Rechte für
eine Datei haben, auf sie zugreifen können. Dies setzt jedoch ein
sicheres Dateisystem, wie zum Beispiel NTFS, und vertrauenswürdige Systemadministratoren
voraus, was außerhalb eines
kontrollierten Firmennetzwerkes oder Ähnlichem (wie zum Beispiel
mit WebDAV) nicht tatsächlich
der Fall sein wird. Des Weiteren haben, selbst mit ACLs, Netzwerkadministratoren
Zugriff auf die Dateien, und während
dies für
geschlossene Firmenumgebungen akzeptabel ist, gibt es keine sicheren
Annahmen, die gemacht werden können,
wie sorgfältig
aussenliegende Speicheranbieter die Daten eines Clients speichern
werden, zum Beispiel auf welchem Dateisystem, wie sicher vor Hackern
oder wer Administratorenrechte haben wird.
-
Frühere Netzwerkspeicherlösungen behandelten
manche dieser Probleme durch das Verschlüsseln der Dateidaten auf ihren
Speicherdatenträgern,
und anschließend,
wenn sie abgerufen wurden, durch das Entschlüsseln der Daten und das Senden
von diesen in einem unverschlüsseltem
Format an den Empfänger,
welcher die Datei dann wieder entschlüsseln kann. Obwohl die unverschlüsselten
Dateidaten mit einem anderen Proto koll selbst sicher gesendet werden
können,
hat ein solches System inhärente
Probleme. Ein solches Problem ist das Hochladen auf den Server,
zum Beispiel, wenn der Server viele Clients unterstützt und
jede eingehende und ausgehende Transaktion verschlüsseln und
entschlüsseln
muss, wird die Leistung signifikant reduziert. Ein anderes Problem
ist, dass der Server in der Lage sein muss, Dateien, die auf seinem
System gespeichert sind, zu entschlüsseln, wobei ein Kompromittieren
des Servers die Daten kompromittiert.
-
Gemäß einem
anderen Aspekt der Erfindung können
WebDAV-Dateien lokal auf der Dateisystemebene verschlüsselt und
entschlüsselt
werden, was für
Anwendungen und den WebDAV-Server transparent ist. Weil WebDAV-Dateien
in irgendeinem Format arrangiert sein können, kann der lokale Client
die Dateien lokal verschlüsseln,
in eine Reihe von binären
Bits, die ohne einen Schlüssel
nicht lesbar sind, welcher dem Server nie gegeben wird, wobei die
Dateien auf dem Server nie entschlüsselt werden können. Als
ein Ergebnis, weil der Server die Daten nie in unverschlüsselter
Form empfängt,
können die
Clients vertrauliche Informationen auf dem Server halten, ohne sich
darüber
Sorgen machen zu müssen,
dass sie gesehen werden, unabhängig
davon, wie sie gespeichert werden, und wer Zugriff darauf hat. Außerdem,
weil bei einer verschlüsselten
Datei der WebDAV-Server einfach eine bereits verschlüsselte Datei
empfängt
oder sendet, braucht der Server keine zusätzliche Verschlüsselungs-
oder Entschlüsselungsarbeit
zu leisten, um zu versuchen, die Daten zu schützen.
-
Um
solch eine lokale, transparente Verschlüsselung und Entschlüsselung
für WebDAV-Dateien bereitzustellen,
setzt die Umleiterkomponente im Kernelmodus 212 die Technologie
des Verschlüsselungsdateisystems
(Encrypting File System – EFS),
das durch das NTFS-Dateisystem bereitgestellt wird, wirksam ein.
Wie es in dem US-Patent mit der Nummer 6,249,866 beschrieben ist,
verschlüsselt
und entschlüsselt
EFS automatisch Dateidaten auf der Dateisystemebene unter Verwendung
eines Verschlüsselungsschemas
mit einem öffentlichen/privaten-Schlüsselpaar.
Dateien können
(zum Beispiel durch den Benutzer) als verschlüsselt markiert sein, oder gesamte
Ordner können
als verschlüsselt
markiert sein, in welchem Fall irgendwelche Dateien in diesem Ordner
in verschlüsselter Form
gespeichert werden. Es ist zu beachten, dass derzeit EFS nur mit
dem NTFS-Dateisystem arbeitet. Die WebDAV-Umleiterkomponente im
Kernelmodus 212 kann überprüfen, wo
sie die Datei hinlegt, um sicherzustellen, dass es in dem NTFS-Dateisystem
ist.
-
Im
Allgemeinen arbeitet EFS wie allgemein in 8 dargestellt,
in einer Implementierung, die eine verknüpfte Bibliothek (linked library) 847 (zum Beispiel
eine DLL) des Verschlüsselungsdateisystems
(Encrypting File System – EFS),
eine EFS-Runtime-Bibliothek
(FSRTL) 848 und einen EFS-Service 850 umfasst.
Die EFS-verknüpfte
Bibliothek 847 registriert sich mit dem Dateisystem 244,
wobei das Dateisystem eine Verschlüsselungsfunktionalität bereitstellt,
die (zum Beispiel für
eine Anwendung) dadurch transparent ist, dass die Funktionen der EFS-verknüpften Bibliothek
aufgerufen werden, die in einer Funktionstabelle 847A oder Ähnlichem aufgelistet sind,
die durch das Dateisystem während
der Registrierung erfasst wird.
-
Während der
Initialisierung registriert die EFS-verknüpfte Bibliothek 847 Rückrufroutinen
der Dateisystem-Runtime-Bibliothek (Routinen der FSRTL 848)
mit dem NTFS 244, die in der Funktionstabelle 847A geführt werden. Wie unterhalb beschrieben
verwendet NTFS 244 diese Routinen der FSRTL 848,
um Rückrufe
zu starten, um dateiverschlüsselungsbezogene
Dienste zu erlangen. Die EFS-verknüpfte Bibliothek 847 stellt
die Unterstützung
bereit, um mit dem EFS-Service im Benutzermodus 850 zum
kommunizieren, der als Teil des Sicherheitsuntersystems läuft. Während der
Initialisierung (oder alternativ wenn die Verschlüsselung
oder Entschlüsselung
das erste Mal gebraucht wird) kommuniziert die EFS-vernüpfte Bibliothek 847 mit
dem EFS-Service 850 unter Verwendung einer GenerateSessionKey-Schnittstelle
(Schnittstelle zur Sessionschlüsselerzeugung),
um einen symmetrischen Session-Schlüssel herzustellen, der verwendet
wird, um sicher zwischen der IFS-verknüpften Bibliothek 847 und
dem EFS-Service 850 zu kommunizieren. Daten, die zwischen
den zweien kommuniziert werden, sind unter Verwendung dieses Session-Schlüssels verschlüsselt. Dieser
Session-Schlüssel
wird ebenso durch Aufrufe zu der FSRTL 848 verwendet, um I/O-Steuerungen
von dem EFS-Service 850 zu entschlüsseln. Während des Öffnens einer verschlüsselten
Datei kommuniziert die EFS-verknüpfte
Bibliothek 847 mit dem EFS-Service 850 durch das
Weitergeben der Datei-Metadaten, einschließlich Feldern zur Datenentschlüsselung
und Datenwiederherstellung, die in EFS-verschlüsselten Dateien gehalten werden,
um den Dateiverschlüsselungsschlüssel und irgendwelche
Aktualisierungen an den Datei-Metadaten zurückzubekommen. Die Datei-Metadaten
können
aktualisiert werden, weil der Benutzer zu einem neuen Schlüssel wechseln
kann, oder weil der Schlüssel
des Wiederherstellungsagenten aktualisiert werden kann. Die EFS-verknüpfte Bibliothek 847 gibt
diese Informationen an die FSRTL 848 weiter.
-
Während der
Verschlüsselung
einer Datei oder eines Verzeichnisses im Klartext oder während des
Erzeugens einer neuen verschlüsselten
Datei kommuniziert die EFS-verknüpfte Bibliothek 847 mit dem
EFS-Service 850, um einen neuen Dateiverschlüsselungsschlüssel und
Verschlüsselungsmetadaten
für die
verschlüsselte
Datei zu bekommen. Die EFS-verknüpfte
Bibliothek 847 gibt diese Informationen ebenso an die FSRTL 848 weiter.
-
Die
FSRTL 848 ist ein Modul, das NTFS-Aufrufe implementiert,
um verschiedene Funktionen des Dateisystems 244, wie zum
Beispiel Lesen, Schreiben und Öffnen,
die auf verschlüsselte
Dateien und Verzeichnisse angewandt werden, sowie Funktionen zum
Verschlüsseln,
Entschlüsseln
und Wiederherstellen von Dateidaten, wenn sie zu oder von einer Disk
geschrieben oder gelesen werden, handzuhaben. Zu diesem Zweck stellt
die vorliegende Erfindung einen Aufrufmechanismus bereit, der eine Schnittstelle
zwischen NTFS 244 und der FSRTL 848 bereitstellt.
Diese Schnittstelle ist für
jegliche passende Bibliothek (und Treiber) allgemein, die Daten transformieren,
und deshalb ist die Schnittstelle zwischen NTFS 244 und
FSRTL 848 besser als eine Datentransformtionsschnittstelle 852 bezeichnet.
-
Funktionen
zwischen der EFS-verknüpften Bibliothek 847 und
FSRTL 848 schließen
das Schreiben von EFS-Attributdaten (Entschlüsselungsdaten und Wiederherstellungsfelder)
als Dateiattribute, und das Kommunizieren eines Dateiverschlüsselungsschlüssels, der
in dem EFS-Service 850 berechnet wurde, an die FSRTL 848 ein,
so dass er in dem Kontext einer geöffneten Datei eingerichtet
werden kann. Dieser Dateikontext wird anschließend für eine transparente Verschlüsselung
und Entschlüsselung
auf das Schreiben und Lesen von Dateidaten zu und von dem nicht-flüchtigen
Speicher 240 verwendet.
-
Die
Datentransformationsschnittstelle 852 koppelt die EFS-verknüpfte Bibliothek 847 mit
dem Dateisystem 244 zum Bewerkstelligen einer Dateiverschlüsselung.
Die EFS-verknüpfte Bibliothek 847 registriert
dieses Aufrufe mit dem Dateisystem 244, wobei das Dateisystem 244 die
registrierten EFS-Aufruffunktionen zu geeigneten Zeiten verwendet,
um die verschiedenen Verschlüsselungs-
und Entschlüsselungsaufgaben,
die der Benutzer anfragt, durchzuführen. Die Datentransformationsschnittstelle 852 schließt eine
Anzahl von Funktions-Pointern oder -Aufrufen ein. Ein erster Aufruf,
den das Dateisystem 244 verwendet, der FileCreate-Aufruf
(Dateierzeugungsaufruf), berichtet den registrierten EFS-Funktionen,
dass ein Datenstrom erzeugt oder geöffnet wurde.
-
Wenn
eine Anwendung eine Datei öffnet oder
erzeugt, ermittelt das I/O-Untersystem, das den I/O-Manager 204 einschließt, dass
die Datei von einem bestimmten Dateisystem ist, zum Beispiel eine NTFS-Datei,
und gibt die Anfrage an das NTFS 244 weiter. Das NTFS 244 ermittelt,
ob EFS an der Datei interessiert ist, zum Beispiel, wenn die Datei
in einem verschlüsselten
Verzeichnis erzeugt wird, oder wenn ein Datenstrom erzeugt wird
und an eine verschlüsselte
Datei angehängt
wird. Wenn das NTFS 244 ermittelt, dass die Datei für das EFS
von Interesse ist, und sieht, dass die EFS-verknüpfte Bibliothek 847 damit
registriert ist, ruft das NTFS 244 eine registrierte EFS-Funktion
auf, das heißt
den FileCreate-Aufruf. Wenn die Anfrage eine Datei-Öffnen Anfrage
für eine
existierende Datei ist, liest die FSRTL 848 die Datei-Metadaten
von dem Dateiattribut und füllt
einen Kontextblock auf, der vorher durch die EFS-verknüpfte Bibliothek 847 zugeteilt
wurde, um diese Information zu der EFS-verknüpften Bibliothek 847 zurückzugeben.
Wenn der Aufruf von dem NTFS 244 zurückkommt, nimmt die EFS-verknüpfte Bibliothek 847 die
Metadaten-Information und kommuniziert mit dem EFS-Service 850,
um einen Dateiverschlüsselungsschlüssel aus
den Metadaten zu extrahieren. Diese Information wird dann durch
die EFS-verknüpfte
Bibliothek 847 zu dem NTFS 244 durch eine andere
Schnittstelle der FSRTL 848, die FileControl (Dateisteuerungsschnittstelle),
zurückgegeben,
wie es unten beschrieben wird, was einen Schlüsselkontext für die geöffnete Datei
erzeugt. Dieser Schlüsselkontext
wird anschließend
durch das NTFS 244 für zukünftige Aufrufe
zu der EFS-verknüpften
Bibliothek 847 bewahrt, bis die Datei geschlossen wird.
Wenn die Datei-Metadaten aktualisiert werden, werden die aktualisierten
Metadaten ebenso zu den Attributen durch die registrierten EFS-Funktionen
durch NTFS-Aufrufe zurückgeschrieben.
-
Wenn
eine neue Datei erzeugt wird, endet der FileCreate-Aufruf darin,
dass die FSRTL 848 den Kontextpuffer 981 mit
einer Anfrage für
einen neuen Dateiverschlüsselungsschlüssel und
Metadaten auffüllt.
Die FSRTL 848 gibt dann den Kontextpuffer 981 an die EFS-verknüpfte Bibliothek 847 zurück. Die EFS-verknüpfte Bibliothek 847 nimmt
diese Information und kommuniziert mit dem EFS-Service 850,
um einen neuen Dateiverschlüsselungsschlüssel und neue
Datei-Metadaten von dem EFS-Service 850 zu erlangen. Unter
Verwendung eines Dateisteuerungsaufrufs gibt die EFS-verknüpfte Bibliothek 847 diese Informationen
an die FSRTL 848 zurück,
wobei unter Verwendung von NtOfs-Funktionsaufrufen
die FSRTL 848 den Schlüsselkontext 98 für die Datei,
die erzeugt wird, erstellt, und die Datei-Metadaten schreibt. Die
NtOfs-API ist eine Reihe von Funktionsaufrufen des NTFS 244,
die es der EFS-verknüpften Bibliothek 847 erlaubt,
Aufrufe zu dem Dateisystem 244 zu machen, um die Datenströme, die
die Verschlüsselungsmetadaten
enthalten, zu manipulieren.
-
Ein
anderer Aufruf, FileSystemControl_1 (Dateisystemsteuerung_1) wird
durch das NTFS 244 als Antwort auf eine Anfrage an die
EFS-verknüpfte Bibliothek 847 aufgerufen,
wenn ein Benutzer den Verschlüsselungsstatus
einer Datei (EFS_SET_ENCRYPT), entweder durch das Markieren von
diesem als verschlüsselt
oder entschlüsselt, setzt.
Als Antwort setzt das NTFS 244 das Verschlüsselungsbit
oder löscht
es, und die EFS-verknüpfte Bibliothek 847 erzeugt
irgendeinen notwendigen Schlüsselspeicher.
-
EFS_SET_ENCRYPT
stammt auch von dem EFS-Service 850, wenn begonnen wird,
eine Klartextdatei zu verschlüsseln,
wobei der Dateistatus modifiziert wird, so dass keine andere Funktion
mehr auf der Datei erlaubt wird, bis die Verschlüsselung abgeschlossen ist.
-
Das
NTFS 244 ruft ebenso die FileSystemControl_2-Schnittstelle (Dateisystemsteuerung_2-Schnittstelle)
mit verschiedenen verschlüsselungstreiberspezifischen
Dateisteuerungsanfragen aus der EFS-verknüpften Bibliothek 847 auf.
Es ist zu beachten, dass das NTFS 244 keine weitere Aktion
mit diesen Aufrufen unternimmt, außer dem einfachen Weitergeben
des Aufrufes an die FSRTL 848. Die Dateisteuerungsanfragen
enthalten ein EFS_SET_ATTRIBUTE, welches von dem EFS-Filter der
EFS-verknüpften
Bibliothek 847 stammt, wenn er neue oder aktualisierte
Datei-Metadaten schreiben möchte,
und ein EFS_GET_ATTRIBUTE, welches von der EFS-verknüpften Bibliothek 847 oder
einer Anwendung 30 im Benutzermodus stammt, um die Datei-Metadaten
abzufragen. Die Information schließt die Liste mit öffentlichen
Schlüsseln
des Benutzers und öffentlichen Schlüsseln des
Wiederherstellungsagenten ein, die verwendet werden können, um
den Dateiverschlüsselungsschlüssel zu
verschlüsseln.
Eine andere Anfrage, EFS_DECRYPT_BEGIN, stammt von dem EFS-Service 850,
wenn er beginnt, eine verschlüsselte
Datei zu entschlüsseln.
Als Antwort wird der Status der Datei modifiziert, so dass keine
weiteren Funktionen an der Datei erlaubt sind, bis die Entschlüsselung
abgeschlossen ist. Das Attribut EFS_DEL_ATTRIBUTE ist eine Anfrage,
die aus dem EFS-Service 850 herstammt,
wenn er mit dem Entschlüsseln
einer gesamten verschlüsselten
Datei fertig ist und die Dateimetadaten und zugehörigen Attribute
löschen
möchte.
Die EFS_ENCRYPT_DONE-Anfrage stammt ebenso von dem EFS-Service 850,
wenn er die Dateiverschlüsselung
erfolgreich abschließt.
Der Dateistatus wird modifiziert, um irgendwelche Funktionen von diesem
Punkt an zu erlauben. Das EFS_OVERWRITE_ATTRIBUTE kommt von dem EFS-Service 850,
wenn eine Ver schlüsselungsdatei von
ihrem Backup-Format wiederhergestellt wird. Der EFS-Service 850 liefert
die Dateimetadaten, die irgendwelche existierenden Metadaten der
Datei überschreiben
müssen.
Diese Anfrage steht ebenso im Zusammenhang mit der Löschung irgendeines Schlüsselkontextes 96,
zugehörig
zu dieser Datei, so dass keine Lese- oder Schreib-Funktionen durchgeführt werden,
während
die Datei wiederhergestellt wird.
-
Die
FileSystemControl_2-Schnittstelle wird ebenso durch das Dateisystem 244 als
Antwort auf die FSCTL_ENCRYPION_FSCTL_IO, die ebenso unterhalb beschrieben
wird, aufgerufen. Dies stellt ein Mittel für die EFS-verknüpfte Bibliothek 847 bereit,
dass das NTFS 244 die EFS-verknüpfte Bibliothek 847 (sich
selbst) aufruft, zum Beispiel wenn das NTFS 244 erkennt,
dass eine Datei in einem bestimmten Status ist, der einem Status
entspricht, auf den die EFS-verknüpfte Bibliothek 847 wartet.
-
Das
Dateisystem 244 verwendet den Aufruf AfterReadProcess (Vorgang
nach dem Lesen), nachdem es manche Daten von der Disk für eine verschlüsselte Datei
gelesen hat, und bevor sie an den Benutzer zurückgegeben wird. Die AfterReadProcess-Funktion
entschlüsselt
die Daten während
der Übertragung
als Antwort auf diesen Aufruf. Umgekehrt wird der BeforeWriteProcess
(Vorgang vor dem Schreiben) durch das Dateisystem 244 aufgerufen, bevor
es manche Daten für
eine verschlüsselte
Datei auf die Disk schreibt. Die Funktion verschlüsselt die Daten
als ein Ergebnis dieses Aufrufs.
-
Der
EFS-Service 850 stellt ebenso eine Unterstützung für Win32-APIs 32 bereit,
welches Programmierungsschnittstellen zum Verschlüsseln, Entschlüsseln und
Wiederherstellen sind, und stellt eine Unterstützung zum Importieren und Exportieren
von verschlüsselten
Dateien bereit. Das Importieren und Exportieren verschlüsselter
Dateien erlaubt es Benutzern, die Dateien in undurchsichtige (opaque)
Daten (verschlüsselt)
für Funktionen,
wie zum Beispiel Datensicherung, Wiederherstellung und allgemeine Dateiübertragungszwecke,
einschließlich
WebDAV, wie unterhalb beschrieben, zu konvertieren. Die Win32-APIs 32 stellen
Programmierungsschnittstellen zum Verschlüsseln von Klartextdateien,
Entschlüsseln
oder Wiederherstellen von Chiffriertext-Dateien und Importieren
und Exportieren verschlüsselter
Dateien (ohne sie zuerst zu entschlüsseln) bereit.
-
Wie
oben allgemein beschrieben kann EFS zusätzlich zum transparenten Verschlüsseln und
Entschlüsseln
von Dateidaten auf Dateisystemebene deshalb Dateien verschlüsseln, die
vorher nicht verschlüsselt
waren, Benutzerschlüssel
zu einer Datei hinzufügen,
irgendwelche anderen Basis-EFS-Informationen über eine verschlüsselte Datei ändern, wie zum
Beispiel den Typ der verwendeten Verschlüsselung, und andere Funktionen
durchführen.
-
Gemäß einem
Aspekt der vorliegenden Erfindung kann die Datei, wenn eine Datei
bereits auf einem WebDAV-Server verschlüsselt ist, in verschlüsselter
Form zu dem Client übertragen
werden, lokal zum Lesen entschlüsselt
werden, Veränderungen
daran gemacht werden, und zurück
auf den Client und den Server in verschlüsselter Form gelegt werden.
Weil EFS auf dem Level des Dateisystems transparent beim Lesen entschlüsselt und
beim Schreiben verschlüsselt,
kann die Datei jedoch nicht einfach geöffnet und gelesen werden, um
sie hinaufzuladen, andernfalls würden
die Daten nicht in ihrer verschlüsselten
Form übermittelt
werden. Ebenso kann, wenn eine verschlüsselte Datei heruntergeladen
wurde, eine Datei, um die Daten zu halten, nicht einfach lokal erzeugt
werden und darauf geschrieben werden, weil EFS versuchen würde, die
bereits verschlüsselten
Daten zu verschlüsseln,
wenn es die Daten in die lokale Datei schreibt.
-
Zu
diesem Zweck wird, wenn eine verschlüsselte Datei heraufgeladen
wird, ein Dateiabbild, das dem entspricht, wie sie erscheint, wenn
sie in verschlüsselter
Form lokal gespeichert ist, einschließlich EFS-Informationen gesendet,
die in der Datei enthalten sind, und die notwendig sind, sie später zu entschlüsseln. Ebenso
wird, wenn eine bereits verschlüsselte
Datei heruntergeladen wird, die Datei im lokalen Speicher als ein
Abbild geschrieben werden, das dem entspricht, wie sie original
auf den Server geschrieben wurde, das heißt als eine verschlüsselte Datei.
-
In
einer Implementierung, um Daten hin und her zu übertragen, wird das Dateiabbild
unter Verwendung bestimmter Funktionen gesendet, nämlich APIs
für EFSOpenFile-Raw() (EFS-Öffnen einer
unbearbeiteten Datei), EFSReadFileRaw() (EFS-Lesen einer unbearbeiteten
Datei), und EFSCIoseFileRaw() (EFS-Schliessen einer unbearbeiteten
Datei). Im Wesentlichen umgeht dies hauptsächlich die Verschlüsselungs-
oder Entschlüsselungsfunktionen
durch EFS auf den Dateidaten, wobei die Datei als ein Block von "unbearbeiteten" Bits übertragen
wird.
-
Spezieller
gesagt, erlaubt die EFSOpenRawFile()-Funktion (API) dem Benutzer
eine verschlüsselte
Datei ohne Lesezugriff zu Öffnen,
und ohne einen Dateiverschlüsselungsschlüssel einzurichten, um
transparente Lese- und Schreibvorgänge durchzuführen. Für diese
Funktionen erkennt NTFS 244 das Zugriffslevel und ruft
nicht die EFS-verknüpfte Bibliothek 247 für Verschlüsselung
auf, um nach einem Schlüssel
für dies
Datei zu schauen, noch um Lesevorgänge zu Entschlüsseln, noch
um Schreibvorgänge zu
verschlüsseln.
Die einzigsten Funktionen, die auf einer Datei, die über diese
Schnittstelle geöffnet wurde,
erlaubt sind, sind Dateisteuerungen (file controls). Deshalb erlaubt
es eine EFSReadRawFile()-API dem Benutzer Daten von der Datei, einschließlich der
Verschlüsselungsmetadaten,
als einen zusammenhängenden,
undurchsichtigen (opaque) Datenstrom zu lesen, der anschließend an den
WebDAV-Server gesendet werden kann. Die EFSWriteRawFile()-API erlaubt
es dem Benutzer einen zusammenhängenden,
undurchsichtigen (opaque) Datenstrom, der einem WebDAV-Server empfangen
wird, einschließlich
der Verschlüsselungsmetadaten
einer verschlüsselten
Datei auf einen NTFS-Diskdatenträger
zu schreiben.
-
6 zeigt
diese Logik für
eine verschlüsselte
Datei, wie es durch ein Dateiattribut oder durch eine EFS-Funktion
bei Schritt 600 ermittelt wird. Wenn eine heruntergeladene
Datei verschlüsselt
ist, geht Schritt 600 zu Schritt 606 weiter, welcher
eine lokale Datei auf dem Zwischenspeicher 240 für das Lesen
von unbearbeiteten Daten öffnet.
Spezieller gesagt, wenn die Daten bereits auf dem Server verschlüsselt sind,
dann sind sie bereits in dem richtigen Format, wobei Verschlüsselungsmetadaten
(zum Beispiel die verschlüsselten
Schlüsselinformationen) in
dem Dateiinhalt enthalten sind. Deshalb muss die Zwischengespeicherte
Datei ein Abbild der Datei auf dem Server sein, und eine Verschlüsselung
sollte nicht wieder auf dieser Datei versucht werden. Bei Schritt 608 erlaubt
es eine EFSWriteRawFile()-API-Schnittstelle, dass die empfangenen
Daten auf den lokalen Zwischenspeicher 240 von einer spezifizierten
Quelle geschrieben werden, wie zum Beispiel dem Empfangspuffer des
Internettransports, ohne dass irgendeine Verschlüsselung oder andere EFS-Interpretation
durchgeführt
wird. Sobald dies getan ist, erscheint die lokal zwischengespeicherte Datei,
wie sie auf dem WebDAV-Server ist. Bei Schritt 610 wird
eine Funktion EFSCIoseRawFile() aufgerufen, um die Datei zu schließen, welche
durch OpenRawFile geöffnet
wurde.
-
Zu
dieser Zeit wird die heruntergeladene Datei in dem lokalen Speicher
geführt,
wie jede andere verschlüsselte
Datei. Schritt 612 öffnet
diese Datei in einer gewöhnlichen
Weise, wobei EFS nun automatisch Leseausführungen entschlüsselt und Schreibausführungen
verschlüsselt,
wenn auf die Datei durch I/O-Befehle zugegriffen wird, in einer Weise,
die für
andere Komponenten mit höherem
Level, einschließlich
der Anwendung, transparent ist. Deshalb agieren die Schritte 504 bis 514 wie
oben mit Bezug auf nicht verschlüsselte
Dateien beschrieben.
-
Sobald
die Datei jedoch geschlossen wird, muss sie in ihrer verschlüsselten
Form auf den WebDAV-Server 218 zurückgebracht werden. Es wird wiederholt,
dass zu beachten ist, dass der WebDAV-Server 218 keine
Ahnung von dem Format und Inhalt der Datei hat, da er einfach eine
benannte Sammlung an Bits speichert. Die Datei wird jedoch lokal
nicht entschlüsselt,
wenn Leseausführungen von
dem Puffer des Transports oder Ähnlichem
für die
PUT-Funktion gemacht werden, und deshalb muss der EFS die unbearbeiteten
Bits aus dem Puffer als ein Abbild der gesamten verschlüsselten
Datei lesen, und nicht nur den entschlüsselten Datenteil davon.
-
Schritt 700 aus 7 ermittelt,
ob die Datei als verschlüsselt
markiert ist. Wenn nicht, ist es möglich, dass das Verzeichnis
als verschlüsselt
markiert ist, wobei die Datei ebenso verschlüsselt sein muss. Schritt 702 überprüft diese
Möglichkeit.
Wenn nicht, ist es möglich,
dass das Verzeichnis vorgesehen ist, verschlüsselt zu sein, aber auf dem
WebDAV-Server verändert
worden ist, wobei Schritt 704 einen Registrierungseintrag
(Einstellung) oder Ähnliches überprüft, die
nachverfolgt, welche WebDAV-Ordner verschlüsselt sein sollten. Wenn die
Registrierungseinstellung anzeigt, dass dieser bestimmte WebDAV-Ordner
verschlüsselt
sein sollte, aber aus irgendeinem Grund bei Schritt 702 nicht
verschlüsselt wurde,
dann geht Schritt 704 zu Schritt 710 weiter, um
die WebDAV-Ordnereigenschaften zurückzusetzen, um widerzuspiegeln,
dass der Ordner verschlüsselt
ist. Es ist zu beachten, dass die Schritte 702, 704 und 710 zu
anderen Zeiten durchgeführt
werden können,
nicht nur bei einem Hochladen einer Datei, um sicherzustellen, dass
verschlüsselte
Ordner so bleiben, und/oder dass Dateien in solchen Ordnern verschlüsselt bleiben.
-
Wenn
der Ordner verschlüsselt
ist, aber die Datei nicht, wird die Datei bei Schritt 714,
wie unterhalb beschrieben, geschlossen. Es ist zu beachten, dass
die Datei innerhalb des verschlüsselten
WebDAV-Ordners zu dieser Zeit nicht verschlüsselt ist, aber unverschlüsselt bleiben
wird, bis auf sie durch den WebDAV-Umleiter zugegriffen wird. Mit
anderen Worten, wenn eine Datei nicht verschlüsselt ist (was bedeutet, sie
wurde erzeugt, bevor der Ordner als verschlüsselt markiert wurde) wird
sie unverschlüsselt
bleiben, selbst wenn sie modifiziert ist. Nur wenn eine neue Datei
in einem verschlüsselten
Ordner erzeugt wird, ist diese erzeugte Datei verschlüsselt.
-
Bei
Schritt 714 wird die verschlüsselte lokale Datei geschlossen,
und bei Schritt 716 wieder geöffnet, um sie im unbearbeiteten
Zustand auf den WebDAV-Server zu kopieren. Wie oberhalb beschrieben, wird
das unbearbeitete Kopieren dadurch erreicht, dass das NTFS Dateien
mit der EFSOpenFileRaw()-API bei Schritt 716 öffnet, die
Datei unbearbeitet (als einen opaquen Datenstrom) über die
EFSReadFileRaw()-API in den passenden Puffer liest, um die Datei
bei Schritt 718 auf den WebDAV-Server zu übertragen,
und anschließend
die Datei über
die EFSCIoseFileRaw()-API bei Schritt 720 schließt. Die Datei
wird zu dem WebDAV-Server bei Schritt 722 wie oberhalb
beschrieben hinaufgeladen. Auf diese Weise speichert der WebDAV-Server
ein Abbild einer verschlüsselten
Datei wie es ist, ohne dass eine EFS-Entschlüsselung vor dem Heraufladen
durchgeführt
wird. Nachdem die Serverdatei nicht ohne einen Benutzer- oder privaten
Schlüssel
eines Wiederherstellungsagenten entschlüsselt werden kann, welchen
ein WebDAV-Server-Administrator (üblicherweise) nicht besitzen
würde,
bleiben die Serverdateidaten privat, so lange die Reihe an privaten
Schlüsseln,
die die Datei öffnen
können,
sicher ist. Außerdem
ist der Typ des Dateisystemspeichers auf dem WebDAV-Server unwichtig,
selbst wenn das Dateisystem nicht sicher ist, kann eine verschlüsselte Datei
nicht im Klartext betrachtet werden.
-
Gemäß einem
anderen Aspekt der vorliegenden Erfindung wird eine Unterstützung für andere EFS-APIs
bereitgestellt. Zum Beispiel kann eine vorher nicht verschlüsselte WebDAV-Datei
als verschlüsselt
gesetzt werden, ein Benutzerschlüssel oder
Schlüssel
eines Wiederherstellungsagenten kann zu einer Datei hinzugefügt werden,
oder andere Basis-EFS-Informationen über die Datei können verändert werden.
Im Allgemeinen werden solche Funktionen lokal durchgeführt, wobei
die Datei vor- und zurücktransferiert
wird, unter Verwendung der APIs: EFSOpenFileRaw(), EFSReadFileRaw(),
EFSWriteFi-IeRaw()
und EFSCIoseFileRaw().
-
Zu
diesem Zweck ermittelt das EFS, wenn es aufgerufen wird, ob eine
Datei auf einer Netzwerkbeteiligung (network share) liegt, und wie
der UNC-Name dieser Datei ist. Die EFS-APIs werden versuchen, den
WebDAV-Pfad durch Verwendung von WNet-APIs oder Ähnlichem zu erkennen, zum Beispiel
GetDriveType() (erlange Laufwerkstyp) und WNetGetResourcelnformation()
(erlange Ressourceinformationen). Zum Beispiel wird in einer Windows®-XP-Umgebung
EFS GetDriveType() verwenden, um einen Remote-Pfad zu erkennen.
Wenn der Remote-Pfad erlangt wurde, überprüft EFS, ob der Pfad einem WebDAV-Pfad
entspricht, wobei WNetGetProviderName() (erlange Anbietername) und WNetGetResourcelnformation()
verwendet werden. Wenn dem so ist, stellt EFS, über einen Remote Procedure
Call (Remoteprozeduraufruf) den UNC-Namen dem lokalen EFS-Server
bereit. Wenn der Pfad kein WebDAV-Pfad ist, stellt EFS dem Remote-EFS-Server, auf dem die
Datei existiert, den UNC-Namen bereit.
-
Der
EFS-Server verwendet den UNC-Namen, wo ein lokaler Name in dem aktuellen
Code verwendet wird, das heißt
der EFS-Server verwendet den WebDAV-UNC-Namen, als wäre er der
lokale Name. Dies führt
dazu, dass der WebDAV-Umleiter im Kernelmodus 212 die EFS-FSCTLs
zu dem lokalen NTFS 244 abfängt und umleitet.
-
Der
WebDAV-Umleiter im Kernelmodus 212 schaut ebenso nach Aufrufen
zu NtQuery-Volumelnformation()
(Nt: Abfragen der Datenträgerinformation)
auf einen WebDAV-Handle,
um Informationen über
den Client zurückzugeben.
Es ist zu beachten, dass WebDAV, wenn es nicht genügend Platz
auf dem Server gibt, einen Fehler in einem separaten Pfad zurückgeben
wird, ohne dass EFS dessen bewusst ist. Wenn die EFS-API die Arbeit
beendet hat, wird WebDAV die APIs für EFSOpenFileRaw(), EFSReadFile-Raw() und EFSCIoseFileRaw()
verwenden, um die modifizierte Datei, wie oben beschrieben, zurück auf den
WebDAV-Server zu schieben.
-
Wie
es von der vorangegangenen detaillierten Beschreibung gesehen werden
kann, wird ein Verfahren und System bereitgestellt, das einen transparenten
Zugriff auf WebDAV-Dateien
bereitstellt. Das Verfahren und System stellt Datei-I/O-Funktionalität und Netzwerkfunktionalität (zum Beispiel Browsing)
bereit, als wäre
die Datei auf einem lokalen Dateisystemdatenträger anstatt auf einem WebDAV-Server.
Außerdem
ermöglicht
die vorliegende Erfindung es, Browsern und Ähnlichem, auf WebDAV-gespeicherte
Dateien über
Netzwerk-APIs zuzugreifen. Als ein Ergebnis wird ein Austauschen (Teilen)
von Dateien über
das Internet (durch Firewalls, Router, usw.) über WebDAV-Server bereitgestellt,
was nicht durch Netzwerkdateiserver erreicht werden kann. Das Verfahren
und System arbeitet mit Dateien die verschlüsselt sind, so dass der WebDAV-Server
nur Dateien in ihrer verschlüsselten Form
sieht und keinen Schlüssel
zum Entschlüsseln der
Dateien hat.
-
Während die
Erfindung empfänglich
für verschiedene
Modifikationen und alternative Konstruktionen ist, werden bestimmte
dargestellte Ausführungsformen
davon in den Zeichnungen gezeigt und sind oberhalb im Detail beschrieben
worden. Es sollte verstanden sein, dass es jedoch nicht die Absicht ist,
die Erfindung auf die spezifische Form oder Formen, die offenbart
sind, einzugrenzen, sonder im Gegenteil, die Erfindung soll alle
Modifikationen, alternativen Konstruktionen und Entsprechungen,
die in den Umfang der Erfindung fallen, abdecken.