Получите доступ к веб-сайту SharePoint из JAVA-приложения с аутентификацией Kerberos

У меня есть несколько вещей, которые я хочу упомянуть, прежде чем дать прямой ответ на ваш вопрос.

Во-первых, я однажды провел эксперимент, и я выполнил 200000 запросов PUT / DELETE примерно за 25 минут, что составляет чуть более 130 запросов в секунду. Объекты, которые я загружал, имели размер около 10 КБ каждый. (У меня также было ~ 125000 GET запросов за тот же промежуток времени, поэтому я уверен, что если бы я делал только PUT с, я мог бы достичь еще более высокой пропускной способности PUT.) Я достиг этого на m4.4xlarge Экземпляр, который имеет 16 виртуальных ЦП и 64 ГБ ОЗУ, который работал в том же регионе AWS, что и корзина S3.

Чтобы увеличить пропускную способность, используйте более мощное оборудование и минимизируйте количество сетевых скачков и потенциальных узких мест между вами и S3.

S3 является распределенной системой. (В их документации говорится, что данные реплицируются на несколько AZ.) Он предназначен для одновременного обслуживания запросов от множества клиентов (поэтому он отлично подходит для размещения статических веб-ресурсов).

На самом деле, если вы хотите проверить пределы S3, вам нужно распределиться слишком быстро, увеличив число экземпляров EC2 или запустив ваши тесты как лямбда-функцию.

Редактировать: S3 не дает гарантий задержки для обслуживания ваших запросов. Одной из причин этого может быть то, что каждый запрос может иметь разный размер полезной нагрузки. (Запрос GET для объекта 10 B будет намного быстрее, чем объект 10 МБ.)

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

Кроме того, общее время выполнения не обязательно указывает на производительность, потому что, когда вы отправляете данные по сети, всегда существует риск сетевых задержек и потери пакетов. У вас может быть один неудачный запрос, который имеет более медленный путь через сеть или этот запрос может просто потерять больше пакетов, чем другие.

Вам нужно тщательно определить, что вы хотите узнать, а затем тщательно определить, как правильно его проверить.

5
задан SW4 24 April 2014 в 08:12
поделиться

3 ответа

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

Sooo при выполнении Java ausing современный 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);
    }
}
7
ответ дан 13 December 2019 в 05:43
поделиться

Для установки Kerberos я знаю о 3 людях, кто между ними знает, что все там должны знать об Обочине: Spence Harbar, Bob Fox и Tom Wisnowski.

Кладовая также назревает с мастером Kerberos для установки Обочины и сценариев установки экспорта.

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

Tom Wiznowski отослал отчет. http://my/sites/tomwis/Shared%20Documents/Configuring%20Kerberos%20for%20SharePoint.docx

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

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

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

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

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

hth Anders Rask

0
ответ дан 13 December 2019 в 05:43
поделиться

Вот пример из документации Java библиотеки с открытым исходным кодом SPNEGO HTTP Servlet Filter .

В библиотеке есть клиент, который может подключаться к веб-серверу, на котором включена встроенная проверка подлинности 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();
         }
     }
 }
5
ответ дан 13 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: