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

» Von , 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



KOMMENTARE
KOMMENTAR SCHREIBEN