Miranda NG Official Community Forum

Miranda NG русскоязычный форум => Общие разговоры о Miranda NG => Topic started by: Oneiron on 18 05 2015, 13:10:21

Title: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 18 05 2015, 13:10:21
После обновления на новую версию OpenFire (3.10) столкнулся с мелкой неприятностью: отвалился Single Sign-On.
Заставил миранду генерировать нетстат-логи, в коих обнаружил строку:

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><incorrect-encoding/></failure>

При прочих равных подключение с сервером 3.10 не выполняется.
Поскольку других клиентов с GSSAPI я не знаю, решил все-таки написать сюда.
В чейнджлоге OpenFire они пишут что исправили баг OF-736 (https://igniterealtime.org/issues/browse/OF-736) который напрямую связан как раз с SASL и неправильным формированием base64.
Может ли быть проблема в способе, которым запрос формирует миранда?
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 19 05 2015, 08:10:45
проверял gssapi на 3.10, все работало ок, как у тебя SSO заведен? Не через плагин случайно?
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 19 05 2015, 10:20:56
В том-то вся и веселуха, что через SASL-плагин под виндой все отлично работает.
А через GSSAPI с серваком на линуксе - обновляюсь и все, хана.
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 20 05 2015, 11:40:37
Есть аналогичная тема в форумах Ignite Realtime. Буду вопрошать у них.

Magic, а что у тебя за конфигурё?
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 20 05 2015, 12:10:04
Есть аналогичная тема в форумах Ignite Realtime. Буду вопрошать у них.

Magic, а что у тебя за конфигурё?
openfire на винде, SSO через керберос билеты, работает без проблем в 3.9.1 и в 3.10.0.
на линухе SSO к сожалению не поднимал :(
Title: Odp: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 01 07 2015, 11:50:05
Не нашли в чем проблема? Тоже отломалось SSO на винде, после апдейта на 3.10.2:
<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><incorrect-encoding/></failure>
Откатываешь ту же инсталляцию на 3.9.1 - все работает.
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 01 07 2015, 12:13:08
Не нашел, и не только я...
Вот тема форума уже на igniterealtime - https://community.igniterealtime.org/thread/55544
До сих пор везде 3.9.3 стоит.
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 01 07 2015, 13:05:59
нашел :)
Проблема в этом патче:
https://github.com/igniterealtime/Openfire/commit/3eadecb67daddbcaeb1dc76ec578ed0f70e96ad8
Там 2 проверки на корректность передаваемого response, но клиенты могут отдавать пустой response(что и делает миранда в первом ответе) ( The initiating entity responds to the challenge by sending a
   <response/> element qualified by the
   'urn:ietf:params:xml:ns:xmpp-sasl' namespace; this element MAY
   contain XML character data
.)
https://tools.ietf.org/html/rfc6120#section-6.4.2
Тут есть проверка на длину строки:
Quote
@@ -301,9 +305,14 @@ else if (mechanisms.contains(mechanism)) {
 
                             // evaluateResponse doesn't like null parameter
                             byte[] token = new byte[0];
-                            if (doc.getText().length() > 0) {
+                            String value = doc.getTextTrim();
+                            if (value.length() > 0) {
+                                if (!BASE64_ENCODED.matcher(value).matches()) {
+                                    authenticationFailed(session, Failure.INCORRECT_ENCODING);
+                                    return Status.failed;
+                                }
                                 // If auth request includes a value then validate it
-                                token = StringUtils.decodeBase64(doc.getText().trim());
+                                token = StringUtils.decodeBase64(value);
                                 if (token == null) {
                                     token = new byte[0];
                                 }
А тут нет:
Code: [Select]
@@ -354,6 +363,10 @@ else if (mechanisms.contains(mechanism)) {
                         if (ss != null) {
                             boolean ssComplete = ss.isComplete();
                             String response = doc.getTextTrim();
+                            if (!BASE64_ENCODED.matcher(response).matches()) {
+                                authenticationFailed(session, Failure.INCORRECT_ENCODING);
+                                return Status.failed;
+                            }
                             try {
                                 if (ssComplete) {
                                     authenticationSuccessful(session, ss.getAuthorizationID(),

Если во втором блоке написать так:
Code: [Select]
if (response.length() > 0) {
if (!BASE64_ENCODED.matcher(response).matches()) {
authenticationFailed(session, Failure.INCORRECT_ENCODING);
return Status.failed;
}
                            }
То все работает прекрасно.
К сожалению не программист, как корректно сделать им пулл реквест не знаю :(
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 01 07 2015, 13:11:18
Патченный openfire.jar от версии 3.10.2 - http://ge.tt/api/1/files/3pBmYVJ2/0/blob?download
проверьте?
закинуть в lib, рестартнуть сервис.
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 01 07 2015, 14:00:30
О, это прекрасно. Завтра проверю.
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 02 07 2015, 09:31:37
Все работает, равно как на виндах, так и на линях.
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 02 07 2015, 09:46:39
Все работает, равно как на виндах, так и на линях.
Пробую до разрабов это донести, поскольку отломалась не только миранда, Psi, JaJC тоже не работают. Другие не проверял.
На голом 3.10 работает походу только последняя версия Spark :)
Title: Odp: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 02 07 2015, 11:00:04
Да, я видел уже как резко оживилась ветка :)
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 12 08 2015, 15:48:01
https://community.igniterealtime.org/message/251139#251139
исправили вроде, ждемс 3.10.3
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 12 08 2015, 15:54:56
Прекрасно! Интересно лишь, когда они ее выпустят :)
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Oneiron on 15 12 2015, 10:46:05
Magic, у тебя 3.10.3 нормально отрабатывает? У меня вот что-то нет...
Title: Re: Сбой GSSAPI - <incorrect-encoding/>
Post by: Magic on 16 12 2015, 18:51:57
Magic, у тебя 3.10.3 нормально отрабатывает? У меня вот что-то нет...
Да, все отлично