Материал из Tkabber Wiki
Содержание
- 1 Требования к Ткабберу
- 2 Подключение (просто)
- 3 Подключение (сложно)
- 4 Подключение через прокси (вернисаж)
- 5 Подключение к Google Talk (старый вариант заметки)
Требования к Ткабберу
Прежде всего, для подключения к серверу Google Talk (далее GTalk), в вашем Ткаббере обязательно должна быть поддержка SSL/TLS.
Это необходимо из-за того, что существует, в принципе, два способа подключения, но оба они так или иначе требуют использования SSL.
Наличие поддержки SSL можно выяснить, посмотрев на окно логина: оно должно содержать закладку, в названии которой содержится слово "SSL". Если в вашем Ткаббере также есть поддержка сжатия потока, то на этой закладке будет надпись "SSL и сжатие".
Подключение (просто)
Во-первых, правильно укажите имя сервера и свою учётную запись в окне логина:
Пользователь
имя аккаунта на
gmail.com
; например, дляvasya@gmail.com
это будет "vasya"
Сервер
gmail.com
Пароль
пароль от аккаунта на
gmail.com
Теперь опишем "канонический" вариант настроек для подключения:
Вкладка "Соединение"
Убедитесь, что флажок "Явно указать адрес и порт для подключения" выключен.
Вкладка "Аутентификация"
Убедитесь, что включен флажок "Использовать SASL для аутентификации".
Вкладка "SSL"
Убедитесь, что включена опция "Шифрование (STARTTLS)".
Вкладка "HTTP-соедниение"
Флажок "Подключиться с использованием HTTP" должен быть выключен.
Жмите "Подключиться" — на современном Ткаббере с обычным подключением к сети всё должно получиться.
Если "всё само" не получилось, придётся осиливать следующий раздел.
Подключение (сложно)
Может возникнуть несколько проблем с подключением. И они могут зависеть как от вашего подключения к сети, так и от версий пакетов Tcl, доступных к Ткабберу.
С сетью могут возникнуть два класса проблем:
- Проблемы с DNS при попытке получить SRV-записи для XMPP-сервера, обслуживающего домен "gmail.com".
- Проблемы с HTTP/HTTPS-прокси и "хитрой" аутентификацией на серверах Google Talk.
Первая проблема воспета в отдельной статье, и на ней мы останавливаться не будем: симптомы и решения изложены там, а вот вторая проблема заслуживает развёрнутого рассмотрения.
Серверы GTalk нарушают букву стандарта в том, что касается использования протокола SASL для аутентификации клиентов на сервере, предлагая только два механизма аутентификации: PLAIN и X-GOOGLE-TOKEN, который является проприетарным и нестандартным, и этот X-GOOGLE-TOKEN портит всю картину.
Дело в том, что хотя свежие версии пакета SASL из Tcllib, которым обычно пользуется Ткаббер для поддержки SASL, и умеют X-GOOGLE-TOKEN, этот механизм отличается от обычных (стандартных) механизмов тем, что для его работы клиенту требуется устанавливать HTTPS-соединение с сервером. При этом настройки прокси-сервера, предлагаемые Ткаббером (в окне логина) к этому соединению не относятся.
Это создаёт главную проблему:
Если вы соединяетесь с интернетом через прокси-сервер, вы не можете использовать аутентификацию при помощи X-GOOGLE-TOKEN.
Во всяком случае, это верно для всех версий Ткаббера, включая 0.10.0 и текущую "альфу".
Как (будет) объяснено здесь, защита канала при помощи TLS, если она используется, должна быть установлена раньше, чем будет произведена аутентификация (например, при помощи SASL). При этом механизмы аутентификации, предлагаемые сервером в зависимости от того, защищён канал или нет, могут различаться. Именно это делают серверы GTalk:
- Если клиент не установил защиту канала при помощи TLS, сервер предложит ровно один механизм аутентификации — X-GOOGLE-TOKEN; он является нестандартным, но обеспечиывает аутентификацию без передачи пароля по линии связи.
- Если клиент защитил канал при помощи TLS, сервер предложит два механизма: X-GOOGLE-TOKEN и (стандартный) PLAIN, который передаёт пароль в открытом виде (именно поэтому он предлагается только при наличии TLS).
Посему имеем два варианта подключения: с использованием X-GOOGLE-TOKEN и без него — с использованием PLAIN.
Нелишним будет подчеркнуть, что оба метода требуют наличия поддержки TLS/SSL в Ткаббере.
О наличии таковой поддержки можно легко узнать, посмотрев в окно логина: если там есть вкладка "SSL" (или "SSL и сжатие"), то поддержка SSL/TLS Ткабберу доступна. Если её там нет, ставьте необходимый пакет поддержки TLS.
Два метода подключения таковы:
Используем X-GOOGLE-TOKEN. Этот метод является "стандартным" для Google Talk, но он не работает через HTTP(S)-прокси. Требования к системе и настройки таковы:
Доступный Ткабберу модуль SASL из Tcllib должен иметь поддержку данного метода аутентификации. Проверить это можно, выполнив в консоли Ткаббера команду
package require SASL::XGoogleToken
Если она выполнилась успешно, вернув версию пакета (например, "1.0.1"), поддержка X-GOOGLE-TOKEN Ткабберу доступна, иначе — читайте про второй вариант или обновляйте Tcllib.
- На странице "Аутентификация" окна логина включите флажки "Использовать SASL для аутентификации".
- Если у вас Ткаббер версии 0.10.1 и выше, убедитесь, что включён флажок "Разрешить механизм SASL X-GOOGLE-TOKEN" на той же странице.
Не используем X-GOOGLE-TOKEN, но подключаемся через STARTTLS или SSL. Этот метод несколько менее стандартен с точки зрения Google Talk, зато работает через любые прокси. Требования к системе и настройки таковы:
- Нужно запретить использование X-GOOGLE-TOKEN:
- Если у вас Ткаббер версии ниже 0.10.1, и у вас нет на странице "Аутентификация" окна логина флажка "Разрешить механизм SASL X-GOOGLE-TOKEN", то вам нужно отключить флажок "Использовать SASL для аутентификации". (При этом аутентификация через SASL отключается полностью, но соединению с Google Talk это не помешает.)
- Если у вас Ткаббер версии 0.10.1 и выше, просто отключите флажок "Разрешить механизм SASL X-GOOGLE-TOKEN" на странице "Аутентификация" окна логина.
- Нужно включить использование TLS. Для этого переключатель на странице "SSL" (или "SSL и сжатие") должен находиться либо в положении "Шифрование (STARTTLS)" либо — "Шифрование (старый SSL)".
- Нужно разрешить использовать передачу пароля в виде открытого текста при аутентификации, включив флажок "Разрешить механизмы аутентификации, использующие открытый текст" на странице "Аутентификация" окна логина. (Пароль это не скомпрометирует, т.к. на момент его передачи канал связи будет защищён с помощью TLS.)
- Нужно запретить использование X-GOOGLE-TOKEN:
Небольшая подсказка: приняв указанный вами ресурс, сервер Google Talk добавит к нему случайным образом сгенерированную галиматью. Чтобы этого не происходило, отключите использование SASL для аутентификации, отключив флажок "Использовать SASL для аутентификации" на странице "Аутентификация" окна логина, а так же переставьте переключатель на странице "SSL" ("SSL и сжатие") в позицию "Шифрование (старый SSL)". При этом отключается механизм "resource binding" и сервер примет тот ресурс, который вы указали, без изменений.
Отдельное спасибо Teo за разъяснения.
Подключение через прокси (вернисаж)
Подключение к Google Talk (старый вариант заметки)
Сюита для бубна и трёх напильников
Некоторые настройки при подключении к gtalk зависят от версии Ткаббера и от версии пакетов dns и SASL (они входят в tcllib), доступных Ткабберу.
Вот эти настройки:
Защита канала/аутентификация
Аутентификация в gtalk возможна только при помощи протокола SASL, non-SASL аутентификация не поддерживается.
Gtalk реализует собственный механизм аутентификации для протокола SASL: "X-GOOGLE-TOKEN". Он является "защищённым", и на открытом канале (до установления слоя TLS) gtalk предлагает только этот механизм. После того, как канал защищён при помощи TLS (если стороны согласились использовать TLS), gtalk также предлагает использовать второй метод — "PLAIN".
Это означает, что для успешной аутентификации на GTalk вам требуется включённая опция "Использовать SASL для аутентификации", а также минимум одно из двух:
- Если доступный Ткабберу пакет SASL поддерживает механизм "X-GOOGLE-TOKEN", то Вы можете не использовать STARTTLS и не включать опцию "Разрешить механизмы аутентификации, использующие открытый текст" (то есть механизм SASL "PLAIN");
- В противном случае вам понадобится включить опцию "Шифрование (STARTTLS)" и опцию "Разрешить механизмы аутентификации, использующие открытый текст".
SASL в Ткаббере поддерживается при помощи пакета SASL из библиотеки tcllib. Поддержка указанного механизма появилась в tcllib в апреле 2006 года; стабильная версия tcllib с этой фичей — 1.9, версия SASL из неё — 1.1.0.
Текущий официальный старкит/старпак Ткаббера 0.9.9 содержит tcllib версии 1.7 и SASL версии 1.0.0, то есть поддержки "X-GOOGLE-TOKEN" там нет. Сделать: Выяснить и дописать про версию 0.10.x
Проверить доступную Ткабберу версию SASL можно, набрав в его консоли:
package versions SASL
Также для подключения к GTalk требуется наличие пакета tls. При отсутствии этого пакета, в окошке логина отсутствует закладка SSL. Проверить доступную Ткабберу версию tls можно, набрав в его консоли:
package version tls
Выяснение имени хоста по имени сервера
Имя хоста (компьютера), к которому должен присоединиться XMPP-клиент, в общем случае
не обязано совпадать с именем XMPP-сервера. Например, если Вася имеет аккаунт на
сервере lamerz.net
(и имеет JID вроде vasya@lamerz.net
), то имя реального сервера,
обслуживающего Васю, не обязано быть "lamerz.net".
Для выяснения имени хоста по имени сервера существует стандартный механизм SRV DNS записей.
Сделать: Бла-бла-бла...
Про поддержку SRV записей читайте здесь.
Если такой поддержки у пакета dns, доступной Вашей версии Ткаббера, нет, то Вам придётся прописать имя хоста "talk.google.com" в настройке "Хост", которая разрешается включением флажка "Явно указать сервер и порт для соединения". Номер порта должен быть 5222.
Текущие официальные старкиты/старпаки 0.9.9 содержат пакет dns версии 1.2.0, поэтому поддержки SRV DNS записей там нет.