接續 Solr 教學 (1) – 安裝篇,安裝完 solr 後預設的管理頁面 http://domain:8080/solr 是不用帳號密碼就可以登入的,這樣太危險了 … tomcat 可以設定只允許特定 IP 存取頁面或目錄,這邊先記錄使用帳號密碼登入的方法!

小蛙從參考資料1中開始學著設定,這部分還蠻容易的,存取 http://domain:8080/solr 頁面的時候,會跳出視窗要求做登入的動作,成功登入後才可以進行管理的動作,這裡發現另一個問題,如果是要做 select 的時候,用類似 HttpGet, curl, wget 這類的方法時要怎麼登入呢?參考資料1的後半段小蛙實作不出來,如果有高手有成功試出來的話,可以留言給小蛙唷!
這篇要記錄的東西可以達到兩件事

  1. 瀏覽 http://domain:8080/solr 管理頁面時,需要做登入動作
  2. 可透過 http://username:[email protected]:port/solr/example/select?q=*%3A*&wt=json&indent=true 的方式進行資料查詢

直接開始:

  1. 小蛙的環境是 Ubuntu 13.04 64bit + Solr 4.5.0 + tomcat 7,首先新增一個使用者角色
    # vim /var/lib/tomcat7/conf/tomcat-users.xml
    <role rolename="solr_admin"/>
    <user username="your_username"
          password="your_password"
          roles="solr_admin"/>
  2. 編輯網頁目錄下的 web.xml,在 <web-app> </web-app> 之間加入 <security-constraint> 設定
    # vim /var/lib/tomcat7/webapps/solr/WEB-INF/web.xml
      <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>solr_admin</role-name>
        </auth-constraint>
      </security-constraint>
      <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>solr</realm-name>
      </login-config>
  3. 重新啟動 tomcat,連到 http://domain:8080/solr 就可以看到要求登入畫面
    # service tomcat7 restart
  4. 從 solr 管理頁面得到的 select 網址,在前面加上帳號:密碼也可以正常取得資料,如下。
    http://username:[email protected]:port/solr/example/select?q=*%3A*&wt=json&indent=true

下一篇 Solr 教學 (3) – 以 Remote Address Filter 限制存取 將記錄怎麼使用 tomcat 7 內建的 Remote Address Filter 以 IP 的方式設定白名單或黑名單。

參考資料:

  1. Securing Solr on Tomcat @ Telligent Community 6
    http://telligent.com/support/telligent_evolution_platform/community/w/community6/19955.securing-solr-on-tomcat.aspx
  2. Tomcat URL Authentication e.g: https://user:[email protected] @ stackoverflow
    http://stackoverflow.com/questions/2837401/tomcat-url-authentication-e-g-https-userpasswordapp-wibble-com

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *