2009-02-26 8 views

Répondre

0

Pour la configuration de Kerberos, je connais 3 personnes qui, entre elles, connaissent tout ce qu'il y a à savoir sur Curb: Spence Harbar, Bob Fox et Tom Wisnowski.

Spence utilise également un assistant Kerberos pour configurer les scripts de configuration Curb et d'exportation.

Découvrez son blog ici: http://www.harbar.net/

Tom Wiznowski a envoyé un livre blanc. http://my/sites/tomwis/Shared%20Documents/Configuring%20Kerberos%20for%20SharePoint.docx

Joel Olson a obtenu un bon article ici: http://www.sharepointjoel.com/Lists/Posts/Post.aspx?ID=2

Mais quand ce qui précède est dit, SharePoint recommande que Curb lorsque l'entreprise utilise déjà. Vous ne devez pas installer Kerberos sur votre réseau d'entreprise uniquement à cause de SharePoint. Kerberos est complexe à configurer et même s'il est généralement considéré comme plus rapide que NTLM, cela n'est vrai que lorsque vous atteignez une certaine limite d'utilisateurs simultanés sur votre site. Pour un site à faible trafic, les jetons énormes envoyés par Kerberos sur le réseau le rendent plus lent que NTLM. Bien sûr, certaines fonctionnalités ne fonctionneront qu'avec Kerberos (flux rss, cubes dans les services Excel, authentification des appels de service Web en code personnalisé en raison de doubles sauts), mais croyez-moi quand je dis que NTLM fera un très bon travail. travail de courir votre MOSS aussi.

Lorsque ce qui précède est indiqué, pourriez-vous préciser le type d'intégration que vous essayez d'obtenir à partir de votre application Java?

Vous essayez simplement d'appeler les couches de service Web de SharePoint?

HTH Anders Rask

+1

Qu'est-ce qui aurait été différent? Je suis curieux car j'ai rencontré un problème NTLM lors de l'exécution de services Web et j'aimerais savoir si je devrais utiliser Kerberos. – jmend

+0

Lorsque vous utilisez NTLM, vous ne pouvez pas accéder aux ressources sur les serveurs réseau. Ceci est souvent appelé un problème de «double saut». Google que pour plus d'informations. Kerberos d'autre part peut s'authentifier à travers le réseau –

+0

Merci, cela vous dérangerait de jeter un oeil à cette question? http://stackoverflow.com/questions/8884152/ntlm-fails-when-consuming-sharepoint-web-service-from-java. J'ai peur que ce soit le problème du double hop, mais je ne suis pas sûr. – jmend

7

Donc, juste pour vous aider à élargir votre recherche pour trouver des réponses un peu, il y a l'authentification Kerberos spécifique à SharePoint rien au sujet utilisé ici. En fait, SharePoint n'a pas vraiment ses propres mécanismes d'authentification (du moins en supposant que nous parlions de WSS 3/MOSS ici). Il repose uniquement sur les capacités d'authentification ASP.NET/IIS sous-jacentes. Donc, si vous utilisez votre Java en utilisant un JDK moderne, vous aurez probablement un temps facile. Voir le docs on HTTP authentication mechanisms. Il y a quelques bons extraits de code là-dedans. Un de qui je vais reproduire pour référence ici. Vraiment cependant, consultez le lien.

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

merci beaucoup, cette réponse était vert utile pour moi. – Israelm

5

Voici un example from the Java documentation de la source SPNEGOHTTP Servlet Filter library ouverte.

La bibliothèque dispose d'un client pouvant se connecter à un serveur Web sur lequel l'authentification Windows intégrée est activée.

Le projet contient également des exemples de configuration de votre environnement pour l'authentification Kerberos/SPNEGO. Et s'il essayait juste d'appeler les services Web de SharePoint?

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(); 
     } 
    } 
} 
Questions connexes