crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> NTLM version 2, автоматическая авторизация
dale87
  опции профиля:
сообщение 21.1.2011, 8:22
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 21.1.2011
Пользователь №: 2355

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброе время суток!

Задача: Написать приложение на QT, которое будет автоматически авторизоваться на корпоративном сайте с именем пользователя и паролем текущей учетной записи, собирать и обрабатывать необходимую информацию. Авторизация проходит по протоколу NTLM version 2.

А теперь собственно вопрос: Все замечательно получается кроме одного! Автоматическая авторизация не происходит. Выпадает диалог в котором требуется ввести имя пользователя и пароль... В чем здесь дело? Может нужно использовать какие-то другие классы, или что-то дополнительно настраивать? Возможно ли вообще осуществить автоматическую авторизацию с использованием библиотеки QT?

При подключении к серверу пользуюсь классами: QNetworkAccessManager, QAuthenticator. Версия библиотеки 4.7.1. Адекватной документации по этому вопросу я не нашел.
К слову: сервер настроен. Т.е. когда заходим на сайт через браузер аутентификация проходит автоматически.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Rocky
  опции профиля:
сообщение 21.1.2011, 9:39
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


слот QNetworkAccessManager::authenticationRequired задействован? Туда попадаете? Что внутри? QAuthenticator::setUser и QAuthenticator::setPassword вызываете внутри слота?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dale87
  опции профиля:
сообщение 21.1.2011, 10:16
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 21.1.2011
Пользователь №: 2355

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Rocky @ 21.1.2011, 14:39) *
слот QNetworkAccessManager::authenticationRequired задействован? Туда попадаете? Что внутри? QAuthenticator::setUser и QAuthenticator::setPassword вызываете внутри слота?


как основу я использовал пример из QT HTML Client
На данный момент авторизация проходит следующим образом:
void HttpWindow::slotAuthenticationRequired(QNetworkReply*,QAuthenticator *authenticator)
{
    QDialog dlg;
    Ui::Dialog ui;
    ui.setupUi(&dlg);
    dlg.adjustSize();

    ui.siteDescription->setText(tr("%1 at %2").arg(authenticator->realm()).arg(url.host()));

    // Did the URL have information? Fill the UI
    // This is only relevant if the URL-supplied credentials were wrong
    ui.userEdit->setText(authenticator->user());
    ui.passwordEdit->setText(authenticator->password());
    authenticator->setOption();

    if (dlg.exec() == QDialog::Accepted) {
        authenticator->setUser(ui.userEdit->text());
        authenticator->setPassword(ui.passwordEdit->text());
    }
}


Соответственно вылетает диалог, где вводится имя и пароль... Можно было бы воспользоваться функциями setUser() и setPassword(), но где взять эти самые имя и пароль?

Ну а коннект происходит следующим образом:
    connect(&qnam, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
            this, SLOT(slotAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 14:41