Ich möchte den Namen des Benutzers aus dem Kerberos-Ticket im Autorisierungs-HTTP-Header lesen. Ich benutze Java.
Ich habe tagelang versucht, dies zu erreichen, indem ich eine Reihe von Seiten zu diesem Thema durchgelesen habe, aber das war nicht möglich. Kerberos ist neu / fremd für mich.
Das habe ich erreicht:
Ab hier ist es eine erschreckende Reise durch das Unbekannte. Soweit ich das beurteilen kann, sollten die nächsten Schritte sein:
Das habe ich:
login.conf
%Vor%JavaClass.java
%Vor%ServiceTicketDecoder.java
%Vor%Der Login in JavaClass.java funktioniert ok, also gehe ich davon aus, dass die login.conf in Ordnung ist. Auf "GSSCredential serviceCredentials = gssManager.createCredential (..." im ServiceTicketDecoder.java wird die folgende Ausnahme ausgelöst:
%Vor%Ich bin mir nicht sicher, ob dies der richtige Ansatz ist. Ich weiß auch nicht, welchen Wert der "String Service" haben soll oder wie man diese Informationen bekommt. Kannst du mir helfen?
BEARBEITEN: login.conf
%Vor%Ich habe eine Keytab-Datei erhalten. Anscheinend war das Konto des HTTP / some.server.com-Benutzers bereits ein Service-Hauptkonto. Ich habe jetzt ein Problem auf JavaClass.java bei lc.login ():
%Vor%Die Keytab-Datei ist mit des-cbc-md5 verschlüsselt und ich habe folgendes in der krb.conf-Datei definiert:
%Vor%Wenn ich die Standard-EnkTypen z. aes128-cts, bekomme ich folgende Ausnahme:
%Vor%Ich verstehe nicht was falsch ist ...
Kerberos ist ein vertrauenswürdiges Sicherheitssystem von Drittanbietern: Das Sicherheitstoken, das Sie vom Client erhalten, kann nur von Ihnen entschlüsselt werden, ohne Kerberos-Infrastrukturserver (wie das KDC) zu kontaktieren. Du bist auf dem richtigen Weg; Es scheint jedoch, dass Sie dieses Hintergrundwissen über Kerberos vermissen, um Sie bei Ihrer weiteren Recherche zu unterstützen.
Dies wird dadurch erreicht, dass Sie auf dem Server eine keytab -Datei benötigen, die den geheimen Schlüssel Ihres Servers enthält. Auf dem Kerberos-Server (ich vermute, Microsoft Windows Server) muss ein Service-Hauptkonto für Ihren Dienst erstellt werden. Ein Administrator kann Ihnen die für dieses Konto generierte Keytab-Datei bereitstellen, die den geheimen Schlüssel enthält.
Sie müssen dann den Server konfigurieren, um diese Chiffrierschlüsseldatei zu finden. Es wird im serverseitigen Schritt mit LoginContext.login
verwendet. Ihr Code, der den Sicherheitskontext akzeptiert, muss innerhalb eines doPrivileged
-Code-Segments ausgeführt werden, in dem Ihre serverseitigen Anmeldeinformationen wirksam sind.