icCube - Как сделать аутентификацию для icCube, используя веб-сервер Apache
В настоящее время я нахожусь в процессе написания веб-приложения для доступа к отчетам из нашей системы ICCube. Страница приложения размещается на сервере, отличном от IcCube-сервера. Сервер в настоящее время является локальным сервером Apache (xampp), использующим обычную аутентификацию для аутентификации пользователей, прежде чем они смогут получить доступ к моим htdocs. Я бы хотел, чтобы мой Apache выполнял аутентификацию, в то время как внутренняя авторизация icCube управляет доступом к отчетам, при этом требуется только один вход в систему.
Мое приложение основано на демонстрационной версии для веб-отчетов, предоставленной IcCube; поэтому он использует явную аутентификацию JavaScript (он получает демонстрационные пользовательские данные через ic3.getDemoDataSourceSettings()).
После попытки проработать документацию IcCube по этому вопросу, я так же запутался, как и раньше. На соответствующей странице конфигурации Apache перечислены возможные конфигурации для Apache и icCube, но я не понимаю, какие из них следует использовать (преимущества и недостатки), и могут ли они все работать с настройкой нашего сервера.
- Обзор конфигурации Apache: если я установлю эти параметры прокси в конфигурации моего сервера, что именно будет перенаправлено в IcCube?
- Фильтр сервлета проверки подлинности 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>
Надеюсь, это поможет.