Доступ к веб-сайту SharePoint из приложения Java с аутентификацией Kerberos - PullRequest
5 голосов
/ 26 февраля 2009

Я пытаюсь получить доступ к веб-сайту SharePoint из приложения Java. Сервер SharePoint предпочитает аутентификацию Kerberos. Можете ли вы привести пример только для реализации аутентификации Kerberos?

Ответы [ 3 ]

7 голосов
/ 27 февраля 2009

Так что, чтобы помочь вам немного расширить поиск ответов, нет ничего специфичного для SharePoint в используемой здесь аутентификации Kerberos. На самом деле SharePoint не имеет собственных механизмов аутентификации (по крайней мере, если предположить, что мы говорим здесь о WSS 3 / MOSS). Он просто опирается на базовые возможности аутентификации ASP.NET/IIS.

Ооо, если вы используете Java с использованием современного JDK, вам, вероятно, будет легко. См. документы по механизмам аутентификации HTTP . Там есть несколько хороших фрагментов кода. Один из которых я воспроизведу для справки здесь. На самом деле, проверьте ссылку.

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);
    }
}
5 голосов
/ 16 ноября 2009

Вот пример из документации Java с открытым исходным кодом SPNEGO Библиотека HTTP-сервлетов

В библиотеке есть клиент, который может подключаться к веб-серверу, на котором включена встроенная проверка подлинности Windows.

В проекте также есть примеры того, как настроить вашу среду для аутентификации 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", "myp@s5");
         spnego.connect(new URL("http://medusa:8080/index.jsp"));

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

     } finally {
         if (null != spnego) {
             spnego.disconnect();
         }
     }
 }
0 голосов
/ 27 февраля 2009

Что касается настройки Kerberos, я знаю 3 человек, которые между ними знают все, что нужно знать о Снаряжении: Спенс Харбар, Боб Фокс и Том Висновски.

Спенс также готовит мастер Kerberos для настройки Curb и экспорта сценариев установки.

Проверьте его блог здесь: http://www.harbar.net/

Том Визновски разослал белую бумагу. http://my/sites/tomwis/Shared%20Documents/Configuring%20Kerberos%20for%20SharePoint.docx

Джоэл Олсон получил хорошую статью здесь: http://www.sharepointjoel.com/Lists/Posts/Post.aspx?ID=2

Но когда сказано выше, SharePoint рекомендует использовать Curb только тогда, когда компания уже использует это. Вы не должны устанавливать Kerberos в сети вашей компании только из-за SharePoint. Kerberos сложен в настройке, и хотя он обычно считается более быстрым, чем NTLM, это верно только в том случае, если вы достигаете определенного предела одновременных пользователей на вашем сайте. Для сайта с низким трафиком огромные токены, которые Kerberos отправляет по сети, фактически делают его медленнее, чем NTLM.

Конечно, есть некоторые функции, которые будут работать только с Kerberos (RSS-канал, кубы в службах Excel, аутентификация вызовов веб-служб в пользовательском коде из-за двойного прыжка), но поверьте мне, когда я скажу, что NTLM сделает очень хорошую работу запуск вашего MOSS также.

Когда сказано выше, не могли бы вы указать, какого рода интеграцию вы пытаетесь добиться с помощью своего Java-приложения?

Вы просто пытаетесь вызвать слои веб-служб SharePoint?

НТН Андерс Раск

...