Authentifizierung für sharepoint mit kerberos aus einer java-HttpClient
Ich habe einen linux\java6-client, der die Authentifizierung zu sharepoint2010 mit NTLM und dann senden von HTTP-REST-web-services mit Apache Commons HttpClient
.
Kann ich dies mit NTLM , aber ich will das gleiche REST-API für den Zugriff auf sharepoint 2010 mithilfe der kerberos-auth.
Beispiele dafür, wie sich zu authentifizieren, und senden Sie REST über HTTP mit einem kerberos für sharepoint?
(vorzugsweise mit HttpClient
)
p.s.
I dont haben Zugriff auf sharepoint-code, aber ich habe Zugriff auf sharepoint-admin-Konfigurationen.
Das ist in etwa so, wie ich die Authentifizierung mit NTLM:
HttpClient httpClient = new HttpClient(new SimpleHttpConnectionManager(true));
AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, JCIFS_NTLMScheme.class);
String localHostName = Inet4Address.getLocalHost().getHostName();
authscope = new AuthScope(uri.getHost(), AuthScope.ANY_PORT);
httpClient.getState().setCredentials(authscope,new NTCredentials(
getUsername(),getPassword(),localHostName,getDomain()));
//after the initial ntlm auth I can call my REST service with "httpClient.executeMethod"
int status = httpClient.executeMethod(new GetMethod(accessURI + "/sitecollection/info"));
- Haben Sie sah thejavamonkey.blogspot.com/2008/04/...
- es ist nicht genau das, was ich brauche, ich habe eine bestehende api für rest web-services über http (org.apache.Unterhaus.httpclient.HttpClient), dass die Arbeit mit NTLM, und ich muss DASSELBE webservices beim Umgang mit sharepoint-Server mit kerberos.
- Welcher Teil des Artikels habe ich erwähnt, ein problem sein wird, dass Sie benötigen, um das ticket, und ich bin nicht sicher, wie Sie planen, dies zu tun. Es kann helfen, wenn Sie mehr ins detail gehen.
- vielleicht habe ich nicht verstanden, aber was ich will zu tun ist, senden von web-Anfragen zu einem kerberos-sharepoint-server wie diesen httpClient.executeMethod(new GetMethod(accessURI)); werde ich in der Lage sein, um http Anfragen nach der Authentifizierung in den Artikel? auch ich bin nicht sicher, wie Sie Sie zu erwerben, die richtigen AUFTRAGGEBER von meiner sharepoint-server (AUFTRAGGEBER="webserver/[email protected]";)
- Möchten Sie vielleicht Blick auf diese Frage, da es ähnlich wie das, was Sie wollen: stackoverflow.com/questions/592403/...
- Ich würde dir empfehlen, den code herunterladen, und machen Sie die vorgeschlagenen änderungen, und versuchen Sie es. Doch, um die AUFTRAGGEBER müssen Sie bei den Systemadministratoren, was Wert zu setzen.
- das beschreibt das erstellen von client + server, der gemeinsame code, wie callbackhandler, aber I dont haben Zugriff auf den server-code, erstelle ich einen client mit einem bestehenden server
- Ist Ihre Java-client soll eine Verbindung mit der workstation-Benutzer, die Identität, oder ist es eine Maschine-zu-Maschine-Verbindung mit einem einzigen technischen Benutzer ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte bestätigen Sie, dass Ihre Umgebung ordnungsgemäß setup, Kerberos, dies kann erreicht werden durch ausführen von kinit. Wenn dies fehlschlägt, müssen Sie sicherstellen, dass Ihre krb5.ini (windows) oder krb5.conf (linux) - setup, zeigen Sie auf Ihre Domäne-controller korrekt.
Sobald Sie haben bestätigt, dass die Kerberos-funktionell ist, können Sie den Beispiel-code von HttpClient wie unten eingefügt.
Bitte beachten Sie, dass es gibt viele Fragen, die verursachen können, Kerberos fehl, wie die Zeit-synchronisation, unterstützten Verschlüsselungstypen, Vertrauen, Beziehungen über domain-Wälder und es lohnt sich auch, sicherzustellen, dass Ihre client ist auf einer separaten box auf den server.
Hier ist der Beispiel-code welcher in der HttpClient herunterladen, die Sie benötigen, um sicherzustellen, dass Ihre JAAS-Konfiguration und krb5.conf oder ini sind richtig!!!!
krb5.conf
undlogin.config
erforderlich sind. Dann, wenn dein client immer die gleiche Benutzeridentität zu verbinden, eine keytab kann eine gute Idee zu vermeiden, kinit user/Passwort Authentifizierung mit der Mühe, zu speichern das Kennwort irgendwo.