Rocket.chat и “отклоненные учетные данные”

Вопрос или проблема

У меня возникла проблема с входом в мобильное приложение Rocket.Chat. Моя конфигурация включает IIS на Windows Server, который работает как обратный прокси для Rocket.Chat, который запущен в Docker на Linux-экземпляре, размещенном на Hyper-V.

Моя конфигурация:

  • Windows Server с включенным IIS и URL Rewrite
  • Hyper-V, на котором размещен Linux-экземпляр, работающий с Docker и Rocket.Chat на порту 3000
  • IIS настроен на пересылку соединений с https://example.com на Rocket.Chat.
  • SSL сгенерирован Let’s Encrypt и добавлен в привязку IIS

Веб-клиент работает прекрасно, и соединения WebSocket функционируют корректно. Однако мобильное приложение Rocket.Chat выдает ошибку с сообщением “учетные данные отклонены” при попытке входа. Я проверил, что учетные данные правильные.

Вот мой текущий web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>    
                <rule name="RedirectHTTPtoHTTPS" enabled="true" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="^OFF$" />
                        <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent" />
                </rule>
                <rule name="ReverseProxyToRocketChat" stopProcessing="true">
                    <match url=".*" />
                    <action type="Rewrite" url="http://10.10.0.8:3000/{R:0}" />
                </rule>                
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Что я пробовал:

  • WebSocket работают нормально как в браузере, так и в тестах.
  • Я подтвердил, что IIS правильно пересылает запросы на Rocket.Chat через обратный прокси.
  • Проверил, что учетные данные мобильного приложения работают нормально при входе через веб-клиент.

Мои вопросы:

  • Кто-то еще сталкивался с проблемой “учетные данные отклонены” в мобильном приложении Rocket.Chat при использовании IIS в качестве обратного прокси?
  • Может ли что-то в web.config или настройках IIS мешать аутентификации мобильного приложения?
  • Есть ли дополнительные настройки IIS или Rocket.Chat, которые необходимо проверить для входа в мобильное приложение?

Ответ или решение

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

Общая информация о проблеме

У вас настроена система, где IIS на Windows Server выполняет проксирование запросов к Rocket.Chat, который работает в Docker на Linux. Если веб-клиент работает правильно, но мобильное приложение не позволяет войти, это может указывать на несколько факторов, связанных с конфигурацией.

Возможные причины проблемы

  1. HTTP/HTTPS проблемы: Mobile-приложения зачастую более чувствительны к тому, как настроены SSL и заголовки. Даже если веб-приложение работает, мобильное приложение может не правильно обрабатывать перенаправления или заголовки, если они не настроены должным образом. Убедитесь, что всё работает через HTTPS, и что ваше приложение может видеть корректный SSL-сертификат.

  2. Заголовки переписки: Некоторые мобильные приложения могут требовать наличия определенных заголовков HTTP (таких как X-Forwarded-For, X-Forwarded-Proto и т. д.), которые помогут определить источник и протокол запросов. Вам нужно добавить эти заголовки в правило обратного прокси.

  3. Настройки Rocket.Chat: Проверьте настройки Rocket.Chat. Иногда необходимо убедиться, что доменное имя, используемое для обращения к серверу, правильно указано в настройках Rocket.Chat, иначе это может привести к ошибкам аутентификации.

Рекомендации по исправлению проблемы

  1. Обновите ваш web.config для включения заголовков. Попробуйте обновить ваше правило обратного прокси следующим образом:

    <rule name="ReverseProxyToRocketChat" stopProcessing="true">
        <match url=".*" />
        <action type="Rewrite" url="http://10.10.0.8:3000/{R:0}" />
        <serverVariables>
            <set name="HTTP_X_FORWARDED_FOR" value="{REMOTE_ADDR}" />
            <set name="HTTP_X_FORWARDED_PROTO" value="https" />
        </serverVariables>
    </rule>
  2. Проверьте настройки Rocket.Chat. Убедитесь, что URL-адрес вашего сервера настроен правильно, например, в админской панели Rocket.Chat в разделе „General“ -> „Site URL“ укажите https://example.com.

  3. Проверка доступности WebSocket: Не забудьте также убедиться, что WebSocket соединения работают через конечную точку вашего обратного прокси. Проверяйте настройки и обновления в конфигурациях Rocket.Chat, чтобы убедиться, что выставлены необходимые порты для WebSocket.

  4. Ошибки и логи: Изучите логи IIS, а также логи Rocket.Chat. Это может дать больше информации о том, происходит ли какое-то отклонение в процессе аутентификации и что именно вызывает ошибку.

Заключение

Если после выполнения вышеперечисленных рекомендаций ваша проблема не будет решена, возможно, стоит обратиться за помощью в сообщество Rocket.Chat или в службу поддержки, так как у них может быть дополнительная информация о проблемах, связанных с мобильным приложением и обратными прокси.

Оцените материал
Добавить комментарий

Капча загружается...