2009-02-26 5 views

risposta

0

Per l'installazione Kerberos, conosco 3 persone che tra loro conoscono tutto ciò che c'è da sapere su Curb: Spence Harbar, Bob Fox e Tom Wisnowski.

Spence si sta anche preparando con una procedura guidata Kerberos per configurare Curb ed esportare gli script di installazione.

controlla il suo blog qui: http://www.harbar.net/

Tom Wiznowski ha inviato un white paper. http://my/sites/tomwis/Shared%20Documents/Configuring%20Kerberos%20for%20SharePoint.docx

Joel Olson ha ottenuto un buon articolo qui: http://www.sharepointjoel.com/Lists/Posts/Post.aspx?ID=2

Ma quando è detto sopra, SharePoint raccomanda solo Curb per quando l'azienda utilizza già questo. Non dovresti installare Kerberos nella tua rete aziendale solo a causa di SharePoint. Kerberos è complesso da configurare e anche se generalmente è considerato più veloce di NTLM, questo è vero solo quando raggiungi un certo limite di utenti simultanei sul tuo sito. Per un sito a basso traffico, gli enormi token che Kerberos invia attraverso la rete in realtà rendono più lento di NTLM.

Sicuramente esiste una funzionalità che funziona solo con Kerberos (feed rss, cubi nei servizi Excel, autenticazione delle chiamate di servizi Web in codice personalizzato a causa del doppio hop) ma fidati di me quando dico che NTLM farà un ottimo lavoro di eseguire il tuo MOSS anche.

Quando si dice quanto sopra, potresti specificare quale tipo di integrazione stai cercando di ottenere dalla tua applicazione Java?

Stai solo provando a chiamare i livelli del servizio Web di SharePoint?

hth Anders Rask

+1

E se cercasse di chiamare i servizi Web di SharePoint?Cosa sarebbe stato diverso? Sono curioso perché ho riscontrato un problema NTLM che esegue servizi Web e vorrei sapere se dovrei utilizzare Kerberos. – jmend

+0

Quando si utilizza NTLM non è possibile accedere alle risorse su alcun server di rete. Questo è spesso definito come un problema di "doppio salto". Google che per maggiori informazioni. kerberos d'altra parte può autenticare attraverso la rete –

+0

Grazie, ti dispiacerebbe dare un'occhiata a questa domanda? http://stackoverflow.com/questions/8884152/ntlm-fails-when-consuming-sharepoint-web-service-from-java. Temo che possa essere il problema del doppio salto, ma non sono sicuro. – jmend

7

Quindi, solo per aiutarti a ampliare la ricerca di risposte un po ', non c'è niente di circa l'autenticazione Kerberos usata qui-specifica di SharePoint. In effetti, SharePoint non ha realmente i suoi meccanismi di autenticazione (almeno supponendo che stiamo parlando di WSS 3/MOSS qui). Si basa solo sulle capacità di autenticazione ASP.NET/IIS sottostanti.

Quindi, se stai eseguendo il tuo Java con un moderno JDK, probabilmente avrai un momento facile. Vedi lo docs on HTTP authentication mechanisms. Ci sono alcuni frammenti di codice interessanti. Uno dei quali riprodurrò per riferimento qui. Davvero, guarda il link.

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.Authenticator; 
import java.net.PasswordAuthentication; 
import java.net.URL; 

public class RunHttpSpnego { 

    static final String kuser = "username"; // your account name 
    static final String kpass = "password"; // your password for the account 

    static class MyAuthenticator extends Authenticator { 
     public PasswordAuthentication getPasswordAuthentication() { 
      // I haven't checked getRequestingScheme() here, since for NTLM 
      // and Negotiate, the usrname and password are all the same. 
      System.err.println("Feeding username and password for " + getRequestingScheme()); 
      return (new PasswordAuthentication(kuser, kpass.toCharArray())); 
     } 
    } 

    public static void main(String[] args) throws Exception { 
     Authenticator.setDefault(new MyAuthenticator()); 
     URL url = new URL(args[0]); 
     InputStream ins = url.openConnection().getInputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(ins)); 
     String str; 
     while((str = reader.readLine()) != null) 
      System.out.println(str); 
    } 
} 
+0

grazie mille, questa risposta mi è stata utile. – Israelm

5

Ecco un example from the Java documentation dell'open source SPNEGOHTTP Servlet Filter library.

La libreria dispone di un client che può connettersi a un server Web con l'autenticazione integrata di Windows attivata.

Il progetto contiene anche esempi su come configurare il proprio ambiente per l'autenticazione Kerberos/SPNEGO.

public static void main(final String[] args) throws Exception { 
    System.setProperty("java.security.krb5.conf", "krb5.conf"); 
    System.setProperty("sun.security.krb5.debug", "true"); 
    System.setProperty("java.security.auth.login.config", "login.conf"); 

    SpnegoHttpURLConnection spnego = null; 

    try { 
     spnego = new SpnegoHttpURLConnection("spnego-client", "dfelix", "[email protected]"); 
     spnego.connect(new URL("http://medusa:8080/index.jsp")); 

     System.out.println(spnego.getResponseCode()); 

    } finally { 
     if (null != spnego) { 
      spnego.disconnect(); 
     } 
    } 
}