Kerberos in Anwendungen nutzen

Die Nutzung von Kerberos setzt einerseits voraus, dass die Anwendungen für eine Nutzung tauglich sind und beispielsweise auch Zugriffe „impersonisieren“, das heißt mit der Delegation arbeiten können. Zum anderen sind aber auch administrative Schritte erforderlich.

Die Verwendung von Kerberos in Windows-Anwendungenm ist nicht so komplex, wie man das vielleicht vermuten würde. Das Microsoft .NET Framework, die aktuelle Basis für die Entwicklung von Windows-Anwendungen, stellt wichtige Funktionen für die Nutzung auch der Kerberos-Funktionalität bereit, wobei sich der Entwickler nicht mit den Details von Kerberos direkt auseinander setzen muss.

Das wird bei einem Blick in die MSDN-Library (http://msdn.microsoft.com/library) deutlich. Dort gibt es eine Klasse WindowsIdentity. Sie stellt verschiedene Methoden und Eigenschaften bereit, zu denen unter anderem auch Impersonate gehört. Wenn die Voraussetzungen geschaffen wurden, kann damit im Kontext eines anderen Benutzers gearbeitet werden.

Die Protocol Transition wird dagegen mit Lsa-LogonUser() durchgeführt. Damit kann eine Authentifizierung eines Benutzers an Windows über Kerberos durchgeführt werden, dessen Anmeldung zunächst über einen anderen Ansatz erfolgt ist.

Eine relativ ausführliche Beschreibung des Themas mit Codebeispielen und Hinweisen auf weitere Informationen bietet www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/constdel.mspx.

Die Kerberos-Tickets

Für weitergehende Funktionen kann auf Informationen in den Kerberos-Tickets zugegriffen werden. Ein Überblick dazu findet sich in http://msdn.microsoft.com/library/en-us/dnkerb/html/msdn_pac.asp. Das Dokument analysiert die Voraussetzungen, um die Informationen, die mit einem Kerberos-Ticket in einem speziellen Feld für die Autorisierungsdaten geliefert werden, auszulesen und zu verarbeiten. Zu diesen Daten gehören unter anderem die SID-Informationen für den Benutzer und die Gruppen, zu denen er gehört. Diese Informationen werden in vielen Fällen für die Autorisierung von Zugriffen benötigt, weil sie entweder in ACLs (Access Control Lists) direkt genutzt werden oder weil sie für die eindeutige Identifikation des Benutzers im Active Directory erforderlich sind.

S4U Kerberos Extensions

Wenn man sich mit der Nutzung von Kerberos innerhalb von Anwendungen beschäftigt, stößt man schnell auch auf die S4U Kerberos Extensions. S4U steht für Service-for-User. Dabei geht es um Funktionen, mit denen Dienste für Benutzer bereitgestellt werden – also um die Delegation und die Protocol Transition. Es handelt sich also nicht um grundlegend neue Ansätze.

Auch hier stellt Microsoft ein recht interessantes Dokument bereit. Das Konzept wird unter http://msdn.microsoft.com/msdnmag/issues/03/04/SecurityBriefs umfassend erläutert. Hier finden sich auch etliche weiterführende Informationen rund um die bedingte Delegation und die Protokollumsetzung.

Bild 1: Die Einstellungen für die Delegation bei den Eigenschaften eines Benutzers.
Bild 1: Die Einstellungen für die Delegation bei den Eigenschaften eines Benutzers.

Weitere Informationen

Eine weitere Serie interessanter Artikel mit Hintergründen zur Nutzung von Kerberos in verteilten Umgebungen – auch über die Grenzen von Windows hinweg – stellt http://msdn.microsoft.com/library/en-us/dnsecure/html/http-sso-1.asp mit den dort enthaltenen Links zu den weiteren Teilen der Serie zur Verfügung. Die Serie nennt sich “HTTP-Based Cross-Platform Authentication via the Negotiate Protocol“.