APEX-AT-WORK no image

Client IP Adresse in APEX auslesen

Von Tobias Arnhold 4.09.2012
Um die Client-IP-Adresse mit Hilfe von PL/SQL auszulesen, können Sie zwei unterschiedliche Prozeduren verwenden:
select
owa_util.get_cgi_env('REMOTE_ADDR')
from dual;

select 
sys_context('userenv','ip_address')  
from dual;
Das Ganze funktioniert super solange Sie keinen vorgeschalteten Proxy Server verwenden! Aber auch dafür gibt es einen Workaround. Stellen Sie folgende Einstellung in Ihrer http.conf ein:
RewriteCond %{REMOTE_ADDR} (.*)
RewriteRule .* - [E=REMOTEA:%1]
RequestHeader set X-Oracle-Cache-User "%{REMOTEA}e"

# Außerdem müssen folgende Einstellung mit gesetzt werden:
# 1. Konfiguration der RewriteRule muss in einem VirtualHost hinterlegt sein:
<VirtualHost 192.168.0.1:80>

# 2. Rewrite muss aktiviert werden
RewriteEngine on

# 3. ModHeader muss mit geladen werden
LoadModule headers_module modules/mod_headers.so
Die Lösung wurde von Dietmar Aust im Oracle APEX Forum auch noch tief greifender beschrieben: https://forums.oracle.com/forums/thread.jspa?messageID=1262928&#1262928 
Weitere Forum Einträge zu Thema:
https://forums.oracle.com/forums/thread.jspa?threadID=926109
http://redmine.lighttpd.net/boards/2/topics/3626
Das auslesen der Info in PL/SQL sieht dann so aus:
select
owa_util.get_cgi_env('HTTP_X_ORACLE_CACHE_USER')
from dual;
Info: Es kann vorkommen das andere Einstellungen verhindern das die Variable richtig durchgeroutet wird.

Post Tags: