2016-05-31 44 views
1

documentation here描述瞭如何使用IP過濾器來保護Form Runner。我跟着這些指示如下:如何使用IP過濾器保護Orbeon Form Runner?

  1. 看跌urlrewrite-3.2.0.jar在Orbeon窗體WEB-INF/lib文件夾
  2. 配置Orbeon過濾器窗體WEB-INF/web.xml中
<filter> 
     <filter-name>UrlRewriteFilter</filter-name> 
     <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>UrlRewriteFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
     <dispatcher>FORWARD</dispatcher> 
    </filter-mapping> 
  • urlrewrite.xml配置在Orbeon WEB-INF文件夾
  • <?xml version="1.0" encoding="utf-8"?> 
        <urlrewrite> 
         <rule> 
          <condition type="remote-addr" operator="notequal">0:0:0:0:0:0:0:1%0</condition> 
          <condition type="remote-addr" operator="notequal">127.0.0.1</condition> 
          <set type="status">403</set> 
          <to type="temporary-redirect" last="true">/unauthorized</to> 
         </rule> 
        </urlrewrite> 
    

    如果我訪問這個URL從本地主機它工作正常預期:

    http://myserver.mydomain.com/orbeon/fr/

    如果我從其他地方訪問它,我不能夠訪問表亞軍,這是很好的,但重定向不不能正常工作。我最終被重定向到以下網址不包括應用程序上下文,所以我得到一個404

    http://myserver.mydomain.com/unauthorized

    我試過temporary-redirect的值更改爲/%{context-path}/unauthorized但後來我重定向到。我也嘗試%{context-path}/unauthorized,但後來我得到了「太多重定向」錯誤。

    任何想法如何解決這個問題?

    +0

    我想象,把實際情況下沒有一個選擇?例如。如果你在'/ forms'上部署了Web應用程序,是否有'/ forms/unauthorized'? – avernet

    +0

    此外,'%{context {path}/unauthorized'看起來是正確的方法,但是規則會再次捕獲此錯誤,因此會導致「重定向過多」錯誤。其實,似乎你不應該在這種情況下做一個重定向,只是返回一個403.這是否適合你? – avernet

    +0

    @avernet將實際環境放在那裏並不理想,因爲它在所有環境中都不相同。這將是可行的。但它並沒有真正的幫助。正如你所說,規則再次捕捉到了這一點。我嘗試了包括另一個條件' /未授權'(和變體:'未授權','表單/未授權','/表單/未授權'),再次抓住它,但沒有任何效果。我能夠得到它只是返回一個403,但需要添加' null'。我建議更新文檔。見下面的答案。 – awilkinson

    回答

    1

    我能夠讓IP過濾器只是返回一個403而不重定向URL。就我而言,這是更可取的。

    <?xml version="1.0" encoding="utf-8"?> 
    <urlrewrite> 
        <rule> 
         <condition type="remote-addr" operator="notequal">0:0:0:0:0:0:0:1%0</condition> 
         <condition type="remote-addr" operator="notequal">127.0.0.1</condition> 
         <set type="status" last="true">403</set> 
         <to>null</to> 
        </rule> 
    </urlrewrite> 
    

    我發現to>null</to>的例子在這裏的列表上:http://tuckey.org/urlrewrite/manual/4.0/guide.html