2009-06-27 8 views
7

Gibt es Beispiele, die zeigen, wie Delphi den Active Directory-Kerberos-Server aufruft, um ein Ticket zu beantragen, das Ticket/normales Ticket gewährt?Wie bekomme ich ein Kerberos-Ticket mit Delphi?

Hintergrund: Das Ticket ist für die Authentifizierung an einen Webservice erforderlich, der vertrauliche Informationen austauscht.

Edit: ein kurzer Quellcode Beispiel wäre sehr hilfreich. Ich habe die JEDI Windows Security Code Library gefunden, die sehr beeindruckend ist. Ich bin mir nicht sicher, ob es Unterstützung für Kerberos enthält.

+1

siehe https://quality.embarcadero.com/browse/RSP-15455 – mjn

Antwort

6

Nach this sollten Sie in der Lage sein, einen mit dem Windows API-Aufruf InitializeSecurityContext zu erhalten.

+0

Vielen Dank für den Link - jedoch, um es in Delphi zu verwenden, sieht es so aus, als müssten viele API-Datensatzstrukturen erstellt und zuerst gefüllt werden. Ich habe eine Bounty gestartet, vielleicht kann jemand Code teilen. – mjn

+1

Die meisten Win32-API-Header wurden unter dem JEDI-Projekt (http://jedi-apilib.sourceforge.net/) konvertiert, und wenn es nicht dort ist, verwende ich normalerweise Google's Codesearch (http://www.google.com/codesearch? q = initializesecuritycontext + lang: pascal) um den Hut zu finden, den ich brauche. –

+1

Hier ist ein alter Code http://cc.embarcadero.com/Item/16213, der zeigt, wie InitializeSecurityContext mit NTLM-Anmeldeinformationen aufgerufen wird. Es kann ein guter Start für alle sein, die versuchen, ein Kerberos-Ticket zu erhalten. – Mattl

1

Lesen Sie zuerst Kerberizing Applications Using Security Support Provider Interface, um die allgemeine Idee zu erhalten. InitializeSecurityContext wird wie folgt beschrieben:

Initiiert einen Sicherheitskontext von ein Sicherheitstoken erzeugt, das muss an den Server übergeben werden. Die Anwendung, die diese Funktion verwendet, ist namens ein SSPI-Client.

Auf msdn finden Sie die Liste der SSPI-Funktionen in Authentication Functions.

Den tatsächlichen Beispielcode finden Sie unter Win32-Beispiele SSPI page. Sie finden wahrscheinlich client.cpp, um nützlich zu sein. Ein anderes ähnliches Beispiel ist GssClient.c. Beide Codes führen sie in einer Schleife aus, da die Konversation weiterläuft, wenn SEC_I_CONTINUE_NEEDED zurückgegeben wird.

Verwandte Themen