HttpClient festlegen von Anmeldeinformationen für die Kerberos-Authentifizierung
Ich versuche, um die Authentifizierung mit einem kerberos - /HTTP-host. Mit Hilfe von Apache HttpClient-als mein Mandant - und eine leicht modifizierte version von diese Quelle.
Mein Kerberos-Authentifizierung geht völlig in Ordnung, und ich wünschte zu wissen, wie man die Anmeldedaten über ein Programm. Im moment werden die Anmeldeinformationen manuell über die Konsole, aber ich will es von mir gewählte Laufzeit. [ Als ich automatisieren möchten und laden testen des Servers mit einer großen Anzahl von Benutzern, tatsächlich. ].
EDIT : Hier ist ein Codeausschnitt der betreffenden Teile :
..
NegotiateSchemeFactory nsf = new NegotiateSchemeFactory();
httpclient.getAuthSchemes().register(AuthPolicy.SPNEGO, nsf);
Credentials use_jaas_creds = new Credentials() {
public String getPassword() {
return null;
}
public Principal getUserPrincipal() {
return null;
}
};
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(null, -1, null),
use_jaas_creds);
HttpUriRequest request = new HttpGet("http://kerberoshost/");
HttpResponse response = httpclient.execute(request);
..
Die Schnittstelle Credentials
hat zwei Methoden - getPassword()
und getUserPrincipal()
, aber von einigem Debuggen habe ich Sie offenbar nicht aufgerufen überhaupt.
Was vermisse ich hier ? Was ist ein sauberer Weg zu statisch festlegen der Anmeldeinformationen ?
Sehr ähnliche Frage hatte, wurde gebeten, vor, aber keytabs/login.conf hack ist zu umständlich und nicht eine praktische option für einen automatisierten Lasttest mit einer großen Anzahl von Benutzer-Anmeldeinformationen.
Jede Hilfe zu schätzen wissen.
krb5_get_init_creds_password
. Ich konnte Sie nicht finden, eine Analog-direkt in die Java-kerberos-api in den wenigen Minuten, die ich sah web.mit.edu/kerberos/krb5-devel/doc/appdev/refs/api/...C ist nicht wirklich eine option für mich. Weil der Testfall beinhaltet nicht nur die kerberos -, aber HTTP auch. Der test ist verifiziert, basierend auf HTTP erfolgreiche redirect-status-codes etc. Aber wenn es irgendwelche vorhandenen Dienstprogramme (C - /Kommandozeile) kein Kerberos+HTTP, wird glücklich sein, zu versuchen, dass. Ich bin nicht bewusst.
Ich bin einigermaßen sicher, dass curl tun kann.
curl -V curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
Ich glaube, es gibt eine java-version von kinit, so dem apis muss irgendwo existieren. Ich bin nur nicht viel von einem java-Experten. Vielleicht kann diese Frage helfen, stackoverflow.com/questions/1037009/...
gut, ja. Ich gebe curl versuchen. Zwar nicht eine direkte Antwort auf die Frage,,, könnte nur helfen bei der Lösung meines eigentlichen Problems! 🙂 Danke für die Hinweise.
InformationsquelleAutor user30622 | 2014-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil der SPNEGO-snippet-code, den Sie posten (Anmeldeinformationen Klasse Sachen setup) ist nicht mit httpclient authentifizieren.
Können Sie mit einem DoAs + ein CallBackhandler übergeben user & Passwort zur Laufzeit.
Dann benötigen Sie einen login.conf oder wie auch immer der name mit dieser innen:
Können Sie ändern den Namen von "KrbLogin", um den Namen, den Sie möchten (denken Sie daran, den gleichen Namen zu verwenden in Ihren java-code)
und legen Sie diese mit der java-system-Eigenschaften:
oder mit einem
Dann brauchen Sie eine krb5-config-Datei (in der Regel krb5.ini oder krb5.conf mit der richtigen Konfiguration innen)
Wenn Ihre workstation (oder server) richtig konfiguriert, Kerberos, sollten Sie diese Klasse funktioniert (mit der richtigen Datei login.conf und krb5.ini), die ich verwendet httpclient 4.3.3 und java 1.7, um es zu testen:
Hinweis:
können Sie verwenden:
oder:
untersuchen Probleme.
Funktioniert perfekt - danke!!! Für diejenigen, die mit reinen java URLConnection, die Standard-Einstellung authenticator könnte einfacher sein - siehe docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/...
Wenn Sie unter Windows, müssen Sie möglicherweise einen Registrierungseintrag konfigurieren. Dieser Artikel wird mir helfen, diese Arbeit cr.openjdk.java.net/~weijun/special/krb5winguide-2/raw_files/... und auch die Unterlagen, die der Anmeldung.conf ein wenig, als gut. Sie können auch
KerberosCredentials
anstelle der Umsetzung von "Anmeldeinformationen", wie in der ursprüngliche Frage oben, es ist ein wenig übersichtlicher.InformationsquelleAutor eljeko