Click here to load reader

Single Sign-On für APEX Anwendungen mit Kerberos

Embed Size (px)

Citation preview

  • 1. business by integration Seite 1 von 11 SINGLE SIGN-ON FR APEX ANWENDUNGEN MIT KERBEROS Autor: Niels de Bruijn Version: 4.1.1 Datum: 30.03.2015

2. business by integration Seite 2 von 11 1 HINTERGRUND Die Standard URL von Webapplikationen die mit Oracle Application Express (APEX) erstellt wurden ist /apex. Die Authentifizierung erfolgt dann ber eine HTML Seite mittels Benutzernamen und Passwort. Wenn der Endanwender jedoch bereits an einer Windows Domne angemeldet ist, stellt sich die Frage ob in dieser Situation eine doppelte Anmeldung vermieden werden kann (Stichwort Single Sign-On). Ist man nicht an der Windows Domne angemeldet, sollte eine Windows Dialogbox erscheinen, damit eine Anmeldung mit Benutzernamen und Passwort weiterhin mglich ist. In diesem Dokument wird beschrieben, wie die automatische Anmeldung an der APEX Anwendung ber Kerberos gegenber einer Windows Domne realisiert werden kann. Es wird beispielhaft gezeigt wie die APEX URL geschtzt werden kann. Abbildung 1: Empfohlene APEX Architektur mit Apache und Oracle REST Data Services. Anmerkungen: - Das Single Sign-On Verfahren bietet eine erhhte IT-Sicherheit, da die Kontodaten nicht an den Server bertragen werden. - Obwohl in diesem Dokument APEX Anwendungen geschtzt werden, knnen Sie ber diese Art beliebige Anwendungen schtzen, solange die Anfragen ber Apache laufen. In dieser Konfiguration wird eine Active Directory Domne (Windows Server 2003/2008/2012) und Client-PCs mit Windows Betriebssystem vorausgesetzt. Angenommen wird, das alle Benutzer sich 3. business by integration Seite 3 von 11 gegen Active Directory authentifizieren mssen. Alle Komponenten in Abbildung 1 befinden sich im Intranet. Die Installation von der Oracle Datenbank, Oracle Application Express, Tomcat und Oracle REST Data Services ist nicht Bestandteil dieses Dokuments. Hinweise: - Das Betriebssystem, wo Apache installiert wurde, spielt keine Rolle. Auch muss der Apache Server selbst nicht Bestandteil der Windows Domne sein. - Wenn Sie Windows Server 2012R2 einsetzen, wird der Einsatz von IIS in Verbindung mit Web Application Proxy statt Apache empfohlen. - Wenn Sie Windows Server 2008 einsetzen, dann stellt IIS in Verbindung mit dem kostenpflichtigen Tool ISAPI Rewrite 3 eine geprfte Alternative da. - Verwenden Sie einen Firewall auf dem Linux Server, damit die Kommunikation mit dem Server nur ber den Port 443 (HTTPS) gestattet ist. - Sie knnen auch Samba 4 als Domain Controller verwenden. - Wenn Sie nicht Apache einsetzen mchten, dann kann Tomcat auch fr die Kerberos Authentifizierung konfiguriert werden. Nehmen Sie dazu Kontakt mit uns auf. - Single Sign-On funktioniert fr Desktops/Laptops ohne Anmeldung im Browser, weil der Rechner bereits an der Windows Domne angemeldet ist. Fr Smartphones oder Tablets ist eine Anmeldung mit dem Windows Konto notwendig. - Es wird hier von einer Standardinstallation von der Software ausgegangen. Fr eine erhhte IT- Sicherheit sind z.B. alle unverwendeten Apache Module zu deaktivieren. 2 KONFIGURATION DOMAIN CONTROLLER 2.1 DNS EINTRAG FR APACHE Um die automatische Anmeldung ber Kerberos nutzen zu knnen, muss die Webseite ber einen DNS Namen im Browser geffnet werden. Dazu wird ein DNS Eintrag im DNS Server bentigt. In diesem Dokument gehen wir vom DNS Namen apex.mt-ag.com aus. Achten Sie darauf, dass der FQDN als (zustzlicher) Host im DNS Server eingetragen wurde und nicht als Alias. Mit dem Befehl nslookup apex.mt-ag.com knnen Sie dies verifizieren. Ist der Hostname als Alias eingetragen, dann erfolgt die SSO-Authentifizierung nicht ber Kerberos, sondern wird der Endanwender aufgefordert sich mittels Basic Authentication zu authentifizieren. 2.2 KERBEROS SERVICE BENUTZER IN ACTIVE DIRECTORY ERSTELLEN Fr die Kerberos Authentifizierung wird ein aktives Computer-Konto, z.B. APEX_SSO, in Active Directory bentigt. 4. business by integration Seite 4 von 11 Diesem wird anschlieend mit folgendem Befehl der ServicePrincipalName fr den HTTP Dienst hinzugefgt und eine Keytab-Datei erstellt: ktpass -princ HTTP/[email protected] -mapuser "CN=APEX_SSO,CN=Computers,DC=mt-ag,DC=com" -crypto All -ptype KRB5_NT_SRV_HST -pass -out c:http_apex.mt-ag.com.keytab Hinweise: - Obwohl es auch mglich ist ein Benutzerkonto zu verwenden, wird ein Computerkonto empfohlen, weil hiermit keine Anmeldung am Client mglich ist. - Die Domne ist in diesem Beispiel MT-AG.COM und die Webadresse ist https://apex.mt- ag.com. Die Domne muss in Grobuchstaben geschrieben werden und entspricht den Wert der auf einem Client PC unter Eigenschaften des PCs angezeigt wird. - Der Befehl ktpass ist auf einem AD Domain Controller als Administrator auszufhren. - Das Passwort fr das Konto wird erst mit ktpass gesetzt und kann daher beliebig gewhlt werden. - Die Angabe apex.mt-ag.com bezieht sich auf die Webadresse, die im Browser durch einen Endanwender eingegeben wird. - Obwohl die APEX Umgebung in diesem Beispiel ausschlielich ber HTTPS zu erreichen sein wird, ist die Angabe HTTP hinter princ korrekt. - Der Name fr die Keytab-Datei kann beliebig gewhlt werden. - Windows 2003 Server kennt die Angabe crypto all nicht, daher kann stattdessen -crypto RC4-HMAC-NT angegeben werden. 5. business by integration Seite 5 von 11 Die unter c: erstellte Datei bentigt der Apache und wird auf einem Linux Rechner unter beispielsweise/opt/httpkeytab kopiert. Dank dieser Datei ist es Apache erlaubt zu verifizieren ob jemand bereits an der Windows Domne angemeldet ist. 3 KONFIGURATION VON TOMCAT V6, V7 ODER V8 Stellen Sie nach der Installation sicher dass in der Datei server.xml die folgenden Direktiven hinzugefgt sind: Hinweis: Wenn Sie diese Einstellung nicht vornehmen, kann es zu einer Page not found-Meldung im Browser kommen oder Sie bekommen Probleme bei der Darstellung von z.B. Umlauten, wenn Sonderzeichen in einer URL verwendet werden. 4 KONFIGURATION VON ORACLE REST DATA SERVICES V2 ODER V3 6. business by integration Seite 6 von 11 Auch sind die Werte fr den Connection Pool im Standard zu gering (defaults.xml): thin 1800 50 1000 50 10 50 Hinweis: Welcher Wert Sie initial verwenden, hngt von Ihrer Umgebung ab, aber stellen Sie zumindest sicher dass InitialLimit = MinLimit = MaxLimit. 5 KONFIGURATION APACHE SERVER 5.1 NTP INSTALLIEREN Es ist zwingend erforderlich die Zeit auf allen beteiligten Servern innerhalb einer Windows Domne synchron zu halten, da ansonsten die automatische Anmeldung nicht funktionieren wird. Auf einem Linux-Server wird dies ber den NTP Dienst gewhrleistet. Dieser Dienst wird ber das integrierte Installations-Repository installiert: yum install ntp Anschlieend wird der NTP Dmon fr den automatischen Start aktiviert: chkconfig ntpd on Stellen Sie sicher dass die Zeit auf dem Domain Controller gleich luft, wie auf dem Server wo Apache installiert ist. 5.2 APACHE MIT MOD_AUTH_KERB INSTALLIEREN Fr den Einsatz von Kerberos als Authentifizierungsprotokoll bentigt der Apache das Modul mod_auth_kerb. Dieses Modul wird zusammen mit Apache ber das integrierte Installationsrepository installiert: yum install mod_auth_kerb Mit dem hinzufgen des HTTPD Dienstes in den Systemstart ist die Installation von Apache inkl. mod_auth_kerb abgeschlossen: chkconfig httpd on Dieses Dokument beschreibt nicht wie man Apache so konfiguriert, das der Zugriff auf https://apex.mt-ag.com (Port 443 mit einem gltigen SSL-Zertifikat) erfolgen kann. Hierzu gibt es bereits viele Beispiele im Internet zu finden. 7. business by integration Seite 7 von 11 5.3 ANPASSUNG DER KERBEROS SYSTEMKONFIGURATION Die Datei /etc/krb5.conf kann wie folgt konfiguriert werden: [libdefaults] default_realm = MT-AG.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] MT-AG.COM = { kdc = mt-ag.com admin_server = MT-AG.COM default_domain = MT-AG.COM } [domain_realm] .mt-ag.com = MT-AG.COM mt-ag.com = MT-AG.COM Hinweise: - Hinter kdc knnen statt der Domne auch mehrere Hosts, getrennt durch ein Leerzeichen, eingetragen werden. - Ein Neustart von Apache ist nicht notwendig, damit die nderungen in dieser Datei wirksam werden (die Datei wird pro Authentifizierungsvorgang erneut ausgelesen). - Eine gute Beschreibung von dieser Datei finden Sie hier: http://web.mit.edu/Kerberos/www/krb5- 1.12/doc/admin/conf_files/krb5_conf.html 5.4 ANPASSUNG DER APACHE V2.X KONFIGURATION Die Konfiguration des Apache vornehmen, damit die APEX URL geschtzt ist: /etc/httpd/conf/httpd.conf: LoadModule auth_kerb_module /etc/httpd/modules/mod_auth_kerb.so LoadModule proxy_module /etc/httpd/modules/mod_proxy.so LoadModule proxy_http_module /etc/httpd/modules/mod_proxy_http.so LoadModule headers_module /etc/httpd/modules/mod_headers.so # Die zulssige Gre vom HTTP request Header ist im Standard mit 8190 zu restriktiv # eingestellt. Dies muss erhht werden, damit es nicht zu einem Browserfehler Bad Request # kommen kann. LimitRequestFieldSize 65536 # Schuetzt alle APEX Anfragen AuthType Kerberos AuthName "Kerberos Login" KrbAuthRealms MT-AG.COM KrbServiceName HTTP/[email protected] Krb5KeyTab /opt/httpkeytab/http_apex.mt-ag.com.keytab 8. business by integration Seite 8 von 11 require valid-user # Wenn man eine Proxy-Direktive verwendet, dann wird REMOTE_USER nicht weitergeleitet, daher wird explizit SSO_USER als Variable gesetzt. RewriteEngine On # Wenn die erste RewriteCondition aktiviert wird, dann wird die Domne in der HTTP Header Variable weitergeleitet. # RewriteCond %{LA-U:REMOTE_USER} (.+)$ RewriteCond %{REMOTE_USER} (.+)@.* RewriteRule . - [E=RU:%1] RequestHeader set SSO_USER %{RU}e # Weiterleiten von Anfragen an Oracle REST Data Services # Die Weiterleitung kann entweder mit HTTP(S) oder mittels AJP stattfinden ProxyPass /apex http://localhost:8080/apex ProxyPassReverse /apex http://localhost:8080/apex # Statische Dateien von APEX Alias /i/ "/srv/www/htdocs/images/" Nach dieser nderung ist ein Neustart von Apache vorzunehmen. Hinweis: - Im Verzeichnis /srv/www/htdocs/images sind die statischen Dateien von APEX zu hinterlegen. Diese befinden sich in der APEX Software unter /images. 6 AUTHENTIFIZIERUNG IN DER APEX ANWENDUNG Die APEX Anwendung sollte keine Anmeldeseite an den Browser zurckgeben, sondern die Identitt annehmen die in der HTTP Header Variable SSO_USER ber Apache an APEX weitergereicht wird. Dafr muss ein neues Authentifizierungsschema fr die APEX Anwendung erstellt werden: SSO_USER 9. business by integration Seite 9 von 11 Wenn SSO_USER leer ist, dann wird der Endanwender auf eine statische HTML Seite (index.html) auf Apache weitergeleitet. Diese Seite zeigt dem Endanwender beispielsweise den Text Sie sind nicht an der Domne angemeldet. an. Hinweis: in diesem Dokument wurde APEX 4.2.3 (oder hher) eingesetzt. Wenn man eine Version < 4.2.3 einsetzt, dann wird Schema Type= HTTP Header Variable nicht vorhanden sein. Die Single Sign- On Fhigkeit lsst sich in diesem Fall dennoch mit einer eigenen PL/SQL Funktion erreichen. Verwenden Sie in der Funktion den Aufruf owa_util.get_cgi_env('SSO_USER'); um den Wert von SSO_USER auszulesen. 7 KONFIGURATION CLIENT PC Wenn sich die Webseite im Internet Explorer nicht in der Zone lokales Intranet befindet oder der Benutzer nicht an der Windows Domne angemeldet ist, dann wird der Benutzer in einer Dialogbox aufgefordert sich mit dem Benutzernamen und Passwort an der Windows Domne anzumelden. Erst wenn die Webseite in der Zone "lokales Intranet" aufgenommen wurde und der Benutzer an der Windows Domne angemeldet ist, erfolgt die Anmeldung ber Kerberos automatisch. Im Firefox kann diese Einstellung vorgenommen werden, indem als URL about:config aufgerufen wird. Die Domne mt-ag.com ist im Atrribut network.negotiate-auth.trusted-uris einzutragen. 10. business by integration Seite 10 von 11 Wenn alles richtig konfiguriert wurde, dann kann die APEX Anwendung mit einem Browser wie IE 10 oder Firefox 24 aufgerufen werden und die Anmeldung bei APEX erfolgt dann automatisch. Wichtig: Stellen Sie sicher, dass die Anfragen an den Hostnamen, hier apex.mt-ag.com, nicht an den Proxy-Server weitergeleitet werden, ansonsten geht das Kerberos Ticket verloren. Falls Sie einen Proxy-Server im Browser konfiguriert haben, dann sollte daher der Hostname apex.mt-ag.com als Ausnahme hinterlegt werden, ansonsten erhalten Sie die Fehlermeldung page not found. 8 WAS PASSIERT DA GERADE? ber die Logdateien von Apache kann man gut mitverfolgen was passiert. Dazu muss die Datei /etc/httpd/conf/httpd.conf eine Zeile LogLevel debug enthalten und es ist ein Neustart von Apache erforderlich. Die Logdateien heien access_log und error_log. Darber hinaus ist es mglich mit dem Befehl klist auf einem Client PC herauszufinden, welche Kerberos Tickets aktuell fr den angemeldeten Benutzer existieren. Wenn alles korrekt konfiguriert wurde, dann sollte hierber auch ein Ticket fr apex.mt-ag.com angezeigt werden. brigens findet die Kommunikation zwischen Apache Server und Windows Domain Controller nur beim erstmaligen Aufruf von /apex statt. Nach erfolgreicher Authentifizierung gibt der Browser beim nchsten Aufruf ein gltiges Kerberos Ticket an Apache mit und wird die Anfrage direkt an APEX weitergeleitet. Noch Fragen offen? Auf https://apex.mt-ag.com finden Sie uns. 9 WEITERE INFORMATIONEN ZUM THEMA SINGLE SIGN-ON ber Kerberos / mod_auth_kerb: http://blog.hallowelt.biz/wp-content/uploads/SSO_mit_mod_auth_kerb_v3.pdf Single Sign-On konfiguriert in Tomcat statt Apache: https://community.oracle.com/message/12748733 11. business by integration Seite 11 von 11 Wenn Sie wissen mchten welche Mglichkeiten es sonst noch fr die Realisierung von Single Sign-On gibt, dann schauen Sie sich bitte den folgenden Artikel an: http://wphilltech.com/options-for-windows-native-authentication-with-apex Und jetzt zur Sicherheit noch die kleinen Buchstaben, zusammen Haftungshinweise genannt: In keinem Fall haftet die MT AG fr irgendwelche direkten, indirekten, speziellen oder sonstigen Folgeschden, die sich aus der Nutzung dieses Dokument ergeben. Ausgeschlossen ist auch jegliche Haftung fr entgangenen Gewinn, Betriebsunterbrechung, Verlust von Programmen oder sonstigen Daten.