Aktivieren der ausführlichen Protokollierung für kerberos in java
Ich habe eine java-basierte web-Anwendung, die den Inhalt einer web-Formular mit Benutzername und Passwort und Authentifizierung mit kerberos auf einem Windows-basierten Domäne.
KDC-Adresse ist anscheinend so konfiguriert, um anzeigen auf verschiedenen IP-Adressen bei jedem lookup-und dies bestätigt sich durch die Verwendung des ping-Befehls von der Befehlszeile aus.
Den Anruf reagiert sofort für die meisten Anfragen, aber die Antwort ist langsam (5-10 Sekunden oder noch länger) nur zeitweise. Ich denke, dies kann durch die domain-controller verwendet wird.
Ich habe versucht, schalten Sie die kerberos-Protokollierung, aber die IP-Adresse der domain-controller nicht angezeigt. Wie kann ich auf mehr detaillierte Protokollierung zu versuchen, zu identifizieren dodgy Domänencontroller bitte?
Den code extrahieren Quellen der kerb.conf und kerb_context.conf aus dem Dateisystem.
Den Bordstein.conf:
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
CYMRU.NHS.UK = {
kdc = example.com:88
admin_server = example.com
kpasswd_server = example.com
}
Den kerb_context.conf:
primaryLoginContext {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=false
refreshKrb5Config=true
debug=true;
};
Beispiel Quelle:
static NadexUser executePerformLogin(String username, String password) throws LoginException {
char[] passwd = password.toCharArray();
String kerbConf = ERXFileUtilities.pathForResourceNamed("nadex/kerb.conf", "RSCorp", null);
String kerbContextConf = ERXFileUtilities.pathURLForResourceNamed("nadex/kerb_context.conf", "RSCorp", null).toExternalForm();
System.setProperty("java.security.krb5.conf", kerbConf);
System.setProperty("java.security.auth.login.config", kerbContextConf);
try {
LoginContext lc = new LoginContext("primaryLoginContext", new UserNamePasswordCallbackHandler(username, password));
lc.login();
return new _NadexUser(lc.getSubject());
}
catch (javax.security.auth.login.LoginException le) {
throw new LoginException("Failed to login : " + le.getLocalizedMessage(), le);
}
}
InformationsquelleAutor Mark Wardle | 2013-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie können die Protokollierung aktivieren, indem Sie die Einstellung system-Eigenschaft
sun.security.krb5.debug
zutrue
.Sehen Oracle-Dokumentation
-Dsun.security.krb5.debug=true
Ich kopieren und fügen Sie dies oft genug, so dass ich dachte, ich würde machen es zu einem one-liner.InformationsquelleAutor Ales Dolecek
Habe ich nicht einen Weg finden, schalten Sie, wie detailliert die Protokollierung, aber stattdessen beschlossen, einen anderen Ansatz verfolgen. Der code unten ist eine eigenständige Anwendung, die einfach eine jaas.conf-Konfigurationsdatei in das gleiche Verzeichnis.
Beispiel jaas.conf für die Verwendung mit diesem kurzen test-Anwendung gezeigt:
Dieser code ist vorsichtig, um die system-property sun.net.inetaddr.ttl zu vermeiden java-Zwischenspeicherung der Ergebnisse von DNS-lookup. Für meinen Fall, die DNS-lookup-ändert sich bei jeder Anfrage. Es ist ein ziemlich rohes Stück code, sondern demonstrieren schlecht konfiguriert oder die Durchführung von KDCs innerhalb des Netzwerks.
InformationsquelleAutor Mark Wardle