DEVELOPER: Sicherheit in .NET 2.0

Sicherere verteilte Anwendungen unter Windows zu erstellen, war noch nie so einfach wie mit .NET 2.0.

  

» Von Dominick Baier, 08.11.2005 10:37.

Bereits .NET 1.x wurde mit Sicherheit im Hinterkopf designed. Dafür sprechen viele grundlegende Einrichtungen wie Strong Names, Rollen-basierte Sicherheit, CAS und Kryptographie. Doch um «richtige» Anwendungen zu schreiben, die heutigen Anforderungen genügen, und sich dabei vernünftig in die Windows Sicherheits-Infrastruktur integrieren, muss ein Entwickler immer noch tief in die Win32 und COM Trickkiste greifen. .NET 2.0 wird diese Situation erheblich verbessern, und wartet mit einer Reihe neuer Security APIs auf, mit denen ein Sicherheits-orientierter Programmierer seine wahre Freude haben wird.

 

Windows Security

Als kluger Entwickler integriert man sich weitest möglich in die Plattform, auf der die Software auch zum Einsatz kommt. Windows besitzt bereits eine exzellente Sicherheits-Infrastruktur und es gibt keinen Grund das Rad neu zu erfinden. Interessanterweise wurde genau dieser Teil des Windows APIs in 1.1 sehr stiefmütterlich behandelt. Der Namensraum System.Security.Principal kennt nun endlich eine Repräsentation für Windows Accounts (Benutzer, Gruppen und Maschinen). Die Klasse SecurityIdentity kapselt die Maschinen-lesbare Form eines Accounts (SID) und die Klasse NTAccount stellt diese Information im vertrauten «Authority\Benutzer»-Format dar. Das Konvertieren zwischen den beiden Formaten ist mit der Translate-Methode leicht möglich. Weiterhin ist mit dem neuen Enum WellKnownSids nun der Zugriff auf alle «bekannten» SIDs in Windows sichergestellt. Das nachfolgende Codebeispiel zeigt die Konvertierung in beide Richtungen, sowie den Zugriff auf eine «well known» SID:

LISTING 1

 

private static string getSid(string username)

{

NTAccount account = new NTAccount(username);

 

SecurityIdentifier sid =
(SecurityIdentifier)account.Translate

(typeof(SecurityIdentifier));

 

return sid.Value;

}

 

private static string getLocalAdminGroup()

{

SecurityIdentifier sid =
new SecurityIdentifier

(WellKnownSidType.BuiltinAdministratorsSid, null);

NTAccount acc = (NTAccount)sid.Translate(typeof(NTAccount));

 

return acc.Value;

}

Der Autor , Dominik Baier, ist unabhängiger Security Consultant und betreut die Sicherheits-Kurse bei Developmentor, einer Entwickler-Trainings-Firma

Werbung

KOMMENTARE

Keine Kommentare

KOMMENTAR SCHREIBEN

*
*
*
*

Alles Pflichfelder, E-Mail-Adresse wird nicht angezeigt.

Die Redaktion hält sich vor, unangebrachte, rassistische oder ehrverletzende Kommentare zu löschen.
Die Verfasser von Leserkommentaren gewähren der IDG Communications AG das unentgeltliche, zeitlich und räumlich unbegrenzte Recht, ihre Leserkommentare ganz oder teilweise auf dem Portal zu verwenden. Eingeschlossen ist zusätzlich das Recht, die Texte in andere Publikationsorgane, Medien oder Bücher zu übernehmen und zur Archivierung abzuspeichern.