Single Sign-On für APEX Anwendungen mit Kerberos
Upcoming SlideShare
Loading in...5
×
 

Single Sign-On für APEX Anwendungen mit Kerberos

on

  • 397 views

 

Statistics

Views

Total Views
397
Views on SlideShare
395
Embed Views
2

Actions

Likes
1
Downloads
3
Comments
0

1 Embed 2

http://www.slideee.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Single Sign-On für APEX Anwendungen mit Kerberos Single Sign-On für APEX Anwendungen mit Kerberos Document Transcript

    • business by integration Seite 1 von 11 SINGLE SIGN-ON FÜR APEX ANWENDUNGEN MIT KERBEROS Autor: Niels de Bruijn Version: 3.02 Datum: 11.07.2014
    • business by integration Seite 2 von 11 1 HINTERGRUND Die Standard URL von Webapplikationen die mit Oracle Application Express (APEX) erstellt wurden ist <hostname>/apex. Die Authentifizierung erfolgt dann über eine HTML Seite mittels Benutzernamen und Passwort. Wenn der Endanwender jedoch bereits an einer Windows Domäne 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 Domäne angemeldet, sollte eine Windows Dialogbox erscheinen, damit eine Anmeldung mit Benutzernamen und Passwort weiterhin möglich ist. In diesem Dokument wird beschrieben, wie die automatische Anmeldung an der APEX Anwendung über Kerberos gegenüber einer Windows Domäne realisiert werden kann. Es wird beispielhaft gezeigt wie die APEX URL geschützt werden kann. Abbildung 1: Eine APEX Architektur mit Apache und Oracle REST Data Services. In dieser Konfiguration wird eine Active Directory Domäne (Windows Server 2003/2008) und Client- PCs mit Windows Betriebssystem vorausgesetzt. Angenommen wird das alle Benutzer sich gegen Active Directory authentifizieren müssen. Alle Komponenten in Abbildung 1 befinden sich im Intranet. Die Installation von der Oracle Datenbank, APEX 4.2.x und Oracle REST Data Services 2.0.x ist nicht Bestandteil dieses Dokuments.
    • business by integration Seite 3 von 11 Hinweise: - Das Betriebssystem wo Apache installiert wurde spielt keine Rolle. Auch muss der Apache Server selbst nicht Bestandteil der Windows Domäne sein. Wenn Sie jedoch Windows Server 2012 einsetzen, können Sie auch Web Application Proxy statt Apache einsetzen. - Verwenden Sie einen Firewall auf dem Linux Server, damit die Kommunikation mit dem Server nur über den Port 443 (HTTPS) gestattet ist. - Wenn Sie wissen möchten welche Möglichkeiten es sonst noch für die Realisierung von Single Sign-On existieren, dann schauen Sie sich den folgenden Artikel an: http://wphilltech.com/options-for-windows-native-authentication-with-apex 2 KONFIGURATION DOMAIN CONTROLLER 2.1 DNS EINTRAG FÜR APACHE Um die automatische Anmeldung über Kerberos nutzen zu können muss die Webseite über einen DNS Namen im Browser geöffnet werden. Dazu wird ein DNS Eintrag im DNS Server benötigt. In diesem Dokument gehen wir vom DNS Namen apex.mt-ag.com aus. Achten Sie darauf dass der FQDN als (zusätzlicher) Host im DNS Server eingetragen wurde und nicht als Alias. Mit dem Befehl nslookup apex.mt-ag.com können Sie dies verifizieren. Ist der Hostname als Alias eingetragen, dann erfolgt die SSO-Authentifizierung nicht über Kerberos, sondern wird der Endanwender aufgefordert mittels Basic Authentication sich zu authentifizieren. 2.2 KERBEROS SERVICE BENUTZER IN ACTIVE DIRECTORY ERSTELLEN Für die Kerberos Authentifizierung wird ein aktives Computer-Konto, z.B. APEX_SSO, in Active Directory benötigt. Diesem wird anschließend mit folgendem Befehl der ServicePrincipalName für den HTTP Dienst hinzugefügt und eine Keytab-Datei erstellt: ktpass -princ HTTP/apex.mt-ag.com@MT-AG.COM -mapuser
    • business by integration Seite 4 von 11 "CN=APEX_SSO,CN=Computers,DC=mt-ag,DC=com" -crypto All -ptype KRB5_NT_SRV_HST -pass <Passwort> -out c:http_apex.mt-ag.com.keytab Hinweise: - Die Domäne ist in diesem Beispiel MT-AG.COM und die Webadresse ist https://apex.mt- ag.com. - Der Befehl ktpass ist auf einem AD Domain Controller als Administrator auszuführen. - Das Passwort für das Konto wird erst mit ktpass gesetzt und kann daher beliebig gewählt 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 ausschließlich über HTTPS zu erreichen sein wird, ist die Angabe HTTP hinter –princ korrekt. - Der Name für die Keytab-Datei kann beliebig gewählt werden. - Windows 2003 Server kennt die Angabe –crypto all nicht, daher kann stattdessen - crypto RC4-HMAC-NT angegeben werden.
    • business by integration Seite 5 von 11 Die unter c: erstellte Datei benötigt 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 Domäne angemeldet ist. 3 KONFIGURATION TOMCAT 7 Stellen Sie nach der Installation sicher dass in der Datei server.xml die folgende Direktiven hinzugefügt sind: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxHeaderCount="-1" maxHttpHeaderSize="65536" URIEncoding="UTF-8" … /> 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 APACHE SERVER 4.1 NTP INSTALLIEREN Es ist zwingend erforderlich die Zeit auf allen beteiligten Servern innerhalb einer Windows Domäne synchron zu halten, da ansonsten die automatische Anmeldung nicht funktionieren wird. Auf einem Linux-Server wird dies über den NTP Dienst gewährleistet. Dieser Dienst wird über das integrierte Installations-Repository installiert: yum install ntp Anschließend wird der NTP Dämon für den automatischen Start aktiviert:
    • business by integration Seite 6 von 11 chkconfig ntpd on Stellen Sie sicher dass die Zeit auf dem Domain Controller gleich läuft wie auf dem Server wo Apache installiert ist. 4.2 APACHE MIT MOD_AUTH_KERB INSTALLIEREN Für den Einsatz von LDAP als Authentifizierungsprotokoll benötigt 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 hinzufügen 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 gültigen SSL-Zertifikat) erfolgen kann. Hierzu gibt es bereits viele Beispiele im Internet zu finden. 4.3 ANPASSUNG DER KERBEROS SYSTEMKONFIGURATION Die Datei /etc/krb5.conf kann wie folgt konfiguriert werden: [logging] Default = FILE:/var/log/krb5libs.log Kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MT-AG.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true default_tkt_enctypes = rc4-hmac default_tgs_enctypes = rc4-hmac [realms] MT-AG.COM = { Kdc = mt-ag.com admin_server = MT-AG.COM default_domain = MT-AG.COM }
    • business by integration Seite 7 von 11 [domain_realm] .mt-ag.com = MT-AG.COM mt-ag.com = MT-AG.COM Hinweise: - Hinter Kdc können statt der Domäne 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). 4.4 ANPASSUNG DER APACHE KONFIGURATION Die Konfiguration des Apache vornehmen, damit die APEX URL geschützt ist: /etc/httpd/conf.d/httpd.conf: LoadModule auth_kerb_module /usr/lib64/apache2/mod_auth_kerb.so LoadModule proxy_module /usr/lib64/apache2/mod_proxy.so LoadModule proxy_http_module /usr/lib64/apache2/mod_proxy_http.so LoadModule headers_module /usr/lib64/apache2/mod_headers.so # Schuetzt alle APEX Anfragen <Location /apex> AuthType Kerberos AuthName "Kerberos Login" KrbAuthRealms MT-AG.COM KrbServiceName HTTP/apex.mt-ag.com@MT-AG.COM Krb5KeyTab /opt/httpkeytab/http_apex.mt-ag.com.keytab require valid-user </Location> # 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 # Notwendig damit der Benutzername als HTTP Header Variable weitergegeben wird RequestHeader set REMOTE-USER %{REMOTE_USER}s # Statische Dateien von APEX Alias /i/ "/srv/www/htdocs/images/" Nach dieser Änderung ist einen Neustart von Apache vorzunehmen. Hinweis:
    • business by integration Seite 8 von 11 - Im Verzeichnis /srv/www/htdocs/images sind die statischen Dateien von APEX zu hinterlegen. Diese befinden sich in der APEX Software unter /images. 5 AUTHENTIFIZIERUNG IN DER APEX ANWENDUNG Die APEX Anwendung sollte keine Anmeldeseite an den Browser zurückgeben, sondern die Identität annehmen die in der HTTP Header Variable „remote-user“ über Apache an APEX weitergegeben wird. Dafür muss ein neues Authentifizierungsschema für die APEX Anwendung erstellt werden:
    • business by integration Seite 9 von 11 In diesem Beispiel wird automatisch die Domäne vom Benutzernamen entfernt, damit beim Aufruf von :APP_USER in der Anwendung nur den Benutzernamen zurück gegeben wird. Wenn Sie mehrere Windows Domäne haben, kann dies unerwünscht sein. Entfernen Sie dann „set_user“ im Attribut „Post-Authentication Procedure Name“.
    • business by integration Seite 10 von 11 Hinweis: in diesem Dokument wurde APEX 4.2.4 eingesetzt. Wenn man eine ältere Version von APEX einsetzt und „Schema Type= HTTP Header Variable“ nicht vorhanden ist, dann lässt sich die Single Sign-On Fähigkeit mit einer eigenen PL/SQL Funktion dennoch erreichen. Nehmen Sie dazu Kontakt mit uns auf. 6 KONFIGURATION CLIENT PC Wenn sich die Webseite im Internet Explorer nicht in der Zone „lokales Intranet“ befindet oder der Benutzer nicht an der Windows Domäne angemeldet ist, dann wird der Benutzer in einer Dialogbox aufgefordert sich mit dem Benutzernamen und Passwort an der Windows Domäne anzumelden. Erst wenn die Webseite in der Zone "lokales Intranet" aufgenommen wurde und der Benutzer an der Windows Domäne angemeldet ist, erfolgt die Anmeldung über Kerberos automatisch. Im Firefox kann diese Einstellung vorgenommen werden indem als URL about:config aufgerufen wird. Die Domäne mt-ag.com ist im Atrribut network.negotiate-auth.trusted-uris einzutragen.
    • business by integration Seite 11 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 den Hostnamen apex.mt- ag.com als Ausnahme hinterlegt werden, ansonsten erhalten Sie die Fehlermeldung „page not found“. 7 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 ist einen Neustart von Apache erforderlich. Die Logdateien heißen access_log und error_log. Darüber hinaus ist es möglich mit dem Befehl klist auf einem Client PC herauszufinden welche Kerberos Tickets aktuell für den angemeldeten Benutzer existieren. Wenn alles korrekt konfiguriert wurde, dann sollte hierüber auch ein Ticket für 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 nächsten Aufruf ein gültiges Kerberos Ticket an Apache mit und wird die Anfrage direkt an APEX weitergeleitet. Weitere hilfreiche Infos: http://blog.hallowelt.biz/wp-content/uploads/SSO_mit_mod_auth_kerb_v3.pdf Immer noch Probleme? Auf https://apex.mt-ag.com finden Sie uns.  Und jetzt zur Sicherheit noch die kleinen Buchstaben, zusammen „Haftungshinweise“ genannt: In keinem Fall haftet die MT AG für irgendwelche direkten, indirekten, speziellen oder sonstigen Folgeschäden, die sich aus der Nutzung dieses Dokument ergeben. Ausgeschlossen ist auch jegliche Haftung für entgangenen Gewinn, Betriebsunterbrechung, Verlust von Programmen oder sonstigen Daten.