F.Net F.2 F.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Neue Anwendungsplattform für alle Microsoft-Betriebssysteme

Ähnliche Dokumente
G.Net G.2 G.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Neue Anwendungsplattform für alle Microsoft-Betriebssysteme

G.Net G.2 G.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Neue Anwendungsplattform für alle Microsoft-Betriebssysteme

F.Net F.2 F.4. 1 Überblick. 2 Common-Language-Runtime. 2 Common-Language-Runtime (2) Anwendungsplattform für alle Microsoft-Betriebssysteme

3.1 COM (2) 3.2 DCOM

E.1 Objekt-Serialisierung

.NET Remoting. Softwareentwicklung mit MS.NET und C# Lokaler Proxy. Proxy. Remoting. .NET Remoting

Ein einfacher Server. .NET Remoting. Klassentypen

Microsoft.NET Framework & Component Object Model. ein Vortrag von Florian Steuber

Vorlesung AFCW, Microsoft.NET Wintersemester 2002/03. Völlig neue Systemstruktur als Antwort auf Java

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

Client/Server-Programmierung

Einführung: Verteilte Systeme - Remote Method Invocation -

Gliederung Einleitung Die Interprozess Kommunikation Zusammenfassung Fragen. .NET Remoting. André Frimberger

Software Reuse Sommer Einfache, aus 3 Komponenten bestehende, Anwendung Was ist eine Komponente?

7 Assemblies. Anwendungen (.exe) bzw. Anwendungskomponenten (.dll) für.net Portable Execution (PE) Files

8.4 Microsoft.NET. .NET Framework = 1 CLR Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung von managed cod

Kommunikation in verteilten Anwendungen

D.1.NET-Anwendungen bauen und binden

Netzprogrammierung: Microsoft.NET Remoting

C.1 Objekt-Serialisierung

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

9.5 Microsoft.NET

unterschiedlichen Sprachen

Remote-Objekte. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

Konzepte von Betriebssystem-Komponenten Middleware:.NET Remoting

Janeva:.NET meets J2EE

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert

Mircosoft DotNot. Verteilte Anwendungen the microsoft (cc) way. Verteilte Anwendungen (04/05) T.S. (JD)

Vergleich.Net und COM

Internetanwendungstechnik (Übung)

.NET als alternative Middleware-Technologie. .NET als alternative

8.1.6.NET Remoting. C# ( Csharp, Cis ) : Referenzsprache für.net,

Microsoft.NET XML-Webdienste Schritt für Schritt

Grundlagen der Web-Entwicklung INF3172

B.1.NET-Anwendungen bauen und binden

Einführung in C# Teil 1. Matthias Nübling

.NET Framework. 3. Das.NET Framework

L.1.NET-Anwendungen bauen und binden

Kommunikation. Björn und Georg

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen

Überblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method

~±] Inhalt. 1.1 Ähnlichkeiten zwischen C# und Java Unterschiede zwischen C# und Java Das.NET-Framework 4 1.

7.1.5 Java RMI Remote Method Invocation ( (

Einführung in Microsoft.NET

AVID-Übung 5. Asynchronous.NET Remoting. 15. Juli Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX

Weitere aus Schnittstelle generierte Dateien (Java-Mapping)

Seminararbeit. Konzept einer Schnittstelle zur Benutzerverwaltung in RiskShield-Server. Christoph Laufs INFORM GmbH INFORM GmbH 1

Java RMI Remote Method Invocation

Server-Management mit JMX

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Microsoft.NET Überblick. Matthias Nübling

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Inhalt. Einführung RFC-Funktionsbausteine in ABAP Funktionsbausteine zum Lesen Aufruf per srfc 108

Web Services. Web Services in the News. Vision: Web of Services. Learning for Results. DECUS Symposium 2002, Vortrag 1K07,

Properties und Proxies

Praktikum Verteilte Anwendungen

Enterprise JavaBeans Überblick

Unified-E Standard WebHttp Adapter

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

B Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache

DOKUMENTATION. CaptchaAd mit Java. Entpacken und Hochladen. Die Schritte zur Integration des CaptchaAd-Modul im Einzelnen. Informationen von CaptchaAd

Microsoft.NET Framework

Typsystem Plattform- und Sprachenunabhängigkeit in.net

Remote Method Invocation

Gliederung. .NET Vision. Was ist Microsoft.NET? Microsoft.NET Überblick. Was ist Microsoft.NET? Überblick wichtiger.net-technologien.

DCOM und.net. B. Sc. Tobias Buchloh. Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Informatik Universität Hannover

WildFly Application Server Administration

6 Zusammenschaltung von Web-Services

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Verteilte Systeme Übung

DIAMETER Base Protocol (RFC3588)

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

Remote Method Invocation

JiveSoftware Jive Connector

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications

FRANZIS PROFESSIONAL SERIES. Herbert Burbiel. SOA & Webservices. ~ in der Praxis. 197 Abbildungen

SOAP Integrationstechnologie für verteilte Middlewarearchitekturen?

Enterprise Application Integration Erfahrungen aus der Praxis

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation Teil 3 RMI over IIOP

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

Schematische Schnittstelle eines Naming-Context-Objekts und des Binding-Iterators. BindingIterator. next_one next_n destroy

Seminar Softwarearchitekturen SoSe Martin Schrage

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Java RMI, CORBA und Firewalls

Namespaces und Assemblies

Andreas Kosch. Software & Support $ > Verlag GmbH

Überblick. Verteilte Systeme - 4. Übung. VS-Übung. Dynamische Proxies Stubs & Skeletons Dynamische Proxies als Stubs. Tobias Distler, Michael Gernoth

Für objektbasiertes Programmieren ist keine objektbasierte Programmiersprache erforderlich!

Microsoft.NET. InfoPoint 8. Juni 2005 Stefan Bühler

Seminar Ausgewählte Komponenten von Betriebssystemen. IDL4 Compiler

ESTOS XMPP Proxy

ESTOS XMPP Proxy

Transkript:

1 Überblick F.Net Neue Anwendungsplattform für alle Microsoft-Betriebssysteme inspiriert von der Java-Entwicklung Sprachunabhängigkeit dynamisches Code-Laden verteilte Anwendungen Integration der XML-Technologie Web-Services, XSLT... Wesentliche Teile sind standardisiert: ECMA-Standard Implementierungen Microsoft.Net Framework Open-Source-Implementierung Mono F.1 F.2 2 Common-Language-Runtime Unterstützung verschiedenster Sprachen C#, J#, VisualBasic,... Compiler übersetzt jeweils in Zwischensprache MSIL (Microsoft Intermediate Language) abstrakte Stackmaschine Common-Language-Runtime-Environment Ausführung von MSIL-Programmen Loader (JIT-)Compiler und Verifier MSIL-Programme werden nie interpretiert (bei Microsoft) Übersetzung vor oder während der Ausführung Sicherheitsüberprüfungen Multithreading 2 Common-Language-Runtime (2) Managed-Code MSIL-Programm Unmanaged-Code Brücke zu anderen Code-Teilen Standard-DLLs COM+-Aufrufe Managed-Data Garbage-Collection der Datenbereiche im Managed-Code Unmanaged-Data manuell verwaltete Datenbereiche im Managed-Code mit malloc/free verwaltet F.3 F.4

2 Common-Language-Runtime (3) Sprachunabhängige Bibliotheken in allen Sprachen stehen die gleichen Bibliotheken zur Verfügung keine sprachspezifischen Bibliotheken vorgesehen (z.b. Java, C++) Ausschnitt System System.IO System.Net System.Collections System.Reflection System.Threading System.Xml System.Xml.XSlt System.Xml.XPath System.Data System.Data.ADO System.Data.SQL System.Drawing System.Drawing.Text System.Drawing.Drawing2D System.Web.Services System.Web.Services.Discovery System.Web.Security System.Web.UI System.Web.UI.WebControls.CheckBoxList System.Windows.Forms System.Windows.Forms.RadioButton System.Runtime.Remoting System.Runtime.Serialization F.5 2.1 Assembly Container für Module äquivalent zu einer Menge von Java JAR-Files ersetzt DLL- und EXE-Files enthält: Manifest (Import-, Export- und Sicherheitsanweisungen, Verweise auf andere Module) Program-Executables (MSIL Code-Bereiche) Informationen für Reflection mit Versionskennung versehen im gleichen System mehrere Versionen der gleichen Assembly möglich Modulweise dynamisch ladbar von Platte über das Internet F.6 2.1 Assembly (2) Laden einer Assembly dynamisch bei Bedarf Application-Domain (Anwendungsdomäne) abgegrenzter Bereich innerhalb der CLR für eine Anwendung Laden in eine Application-Domain (je Domain verschiedene Version einer Assembly möglich) Prozess kann neue Application-Domains erzeugen mehrere Application-Domains pro Prozess möglich Sicherheit durch CLR Verifier gewährleistet 2.2 Kontext und Application-Domain Application-Domain unterteilt in Kontexte Kontext bündelt gleich zu behandelnde Objekte z.b. Thread-Behandlung, JIT-Aktivierung, Synchronisation Kontext besitzt abfragbare Properties Eingriffsmöglichkeit auf kontextlokale Methodenaufrufe von außen Prä- und Postoperationen Interaktionen zwischen Kontexten und Application-Domains erfordern spezielle Aufrufbehandlung Marshalling der Parameter und Ergebnisse F.7 F.8

3.Net-Remoting Framework für Kommunikation zwischen (entfernten) Kontexten und Application-Domains Marshalling Marshal-by-Value Klasse wird als serialisierbar markiert (Attribut: [Serializable]) Marshal-by-Reference Klasse muss von MarshalByRefObject erben 3.Net-Remoting (2) Serverobjekte Client-activated object vom Client erzeugte Objekte Well-known object bereits instanziiert und aufrufbereit Server-activated object Objekt entsteht erst beim Aufruf Singleton-Modus: ein Objekt behandelt alle Aufrufe SingleCall-Modus: ein Objekt entsteht pro Aufruf Zugang zu entfernten Objekten Aufruf eines Activators mit Objektbezeichnung (z.b. URL) es entsteht ein Proxy F.9 F.10 3.1 Architektur von.net-remoting 3.1 Architektur von.net-remoting (2) Aufrufpfad Client Remoting-Grenze entferntes Objekt Transparent Proxy automatisch generiert aus Schnittstelle wandelt Aufruf in ein Message-Objekt um (vgl. DII von CORBA) Umwandlung in Message-Objekt transparenter Aufruf Transparent Proxy Real Proxy Channel Stack- Builder Umwandlung in Aufruf Übertragung Real Proxy Ansatzpunkt für kontextabhängige Erweiterungen Default: Weitergabe des Message-Objekts an Channel Channel besteht auf jeder Seite aus Sink-Objekten Sink-Kette pro Kontext beeinflussbar Sinks bestimmen Protokoll, Übertragungsformat und sonstige Seiteneffekte F.11 F.12

3.1 Architektur von.net-remoting (3) 3.1 Architektur von.net-remoting (4) Beispiel für Channel Transparent Proxy Real Proxy Remoting-Grenze Stack- Builder Einsatz verschiedener RPC-Protokolle verschiedene Formatter-Sinks SOAP für Web-Services Formatter für.net-remoting-protocol (Formatter für GIOP) Einsatz verschiedener Transportprotokolle verschiedene Transport-Sinks Formatter Sink Formatter Sink Channel TCP/IP für.net-remoting-protocol (oder für IIOP) HTTP für Web-Services Transport Sink Transport Sink Weitere Sinks in der Kette z.b. für Transaktionen, Gruppenkommunikation etc. F.13 F.14 3.2 Objektreferenz Darstellung von entfernten Objektreferenzen ObjRef -Objekt enthält Typbezeichner für entferntes Objekt Assembly-Informationen Basisklassen (und Schnittstellen) Objekt-URL zur Aktivierung Channel-Informationen (welche Sinks müssen enthalten sein) ObjRef-Objekt wird By-value übergeben daraus kann erzeugt werden: Proxies (per Reflection aus Typbezeichner) Sink-Objekte aus Channel-Informationen und Kontext-Properties 4 Erzeugung entfernter Objekte Beispiel (in C#): -Objekt class : MarshallByRefObject { public string say() { return Hallo ; } } Zwei unterscheidbare Vorgehensweisen Objekterzeugung durch Server: Server-activated objects Objekterzeugung durch Client: Client-activated objects F.15 F.16

4 Erzeugung entfernter Objekte (2) Server-activated objects (SAO) Erzeugung der Objektinstanz (bei Bedarf) im Server alternative Verfahren Single-call object Singleton object Published object Client-activated objects (CAO) Client erzeugt Objekte alternative Verfahren direkte Erzeugung Erzeugung über Fabrik (Factory) 4.1 Single-Call Object Eigene Objektinstanz für jeden Aufruf entspricht Stateless-Session-Bean Objektinstanz ohne speicherbaren Zustand Server-Seite Erzeugung des Channels (hier: HTTP/SOAP-Kanal) ChannelServices.RegisterChannel( new HttpChannel(4711) ); alternativ: TCP-Channel mit binärem RPC-Protokoll Registrierung des Objekttyps RemotingConfiguration.RegisterWellKnownServiceType( typeof(), Say.soap, WellKnownObjectMode.SingleCall ); F.17 F.18 4.1 Single-Call Object (2) Client-Zugriff Ermitteln der Referenz durch Aktivierung Beispiel sayer= () Activator.GetObject( typeof(), http://localhost:4711/say.soap ); Referenzerzeugung abhängig vom registrierten Objekttyp Lifecycle-Management automatische Erzeugung einer Instanz für alle Aufrufe nebenläufige Aufrufe möglich Threading-Einstellung im jeweiligen Kontext 4.2 Singleton Object Genau eine Objektinstanz für alle Aufrufe reiner Dienst Zustand möglich Server-Seite Erzeugung des Channels Registrierung des Objekttyps Client-Zugriff RemotingConfiguration.RegisterWellKnownServiceType( typeof(), Say.soap, WellKnownObjectMode.Singleton ); identisch zu Single-call object F.19 F.20

4.3 Published Object Genaue eine Objektinstanz reiner Dienst (wie Singleton Object) aber: Instanz wird vorab erzeugt und registriert Server-Seite Erzeugung des Channels Erzeugung und Registrierung des Singleton Client-Zugriff sayer= new (); RemotingServices.Marshal( sayer, Say.soap ); identisch zu Singleton object 4.4 Direkte Objekterzeugung Client kann beliebige Objektinstanzen eines Typs erzeugen und nutzen Server-Seite Erzeugung eines Channels Registrierung eines Typs Client-Zugriff RemotingConfiguration.ApplicationName= MySayer ; RemotingConfiguration.RegisterActivatedServiceType( typeof() ); Erzeugung eines Channels Registrierung eines Client-Typs RemotingConfiguration.RegisterActivatedClientType( typeof(), http://localhost:4711/mysayer );... M= new (); // erzeugt entferntes Objekt F.21 F.22 4.5 Erzeugung über Fabrik 4.6 Konfiguration Factory-Pattern (Entwurfsmuster der Fabrik) Registrierung eines Singleton (die Fabrik) Aufruf einer create()-methode an der Fabrik Erzeugung eines neuen Objekts im Server Rückgabe der Referenz an Aufrufer automatische Zuweisung einer Kommunikationsadresse durch.net-remoting F.23 Konfigurationsdatei statt explizitem Erzeugen und Registrieren XML-Datei (vgl. Deployment-descriptor) Beispiel: Singleton object im Server <configuration> <system.runtime.remoting> <application> <channels> <channel ref= http port= 4711 /> </channels> <service> <wellknown mode= Singleton type=, Server objecturi= Say.soap /> </service> </application> </system.runtime.remoting> </configuration> F.24

4.6 Konfiguration (2) Laden der Konfiguration im Server Angabe des Dateinamens Remoting.Configuration.Configure( Server.exe.config ); Ähnliche Konfiguration im Client Weitere Konfigurationsmöglichkeiten Wechsel des Channels (z.b. von HTTP auf TCP) eigene Channel-Implementierungen Angabe der Implementierungsklassen für Transport- und Formatter-Sinks Angaben zum Lifecycle-Management 5 Assembly-Struktur Verteilter Objektzugriff erfordert: gemeinsam genutzte Typinformationen in allen beteiligten Knoten 5.1 Gemeinsam genutzte Klasse Shared assembly für Objektklasse über das Netz zugreifbar (Webserver, URL) Objektklasse ist sowohl Client- als auch Server-Knoten bekannt Assembly Client Server Assembly Assembly F.25 F.26 5.1 Gemeinsam genutzte Klasse 5.2 Gemeinsam genutztes Interface Vorteil einfach Nachteile Client kann Objekt auch direkt instanziieren Benutzer auf Client-Computer können Code disassemblieren Objekt bekommt Interface für entfernten Zugriff (vgl. RMI) I Interface für -Objekt Klasse für -Objekt Shared assembly für Interface, private Assembly für Klasse (nur Server) Vorteil Trennung möglich Nachteil Referenz nicht weitergebbar an Dritte Cast auf Interface lässt sich dort nicht durchführen F.27 F.28

5.3 Gemeinsam genutzte Basisklasse 5.3 Gemeinsam genutzte Basisklasse (2) Abstrakte Basisklasse für Implementierungsklasse Base abstrakte Klasse Nachteil lediglich mit Activator nutzbar keine direkte Objekterzeugung möglich Compiler unterbindet Erzeugung von Objekten einer abstrakten Klasse Implementierungsklasse Shared assembly für Basisklasse, private Assembly für Implementierungsklasse (nur Server) Vorteil Trennung möglich Objektreferenzen weitergebbar F.29 F.30 5.4 Generierte Metadaten Werkzeugunterstützung Programm SoapSuds erzeugt zweite Assembly für reine Metadaten Assembly Assembly Wrapped-proxy-Ansatz SoapSuds integriert Kommunikationsadresse in Metadaten Client-Zugriff m= new (); 6 Lebenszeitverwaltung Verwaltung über Leases Abräumen des Objekts sobald Lease abgelaufen (Garbage Collection) Default-Einstellungen Lease gültig bis 5min nach Objekterzeugung Erneuerung der Lease bis zu 2min bei jedem Aufruf Sponsoren registrierte Ansprechpartner bei Ablauf einer Lease.Net-Remoting kontaktiert Sponsor vor dem Löschen innerhalb von 2min (Default) muss Sponsor Verlängerung der Lease bestätigen erzeugt Objekt im Server Nonwrapped-proxy-Ansatz Client-Zugriff über Activator oder über Typ-Registrierung F.31 F.32

6.1 Konfiguration der Einstellungen Anwendungsabhängige Änderung der Einstellungen programmatisch: Zuweisung von Zeitspannen an gewisse Systemvariablen z.b. LifetimeServices.LeaseTime =... deklarativ: XML-Elemente in Konfigurationsdatei z.b. <lifetime leasetimeout=... /> 6.1 Konfiguration der Einstellungen (2) Klassenabhängige Änderung der Einstellungen programmatisch: Methode InitializeLifetimeService() in Basisklasse MarhsalByRefObject erzeugt Objekt mit Interface ILease enthält Einstellungsparameter Rückgabe eines null-zeigers möglich keine Garbage-Collection deklarativ: XML-Elemente in Konfigurationsdatei Setzen der Parameter muss in InitializeLifetimeService() erfolgen Parameter können aus Konfigurationsdatei stammen anwendungsabhängige Konfigurationsparameter (vgl. Java Properties) z.b. <appsettings> <add key= _LeaseTime value=... />... F.33 F.34 6.2 Sponsoren Automatische Befragung des Sponsors über Lease-Verlängerung gibt neue Lease-Lebenszeit zurück Lebenszeit gleich Null: Objekt wird aufgeräumt Client-seitige Sponsoren entspricht periodischem Prüfen, ob Client noch vorhanden entspricht früherem DCOM-Ansatz Achtung: Client wird kurzzeitig zum Server, Server zum Client Client muss Channel für Anfragen besitzen z.b. HTTP-Channel: Portnummer angeben oder port= 0 Achtung: Sponsoren sind Remote-Objects benötigen eigenes Lease-Management (evtl. durch sich selbst) 6.2 Sponsoren (2) Server-seitige Sponsoren auf gleichem oder anderem Server-Knoten Bindung der Lebenszeit an anwendungsabhängige Bedingungen z.b. Verweigerung der Lease-Erneuerung, falls essenzielle Anwendungskomponenten abgestürzt oder unerreichbar F.35 F.36

6.3 Versionierung Strong-name für Assemblies Name der Assembly AssemblyCulture: Beschreibung von kulturbedingten Konventionen AssemblyVersion: Versionskennung, z.b. 1.0.0.1 Fingerprint der Assembly digitale Signatur über Assembly-Inhalt Global-Assembly-Cache (GAC) Systemverzeichnis mit installierten Assemblies erzeugte Assembly muss in den GAC installiert werden Strong-name für jede Assembly Installation von Assemblies unterschiedlicher Verison möglich 6.3 Versionierung (2) Server-activated objects Server: Registrierung der Objektklasse mit Strong-name der Assembly z.b. <wellknown type=, Server, Version=1.0.0.1, Culture=neutral, PublicKeyToken=84d24afff2014ab.../> Client: Verweis auf Strong-name der Assembly oder generierten Dateinamen der versionsspezifischen Assembly Client-activated objects SoapSuds integriert Strong-name in erzeugte Client-Assembly spezielle Attribute Codierung des Strong-name in XML-Namespace URIs Namespace für SOAP-Nachricht F.37 F.38 6.3 Versionierung (3) Serializable objects ähnlich wie bei Client-activated objects Custom-serialization zur Interopabilität zwischen alten und neuen Versionen fehlende Daten müssen ergänzt werden überzählige Daten müssen verworfen werden 7 Sicherheit 7.1 Authentisierung Basic authentication Basismechanismus eines Webservers Benutzername und Passwort im Klartext in Kopfzeilen einer HTTP-Nachricht (SOAP-Nachricht) Webserver überprüft Authentisierung Abweisen, falls Benutzername und Passwort ungültig sonst interne Weiterleitung der Nachricht mit Benutzername F.39 F.40

7.1 Authentisierung (2) Basic authentication in.net Server-Seite: Einrichtung eines eingetragenen Benutzers z.b. in den IIS (MS Webserver) HTTP-Channels werden vom IIS verwaltet Client-Seite: Senden des Passworts Eintragen des Benutzernamen und Passworts in Channel-Properties Channel-Properties: Liste von Einstellungen pro Objektreferenz/Proxy Beispiel: hello= new (); IDictionary props= ChannelServices.GetChannelSinkProperties( hello ); props[ username ]= alice ; props[ password ]= qo(dfdw98 ; res= hello.say(); 7.1 Authentisierung (3) Windows-Authentisierung Basismechanismus von Windows zur Identifikation von Windows-Nutzern Challenge-Response-Protokoll zur Verifikation des Windows-Passworts Windows-Authentisierung in.net Server-Seite: Konfiguration des Web-Servers Client-Seite: keine Änderung Client erkennt Windows-Authentisierung oder Client ist in Domaine authentisiert und gibt seine Credentials weiter keine Benutzer/Passwort-Angabe im Code stattdessen Konfiguration des Channel: <channels> <channel ref= http usedefaultcredentials= true /> </channels> F.41 F.42 7.2 Autorisierung Ermittlung des aufrufenden Benutzers (Principal) Kontext am aufrufenden Thread IPrincipal prin= System.Threading.Thread.CurrentPrincipal; Gruppenzuordnung prüfen Prüfung der Benutzerzuordnung zu einer Windows Gruppe principal.isinrole( mayestril\admins ); Programmatische Autorisierung Programmierung der Zugangsüberprüfung in Methoden 7.3 Verschlüsselung der Kommunikation Einsatz von SSL (Secure Socket Layer) Server-Seite: Erzeugung eines Server-Zertifikats Server-Zertifikat: privater Schlüssel oft signiert von einer Zertifizierungsstelle (Certificate Authority) Client-Seite: Änderung der URL Voranstellen von https statt http Vorteile Überprüfung, dass (Web-)Server authentisch ist verschlüsselte Datenverbindung zwischen Client und Server (z.b. für SOAP-Nachrichten) Basic-authentication wird geschützt F.43 F.44

8 Literatur.Net I. Rammer: Advanced.Net Remoting. Apress, 2002. Articles on Microsoft Developer Network:.NET Framework Deploying & Distribution. <http://msdn.microsoft.com/netframework/using/deploying/ default.aspx> F.45