Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Kinge Borries Geändert vor über 10 Jahren
1
Smart Clients in.NET: Leicht installieren, einfach verteilen, sicher betreiben Christof Sprenger Technologieberater.NET Strategy & Developer Group Microsoft GmbH
2
2 Agenda Motivation Definition des Begriffs Smart Client Grundlagen Versioning in.NET Security in.NET Einzelne Aspekte No-Touch Deployment Security und No-Touch Deployment Automatisches Update Zusammenfassung
3
3 Motivation
4
4 Thin Clients Applikation die mit einem Browser zu bedienen ist Denkbar einfaches Deployment Benutzbarkeit nicht gut wurde/wird aber immer besser Menu Bars Toolbars Keyboard Shortcuts Standard-UI Was ist mit State? Benutzereinstellungen Session Speichern von Dokumenten
5
5 Typische Thin Client Layer LayerPurposeUser State Thin Client User Interaction Current UI Web ServerUI Generation Session State Web Service Services/Logi c DatabaseData
6
6 Rich Clients Auch Desktop Applikationen genannt Jedes UI Feature verfügbar State Handling denkbar einfach Die Resourcen/Dienste des Betriebssystems und der Hardware sind vollständig nutzbar Prozessor, Festplatte, Graphik, Eingabegeräte, … Die Folge daraus: Bessere Responsiveness, Bessere Performance, Bessere Integrierbarkeit, …
7
7 Smart Clients Es gibt nicht nur die beiden Wege Rich (Fat) Clients Thin Clients Smart Client nutzen die Vorteile beider Architekturen Reichhaltiges UI Einfaches State Management Deployment über das Web Daten und Services über das Web
8
8 Smart Client Layer LayerPurposeUser State Smart Client User Interaction UI und Session Web Service Services/Logi c DatabaseData
9
9 Weitere mögliche Features Offline/Online Fähigkeit Logik beliebig auf Client oder Server ausführbar Auto Update
10
10.NET Framework & Smart Clients Was bietet.NET um das zu ermöglichen? Windows Forms für reichhaltiges UI Einfachen Zugriff auf Server Logik mit Web Services No Touch Deployment Zero Impact Install Sauberes Versioning von Komponenten Ende der DLL-Hell Security Modell Rechtezuweisung an Code (nicht nur Benutzer) Baukasten für Sandboxes ! ! ! !
11
11 Grundlagen: Versioning in.NET
12
12 Das Problem Eine Applikation wird installiert… … und läuft nicht, weil benötigte DLLs nicht gefunden werden oder nicht kompatibel sind … und läuft problemlos, aber andere Applikationen auf der Maschine haben plötzliche Probleme mit fehlenden oder inkompatiblen Versionen von benötigten DLLs
13
13 Was erreicht werden soll Verhinderung von "Nebenwirkungen" Neue Applikationen sollen bereits installierte Applikationen nicht negativ beeinflussen Zero Impact Install Unkompliziertes Deployment Installation durch Kopieren Verschieben von Applikationen Pflege der Software Bugfixes auf einfache Weise ausliefern Krisenmanagement: Was tun, wenn der Bugfix neue Bugs enthält? Hotfixes für einzelne Applikationen
14
14 Sorgenkind Registry Aufgabe der Registry Auffinden von gemeinsam genutzen Komponenten (Identity, Binding) Informationen über Komponenten speichern (Metadaten) Probleme Es gibt nur eine Registry nicht eine Pro Applikation Registry-Pflege bei Installation, Deinstallation und Wartung ist mühsam und fehleranfällig
15
15 Versionierungsärger Bisher: Der Highlander-Effekt Eine gemeinsam genutzte Komponente konnte nur einmal vorhanden sein Die Komponente musste deshalb abwärtskompatibel sein mit allen Vorgängerversionen Direkte Konsequenzen Aufwändiges Testen auf Kompabilität Was tun, wenn eine Applikation mit einer neuen Komponentenversion Probleme hatte? Die Folge war/ist die sogenannte DLL- Hell
16
16 Ein neues Komponentenmodell Komponenten unter.NET enthalten alle wichtigen Daten über sich selbst in Metadaten-Tabellen nehmen diese Informationen mit, wohin sie auch gehen Strong Names geben jeder Komponente eine eindeutige, sichere Identität Die Registry wird unnötig für Komponenten-Metadaten und Identität
17
17 Assembly Binding Laden von Komponenten Benötigte Komponenten werden vom CLR Loader über einen festgelegten Algorithmus gesucht (Assembly Binding Algorithm) Das Suchverhalten ist bei Bedarf pro Applikation konfigurierbar Die Registry wird unnötig für das Auffinden von Komponenten (Binding)
18
18 Assembly Manifest Das Manifest enthält Assembly name Version number Culture Strong name Information Public Key des Herstellers Liste aller FIles die das Assembly bilden Liste der Typen die Referenziert werden Liste von referenzierte Assemblies assembly's name, version, culture und public key
19
19 Strong Name Ein Strong Name einer Assembly besteht aus Dem einfachen textuellen Namen Einer Versionnummer (Major, Minor, Revision, Build) Culture Information (optional) Plus ein Public Key und eine Digitale Signature der Assembly Strong-Named Assemblies ermöglichen Uniqueness Versions-Abstammungslinien Integrity Check Damit die Kette nicht bricht können Strong- Named Assemblies nur wiederum andere Strong-Named Assemblies referenziern.
20
20 Der Ladevorgang Bestimmen der korrekten Version Konfigurationsdateien: application configuration, publisher policy, machine configuration. Überprüfung des Global Assembly Cache Lokalisieren der Datei Suche im Codebase Verzeichniss Sonst das sogenannte Probing Suche im Application Base Verzeichniss und in den Unterverzeichnissen mit dem Namen der Assembly und der Culture Suche im binpath Verzeichniss und in den Unterverzeichnissen mit dem Namen der Assembly und der Culture
21
21 Diagramm zum Ladevorgang
22
22 Grundlagen: Security in.NET
23
23 Das Problem
24
24 Mobiler Code heute Code aus diversen Quellen – speziell dem Internet/Intranet Code darf entweder nichts oder alles (was der Benutzer darf) Benutzer muss Entscheidung über vertrauenswürdigen Code "on the fly" treffen Kann er dies? Zertifikate helfen wenig
25
25 Code Access Security Granulares Sicherheitsmodell für "partially trusted" Code Orthogonal zu nutzerbasierter OS- Sicherheit Beruht auf Indizien ("evidence") über Assemblies auch evidence-based security genannt Verwaltung durch Sicherheitsregeln ("policies") CLR berücksichtigt bei Ausführung die dem Code zugestandenen Rechte ("permissions") Frei erweiterbar
26
26 Evidence Woher/Von Wem kommt dieser Code? Charakterisierung pro Assembly Ist unabhängig vom Ausführenden Stammt vom Host (Anwendung, IE, ASP.NET,...) oder vom Assembly selbst Die Base Class Library (BCL) definiert: Publisher (Authenticode-Zertifikate) Site (Website, von der Assembly geladen wird) Url Zone (IE-Sicherheitszone) StrongName ApplicationDirectory Hash
27
27 Permissions Was könnte dieser Code tun? Feingranulare Rechte, die an.NET- Code verliehen werden können Schützen Ressourcen & Operationen Checks zur Lauf- oder Compile-Zeit Verwendung: Vergeben durch Sicherheits-Policy Von Assembly angefordert Deklarativ & imperativ Sind unabhängig voneinander (orthogonal)
28
28 Permissions in der BCL FileIO FileDialog IsolatedStorage Environment Registry UI Printing Reflection Security Socket Web DNS OleDb SQLClient MessageQueue EventLog DirectoryServices … erweiterbar Execution, Assertion, Skip Verification, Unmanaged code, Control evidence, Control policy, Control principal, Control threads
29
29 Sicherheitsregeln Begriffe: Bedingung (membership condition): Boolesche Funktion, die Evidenz auswertet Permissionset: Gruppierung von Permissions (FullTrust, LocalIntranet,...) Codegroup: besteht aus einer membership condition und einem permission sets Bedingung ? P Codegruppe
30
30 Policy Level Codegruppen werden hierarchisch in sogenannten Policy Levels angeordnet Meist werden alle Child-CodeGroups untersucht nachdem eine Memership Condition zutrifft (Union Code Group)
31
31 Sicherheitsrichtlinien Richtlinien (policy levels): Permissionsets + Codegruppenhierarchie + vertrauenswürdige Assemblies Effektive Richtlinie: Schnittmenge der einzelnen Ebenen Enterprise policy Machine1 policy Machine2 policy User A User B User C User D
32
32 Demo.NET Konfiguration Configuration
33
33 Rechteanforderung Permission demand: Überprüfung, daß alle Aufrufer ausreichende Rechte haben stack walk: schützt gegen sog. "luring attack" Kann vorzeitig abgebrochen werden Assert(), Deny(), PermitOnly() Assembly A3 Assembly A2 Assembly A1 Assembly A4 Call Stack R2 R1 R3 R4 Dem Assembly gewährte Rechte R Methode in A4 fordert Permission P an P Vergleich von P mit den Rechten R aller aufrufenden Assemblies P P P
34
34 Imperative Sicherheitsprüfung Alle Permission-Objekte haben Demand() -Methode Ausführung zur Laufzeit wie normale Methode Vorteil: flexibel & variabel Public Sub New(fileName As String) ' Must fully qualify the path for the security check ' Must fully qualify the path for the security check Dim fullPath As String = _ Dim fullPath As String = _Directory.GetFullPathInternal(fileName) New FileIOPermission(FileIOPermissionAccess.Read, _ New FileIOPermission(FileIOPermissionAccess.Read, _fullPath).Demand() … '[rest of function] … '[rest of function] End Sub
35
35 Deklarative Sicherheitsprüfung Aktionen durch custom attributes beschrieben In den Metadaten abgespeichert Können mittels PERMVIEW.EXE oder Metadaten- APIs gelesen werden Check zur Lauf- oder Linkzeit Demand() zur Laufzeit LinkDemand(), InheritanceDemand() beim Linken Linkzeit-Aktions werden automatisch vom JIT-Compiler durchgeführt, wenn Aufrufer kompiliert oder Klasse geladen wird Für Laufzeit-Deklarationen erzeugt der JIT- Compiler Code, der die Sicherheitsprüfung durchführt
36
36 Deklarative Sicherheitsprüfung Nachteil: Deklarationen können keine Laufzeitvariablen enthalten _ _ Public Sub Foo() ' Subroutine implementation ' Subroutine implementation End Sub
37
37 Und jetzt alles zusammen … PolicyEvaluator Assembly A3 PermissionRequests SecurityPolicy Evidence G3 G3 Host Assembly A2 G2 G1 Assembly A1 Assembly A3
38
38 Demo Simple Applikation Über C:\.... Über \\localhost\c$\... Über \\127.0.0.1\c$\...
39
39 Starten von Applikationen über HTTP
40
40 No-Touch Deployment Der Assembly Loader ist in der Lage Assemblies über HTTP zu laden Assembly wird in den Download Cache kopiert und von dort ausgeführt Starten von Desktop Applikationen über einen Link im Browser
41
41 No-Touch Deployment Versioning greift Security greift Abhängige Assemblies werden nachgeladen Controls im Browser Ähnlich, aber nicht ganz das gleiche Sieht aus wie ActiveX Controls Jedoch anderes Security Modell Kommunikation mit HTML möglich
42
42 Demo TaskManager
43
43 Erster Download GET /foo.exe HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461;.NET CLR 1.0.3705) Host: localhost Connection: Keep-Alive HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Fri, 01 Feb 2002 02:11:29 GMT Content-Type: application/octet-stream Accept-Ranges: bytes Last-Modified: Fri, 01 Feb 2002 01:41:16 GMT ETag: "50aae089c1aac11:916" Content-Length: 45056 …
44
44 Folgende Downloads GET /foo.exe HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate If-Modified-Since: Fri, 01 Feb 2002 01:41:16 GMT If-None-Match: "50aae089c1aac11:916" User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461;.NET CLR 1.0.3705) Host: localhost Connection: Keep-Alive HTTP/1.1 304 Not Modified Server: Microsoft-IIS/5.1 Date: Fri, 01 Feb 2002 02:42:03 GMT ETag: "a0fa92bc8aac11:916" Content-Length: 0
45
45 Wann wird was runtergeladen? Beim ersten Download kann die Runtime die Version nicht kennen Beim zweiten Download wird auch dann geladen wenn Datei neuer aber Version kleiner Abhängige Assemblies Zuerst wird überprüft ob die richtige Version im Cache GAC wird immer zuerst überprüft
46
46 Security und No-Touch Deployment
47
47 Security und No-Touch Deployment Applikationen, die über http://www.server.com gestartet wurden sind im Normalfall in der Code Group Internet http://www.server.com In Version 1.0 war dort das PermissionSet Internet eingetragen Im ServicePack 1 ist dort das PermissionSet Nothing eingetragen
48
48 Top-Level Code Groups Im Auslieferungszustand haben die Top- Level CodeGroups Membership-Conditions die sich an der Zone orientieren
49
49 Security Zones MyComputer_Zone PermissionSet: FullTrust LocalIntranet_Zone Permissions FileDialog IsolatedStorage Printing … Internet PermissionSet: Nothing
50
50 FileIO- und FileDialogPermission Die Permission FileIO ermöglicht Assemblies den Zugriff aufs FileSystem Dies ist meist zu viel FileIO findet sich nur im PermissionSet Everything Die Klasse FileDialog hat Methode OpenFile FileDialogPermission ist ausreichend Property FileName benötigt FileIOPermission
51
51 Rechte Erweitern Sicherheitsrichtlinien können nur den Administrator verändert werden Techniken Batchdatei mit caspol MSI Datei aus.NET Framework Configuration System Management Installer Projekt (RunInstallerAttribute) und die Klassen in System.Security.Policy
52
52 Create a new code group PermissionSet permSet1 = new NamedPermissionSet("Internet"); StrongNamePublicKeyBlob key = new StrongNamePublicKeyBlob(publicKey); IMembershipCondition membership1 = new StrongNameMembershipCondition(key, null, null); // Create the code group PolicyStatement policy1 = new PolicyStatement(permSet1); CodeGroup codeGroup1 = new UnionCodeGroup(membership1, policy1); codeGroup1.Description = More permissions for me; codeGroup1.Name = Foo"; // Add the code group machinePolicyLevel.RootCodeGroup.AddChild(codeGroup1);
53
53 Wrap Up No-Touch Deployment Einfache Installation Versioning greift Security greift Im Internet sehr restriktiv Gut geeignet für das Intranet
54
54 Automatisches Update
55
55 Versionen kontrollieren Wie kann man erreichen, dass immer neue Versionen auf den Clients verfügbar sind Was No-Touch Deployment nicht kann Offline arbeiten technisch schon, ist aber nicht praktikabel Zum Download einer neuen Version einer dependent Assembly ist ein neue Version der referenzierenden Assembly notwendig atomarer Download Download im Hintergrund
56
56.NET Updater Komponent.NET Komponente die automatisches Update erlaubt Artikel und Code auf www.gotdotnet.com www.gotdotnet.com Die Architektur der.NET Updater Komponente legt fest Where, When und How die Komponenten aktualisiert werden
57
57.NET Updater Where & When Where Es wird HTTP zum Download verwendet Internet, Intranet, Extranet Eine URL Andere Alternative BITS (siehe Artikel MSDN Magazine Februar 2003) When Thread, der meist wartet und zu bestimmten Intervallen aufwacht
58
58 Mögliche.NET Updater Hows Direct File Check Client vergleicht Datum Problem: ist nicht atomar Manifest Check Konfigurationsdatei auf dem Server Client vergleicht die enthaltene Versionsnummer oder Datum Ist atomar XML Web Service Check Logik, die serverseitig entscheidet ob Update verfügbar
59
59 Aufbau im Filesystem PROGRAM FILES MyApp AppStart.exe AppStart.exe.config V1.0 MyApp.exe V1.1 MyApp.exe Es wird immer AppStart.exe gestartet Die Configurationsdatei bestimmt Name des Folder und Name der EXE-Datei
60
60 Demo Updater Demo-Client starten Neue Version auf Server kopieren Manifest ändern Demo-Client erneut starten
61
61 Hinweis Demo verwendet DAV Windows XP bietet Background Intelligent Transfer Sevice (BITS) Siehe Artikel im MSDN Magazin Februar 2003
62
62 Und zum Schluss
63
63 Zusammenfassung Grundlagen bilden sauberes Komponentenmodell.NET Code Access Security.NET Deployment.NET Komponent Versioning Zusätzliche Techniken machen Applikationen smart Zugriff auf Web Services No Touch Deployment Automatic Update
64
64 Fragen und Antworten
65
65 Weitere Informationen Component Software, Beyond Object-oriented Programming Clemens Szyperski, Second Edition, Addison-Wesley, 2002.NET Zero Deployment Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients Chris Sells http://msdn.microsoft.com/msdnmag/issues/02/07/NetSmartClients Return of the Rich Client Code Access Security and Distribution Features in.NET Enhance Client-Side Apps Jason Clark http://msdn.microsoft.com/msdnmag/issues/02/06/default.aspx Increasing Permissions for Web-Deployed Windows Forms Applications Chris Sells http://msdn.microsoft.com/library/en-us/dnforms/html/winforms11122002.asp DHTML and.NET, Hosting Secure Client Side Controls Jay Allen MSDN Magazine January 2001.NET Application Updater Component http://www.gotdotnet.com/team/windowsforms/appupdater.aspx
66
66Empowerpeople through software any time, any place, and on any device. great
67
67
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.