icCube - Как сделать аутентификацию для icCube, используя веб-сервер Apache

В настоящее время я нахожусь в процессе написания веб-приложения для доступа к отчетам из нашей системы ICCube. Страница приложения размещается на сервере, отличном от IcCube-сервера. Сервер в настоящее время является локальным сервером Apache (xampp), использующим обычную аутентификацию для аутентификации пользователей, прежде чем они смогут получить доступ к моим htdocs. Я бы хотел, чтобы мой Apache выполнял аутентификацию, в то время как внутренняя авторизация icCube управляет доступом к отчетам, при этом требуется только один вход в систему.

Мое приложение основано на демонстрационной версии для веб-отчетов, предоставленной IcCube; поэтому он использует явную аутентификацию JavaScript (он получает демонстрационные пользовательские данные через ic3.getDemoDataSourceSettings()).

После попытки проработать документацию IcCube по этому вопросу, я так же запутался, как и раньше. На соответствующей странице конфигурации Apache перечислены возможные конфигурации для Apache и icCube, но я не понимаю, какие из них следует использовать (преимущества и недостатки), и могут ли они все работать с настройкой нашего сервера.

  1. Обзор конфигурации Apache: если я установлю эти параметры прокси в конфигурации моего сервера, что именно будет перенаправлено в IcCube?
  2. Фильтр сервлета проверки подлинности icCube: относится ли этот конфиг к IcCube или Apache? Что именно делают эти фильтры?

Будем весьма благодарны за любую помощь в решении проблемы или указатели на более подробную документацию.

1 ответ

Решение

Ваше веб-приложение (т.е. Apache) должно будет переадресовывать звонки, связанные с доступом к отчетам в icCube. Например, вы можете настроить Apache для пересылки всего, что связано с icCube, следующим образом:

<VirtualHost *:80>
ServerName your.domain.com

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass        /icCube http://your-ip:8383/icCube
ProxyPassReverse /icCube http://your-ip:8383/icCube

</VirtualHost>

Затем связь между Apache и icCube защищена с помощью фильтров сервлетов, которые являются частью конфигурации icCube (icCube.xml):

IcCubeApacheAuthenticationServletFilter
IcCubeApacheGwtAuthenticationServletFilter

Первый фильтр может использоваться для всех служб, кроме GWT; для GWT вы можете использовать второй. Вот выдержка из возможного icCube.xml:

<xmlaComponentConfiguration>
    <!--<tcpPortNumber>8484</tcpPortNumber>-->
    <httpUrl>/icCube/xmla</httpUrl>
    <enableHttpCompression>true</enableHttpCompression>
    <filter>XMLA (Apache) Authentication</filter>
</xmlaComponentConfiguration>

<gwtServiceComponentConfiguration>
    <enableFileDownloadCompression>true</enableFileDownloadCompression>
    <filter>GWT (Apache) Authentication</filter>
</gwtServiceComponentConfiguration>

<reportingComponentConfiguration>
    <url>/icCube/doc/*</url>
    <enableCompression>true</enableCompression>
    <filter>Report Authentication</filter>
</reportingComponentConfiguration>

<gviComponentConfiguration>
    <url>/icCube/gvi</url>
    <enableCompression>true</enableCompression>
    <filter>GVI Authentication</filter>
    <filter>GVI Authentication (logout)</filter>
</gviComponentConfiguration>

<filterConfiguration>
    <filter>
        <filter-name>XMLA (Apache) Authentication</filter-name>
        <filter-class>crazydev.iccube.server.authentication.IcCubeApacheAuthenticationServletFilter</filter-class>
    </filter>
    <filter>
        <filter-name>GWT (Apache) Authentication</filter-name>
        <filter-class>crazydev.iccube.server.authentication.IcCubeApacheGwtAuthenticationServletFilter</filter-class>
    </filter>
    <filter>
        <filter-name>Report Authentication</filter-name>
        <filter-class>crazydev.iccube.server.authentication.IcCubeApacheAuthenticationServletFilter</filter-class>
    </filter>
    <filter>
        <filter-name>GVI Authentication</filter-name>
        <filter-class>crazydev.iccube.server.authentication.IcCubeApacheAuthenticationServletFilter</filter-class>
        <init-param>
            <param-name>anonymousLogon</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>GVI Authentication (logout)</filter-name>
        <filter-class>crazydev.iccube.server.authentication.IcCubeGviLogoutAuthenticationServletFilter</filter-class>
    </filter>
</filterConfiguration>

Надеюсь, это поможет.

Другие вопросы по тегам