Как я могу защитить Solr 5.3.1 только страницы администрирования

Я новичок в Solr, и я изучал это в течение последних дней и половины и, наконец, поворачивался сюда.

У меня запущен и запущен сервер Solr, и мой администратор сети настроил правило в брандмауэре, чтобы мы могли получить к нему доступ для запросов из моего приложения JavaScript. Это работает. Проблема в том, что страницы администрирования Solr полностью открыты для всего мира, и я пробовал все, как описано в разных сообщениях, за исключением метода ZooKeeper, который я действительно не хочу пытаться. ZooKeeper и SolrCloud.

Ссылка: http://muddyazian.blogspot.com/2013/11/how-to-require-password-authentication.html и некоторые другие

Что я сделал, это изменить jetty.xml в /opt/solr/server/etc и добавил это

<Call name="addBean">
  <Arg>
    <New class="org.eclipse.jetty.security.HashLoginService">
      <Set name="name">Solr Admin Access</Set>
      <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
      <Set name="refreshInterval">0</Set>
    </New>
  </Arg>
</Call>

Затем я добавил в web.xml в /opt/solr/server/solr-webapp/webapp/WEB-INF конфигурацию ниже

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Solr Admin Access</realm-name>

  </login-config>

то я создал файл realm.properties hashed пароль в соответствии с этим сообщением Пароль администратора /SOLR Admin Panel

Solr теперь безопасен, но все защищено паролем, я хочу, чтобы мои запросы были открыты, а остальные - защищены. Я попытался добавить разные шаблоны url, такие как /admin/ *,/mycollection/dataimport/* и т.д., Но ни один из них не влияет на то, что запрос также защищен. Ссылка https://gist.github.com/jstrassburg/9777027

Ответ 1

Следуя рекомендациям Исключить JSP из соображений безопасности web.xml, вы можете сохранить свою конфигурацию как есть, но выставлять конечные точки, которые вы хотите публиковать.

Итак, вы можете добавить <security-constraint> как это в свой web.xml, но не укажете <auth-constraint> для сопоставленного <url-pattern>. Это сделает его открытым для публики. В дополнение к основному auth для остальной части вашего экземпляра Solr, вы можете затем поэтапно открывать ядра или обработчики, которые должны быть общедоступными.

<security-constraint>
  <web-resource-collection>
    <web-resource-name>mycollection</web-resource-name>
    <url-pattern>/mycollection/*</url-pattern>
  </web-resource-collection>
</security-constraint>

Опасность этого заключается в том, что вам нужно будет добавить все, что должно быть общедоступным как собственный шаблон URL. Но это также может быть плюсом, поскольку у вас есть возможность сделать мелкозернистый контроль доступа для коллекций - например. один пользователь на коллекцию.