2016-05-31 10 views
1

Die documentation here beschreibt, wie Form Runner mit einem IP-Filter gesichert wird. Ich folgte diesen Anweisungen wie folgt:Wie kann ich Orbeon Form Runner mit einem IP-Filter sichern?

  1. Put UrlRewrite-3.2.0.jar im Orbeon Forms WEB-INF/lib Ordner
  2. Konfigurieren Sie den Filter in Orbeon Forms 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> 
  1. Setzen Sie die urlrewrite.xml Konfiguration im Orbeon WEB-INF-Ordner
<?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> 

Wenn ich diese URL zugreifen localhost es gut funktioniert wie erwartet:

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

Wenn ich es von überall aus zugreifen, was ich nicht in der Lage bin Formular Runner zugreifen zu können, was gut ist, aber die Umleitung tut funktioniert nicht richtig. Ich am Ende auf die folgende URL weitergeleitet zu werden, die nicht den Anwendungskontext enthalten, so dass ich

ein 404.

http://myserver.mydomain.com/unauthorized

Ich habe versucht, den Wert für temporary-redirect zu /%{context-path}/unauthorized ändern, aber dann werde ich zu umgeleitet. Ich habe auch versucht %{context-path}/unauthorized, aber dann bekomme ich einen "zu viele Weiterleitungen" Fehler.

Irgendeine Idee, wie ich das lösen kann?

+0

Und ich stelle mir vor, dass die tatsächliche Kontext setzen für Sie gibt es keine Option? Z.B. Wenn Sie die Web-App auf '/ forms' installiert haben, haben Sie'/forms/unauthorised'? – avernet

+0

Auch "% {context-path}/unauthorised" sieht wie die richtige Vorgehensweise aus, aber die Regel fängt das wieder auf, daher der Fehler "zu viele Umleitungen". Eigentlich scheint es, dass Sie in diesem Fall keine Umleitung machen sollten, sondern einfach eine 403 zurückgeben. Würde das für Sie funktionieren? – avernet

+0

@avernet Den tatsächlichen Kontext dort zu setzen, war nicht ideal, da es nicht in allen Umgebungen gleich ist. Es wäre praktikabel gewesen. Es hat aber nicht wirklich geholfen. Wie Sie gesagt haben, fängt die Regel das wieder ein. Ich habe versucht, eine andere Bedingung "/unauthorisierte' (und Varianten: 'unauthorized',' forms/unauthorised', '/ forms/unauthorised) einzufügen, so dass die Regel würde Fange es nicht wieder, aber es hat keine Wirkung. Ich konnte es bekommen, um nur eine 403 zurückzugeben, aber musste ' null' hinzufügen. Ich empfehle, die Dokumentation zu aktualisieren. Siehe Antwort unten. – awilkinson

Antwort

1

Ich konnte den IP-Filter erhalten, um einfach einen 403 zurückzugeben, ohne die URL umzuleiten. In meinem Fall ist dies wünschenswerter.

<?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> 

fand ich to>null</to> auf einer Liste von Beispielen hier: http://tuckey.org/urlrewrite/manual/4.0/guide.html