Ошибка mod_auth_openidc 400 Неверный запрос - слишком много файлов cookie (?) - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть контейнер, отображаемый Nginx на example.org / portia / test , структурированный следующим образом:

  • Контейнер предоставляет только порт 9001, где экземпляр Apache в качестве прокси-сервера прослушивает.
  • Сервер Django работает на 8000, ему отправляется весь трафик для / api и / server_capabilities.
  • Другой сервер Django работает на 9002, который обрабатывает веб-сокеты по пути / ws.

схема моей сети

Я пытаюсь добавить аутентификацию OpenIdConnect с помощью плагина mod_auth_openidc для Apache, я хочу защитить весь виртуальный хост.

Пока я попадаю на правильную страницу входа на auth-example.org, я захожу с учетными данными, и сервер аутентификации перенаправляет меня с правильным URI. Нникс отвечает мне ошибкой 400.

запрос отправлен с большим количеством файлов cookie

Сервер аутентификации используется несколькими приложениями внутри mydomain.org, поэтому я думаю, что-то не так с моим файлом конфигурации Apache.

Для ясности я не могу прикоснуться к Nginx или к серверу аутентификации.

apache_site.conf

<VirtualHost *:9001>
        ServerAdmin webmaster@localhost
        DocumentRoot /app/portiaui/dist

        ServerName www.example.org
        ServerAlias example.org

        #ProxyRequests On
        Alias /static /app/portiaui/dist

        OIDCProviderMetadataURL https://www.auth-example.org/auth/realms/master/.wel$
        OIDCRedirectURI https://example.org/portia/test/callback
        OIDCCryptoPassphrase <much secret>
        OIDCClientID portia
        OIDCClientSecret <much private>
        OIDCCookiePath example.org/portia/test/
        OIDCCookieDomain example.org


        <Location /static>
                Require all granted
        </Location>

        <Location /api> 
                Require all granted
                ProxyPass http://127.0.0.1:8000/api
                ProxyPassReverse http://127.0.0.1:8000/api
                ProxyPreserveHost On
       </Location>

       <Location /server_capabilities> 
                Require all granted
                ProxyPass http://127.0.0.1:8000/server_capabilities
                ProxyPassReverse http://127.0.0.1:8000/server_capabilities
                ProxyPreserveHost On
        </Location>

        <Location /ws> # mod_proxy_wstunnel is enabled 
               RequestHeader set Host "127.0.0.1:9002"
               ProxyPreserveHost On
               ProxyPass http://127.0.0.1:9002/ws
               ProxyPassReverse http://127.0.0.1:9002/ws
        </Location>

        <Location />
                AuthType openid-connect
                Require valid-user
        </Location>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Ответ Ханса З. предлагает мне также изменить OIDCRedirectURI в относительном пути.

Установка OIDCRedirectURI /callback решила проблему: мой экземпляр Apache не получает весь URL www.example.org/portia/test/callback, нотолько последняя часть пути.Это связано с лицевой стороной экземпляра Nginx.

0 голосов
/ 03 апреля 2019

Параметр пути к cookie в OIDCCookiePath должен содержать только фактический путь, а не хост. На самом деле я бы начал без использования OIDCCookiePath или OIDCCookieDomain.

...