Solr 教學 (2) – tomcat 7 以帳號密碼限制存取頁面

接續 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:password@domain:port/solr/example/select?q=*%3A*&wt=json&indent=true 的方式進行資料查詢

直接開始:

  1. 小蛙的環境是 Ubuntu 13.04 64bit + Solr 4.5.0 + tomcat 7,首先新增一個使用者角色
    1
    # vim /var/lib/tomcat7/conf/tomcat-users.xml
    1
    2
    3
    4
    <role rolename="solr_admin"/>
    <user username="your_username"
          password="your_password"
          roles="solr_admin"/>
  2. 編輯網頁目錄下的 web.xml,在 <web-app> </web-app> 之間加入 <security-constraint> 設定
    1
    # vim /var/lib/tomcat7/webapps/solr/WEB-INF/web.xml
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    <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 就可以看到要求登入畫面
    1
    # service tomcat7 restart
  4. 從 solr 管理頁面得到的 select 網址,在前面加上帳號:密碼也可以正常取得資料,如下。

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

Solr 系列文章:

參考資料

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料