Eine Frage des Vertrauens

Die Möglichkeiten von Trusted Applications mit Silverlight 5
Kommentare

Microsoft legt mit der fünften Version von Silverlight nach und erweitert das Trusted-Applications-Modell. Es soll für Anwender und Entwickler mehr Möglichkeiten bieten und nicht mehr an Out-of-Browser-Anwendungen gebunden sein. Trusted Applications sind nun im Browser ausführbar und können auf das Windows API zugreifen. Dieser Artikel zeigt, welche Möglichkeiten die neue Version für vertrauenswürdige Anwendungen bietet und wie diese implementiert werden.

Aufmacherbild: pixelio.de

Anwendungen laufen in Silverlight aus sicherheitskritischen Gründen in einer so genannten Sandbox. Dabei sind der Anwendung systemrelevante Funktionen wie der Dateizugriff auf Benutzerdaten vorenthalten. Für viele Applikationen sind diese Features unentbehrlich, weshalb es seit Silverlight 4 die Möglichkeit gibt, eine Anwendung als Trusted Application auszuführen und ihr somit erweiterte Berechtigungen zur Verfügung zu stellen. Möglich war das bisher nur durch die Out-of-Browser-Funktion (OOB), die bereits mit Silverlight 3 eingeführt wurde. Genau das ändert sich mit der aktuellen Version, erweiterte Berechtigungen können nun direkt im Browser genutzt werden. Es wird damit also die Ausführung einer Trusted Application im Browser möglich. Vorgeschrieben wird dafür jedoch ein von VeriSign ausgestelltes Zertifikat, ohne dieses kann die Anwendung nur lokal getestet werden. Die Vertrauenseinstellungen der Anwendung können wie gewohnt im Eigenschaftsmenü des Projekts angepasst werden (Abb. 1). Dazu ist die Aktivierung der Einstellung Require elevated trust when running in-browser notwendig, außerdem muss für die Anwendung der OOB-Support aktiviert werden. Mit der Anweisung if (!Application.Current.HasElevatedPermissions) { … } lassen sich die Vertrauenseinstellungen überprüfen. Eine Übersicht über Berechtigungen, die einer Anwendung im Trusted-Modus in Silverlight 5 zur Verfügung stehen, listet Tabelle 1 auf. Dabei werden die Features den vorherigen Versionen gegenübergestellt.

Abb. 1: Aktivierung der In-Browser-Vertrauenseinstellungen
Abb. 1: Aktivierung der In-Browser-Vertrauenseinstellungen

Feature

Silverlight Sandbox

Silverlight 4 Trusted

Silverlight 5 Trusted

Prompt-free

nein

ja

ja

Cross-Domain-Zugriff

nein

ja

ja

Tastaturkürzel bei Vollbild

nein

ja

ja

COM

nein

ja

ja

P/Invoke

nein

nein

ja

Trusted „In-Browser“

nein

nein

ja

Voller Dateizugriff

nein

teilweise

ja

Tabelle 1: Vergleich der Features für Trusted Applications

Dateizugriff

Ein Teil der neuen Möglichkeiten für Trusted Applications soll am Beispiel des Zugriffs auf Dateien für In-Browser-Anwendungen dargestellt werden. Dazu soll ein bestimmter Text aus einem Eingabefeld auf der Festplatte des Nutzers gespeichert werden. Es ist wichtig zu prüfen, ob die notwendigen Berechtigungen vorhanden sind, um eine Exception zu vermeiden. Der Rest erfolgt in wohlbekannter .NET-Manier, indem die Directory-Klasse genutzt wird, um das Verzeichnis C:/Silverlight5App zu erstellen und die FileStream-Klasse für den Datenstrom zu öffnen (Listing 1). Mit einer Instanz von StreamWriter kann anschließend der Inhalt des Steuerelements in die Datei geschrieben werden. Ein erster Test der Anwendung erzeugt die gewünschte Datei, solange die Anwendung über die localhost-Adresse aufgerufen wird. Andernfalls muss ein gültiges Zertifikat installiert und in der Registrierung die Einstellung aktiviert werden, dass Trusted Applications innerhalb des Browsers ausgeführt werden dürfen. Weitere Informationen dazu finden Sie auf der MSDN-Seite von Microsoft.

Listing 1

var directory = @"C:Silverlight5App";
            if (!Directory.Exists(directory))
                Directory.CreateDirectory(directory);

            var filename = "Textbox.txt";
            var fullPath = Path.Combine(directory, filename);

            using (var fileStream = File.Create(fullPath))
            {
                using (var writer = new StreamWriter(fileStream, Encoding.UTF8))
                {
                    writer.Write(textBox.Text);
                }
            }

            MessageBox.Show("Es wurde erfolgreich in die Datei geschrieben.");  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -