Menu

Zugriffssteuerung für Webapps per Single Sign On

Konfiguration einer Single-Sign-On-Umgebung für eine Webapp - hier Alterra PIM/MDM

Aufgabenstellung: Benutzer, die mit einer Webanwendung wie Alterra MDM/PIM arbeiten, sollen der Webanwendung über ihr bereits vollzogenes Windows/Linux/Android/Apple Login bekannt sein und mit dem entsprechenden Benutzer-Account in der Webapp arbeiten können.

Passwörter sollen dabei nicht über das Netz übertragen werden, sondern die Vertrauensstellung per Anfrage beim Kerberos-Server (unter Windows: Active Directory Server) geklärt werden.

Vorteile:

Sicherheit: Passwörter können nicht von Dritten abgegriffen werden.

Verwaltung: Systemadministratoren müssen Zugriffsberechtigungen nur einmal zentral verwalten und können diese auch zentral wieder entziehen.

Beteiligte Komponenten:

Clients: Windows PC, Mac, Linux PC, Android

Windows Domain-Contoller (alternativ Kerberos Server unter Linux)

Webanwendung - hier das webbasierte Alterra PIM auf Apache Webserver.

 

Schaubild: Single-Sign-On - die Vertrauensstellung wird über den Kerberos-Server (hier Active Directory Server) sichergestellt.

Szenario: Windows-PC - Active Directory Server - Webserver (Linux Apache)

 A: Client-Rechner (PC, Smartphone, Tablet) mit Browser (Firefox, Chrome/Chromium oder Internet Explorer)


B: 

DC: MS-Active Directory (=Kerberos)

KDC: MIT-Kerberos-Server

C: Apache Webserver (mit mod auth_kerb) und  Samba-Server und Kerberos-Client:

Konfiguration Kerberos Client (Webserver)


/etc/krb5.keytab

[libdefaults]
    default_realm = SEPIA.DE
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
    fcc-mit-ticketflags = true
    default_keytab_name = FILE:/etc/krb5.keytab 

[realms]
   SEPIA.DE = {
          kdc = dc.sepia.de
          default_domain = sepia.de
          ktpasswd_server = dc.sepia.de
     }
 
[domain_realm]
     .sepia.de = SEPIA.DE

Konfiguration SAMBA (auf Linux Webserver):

 

Konfiguration SAMBA (zur Aufnahme des Servers in eine Windows Domain)
Dies ist wichig, weil nur ein  Server, der in der Windows Domäne registriert ist, als vertrauenswürdig eingestuft wird:

netbios name = www
realm = SEPIA.DE
security = ADS
encrypt passwords = yes
password server = pdc.sepia.de
workgroup = INTERNAL

Der Windows Domäne beitreten:


www:~# net ads join -U Administrator
Using short domain name -- INTTEST
Joined 'WWW' to realm 'sepia.de'

KEYTAB-Datei erzeugen:  Entweder auf dem Windows Active Directory Server per:

ktpass -out apache2.keytab \
   -mapuser www\
   -princ HTTP/www.sepia.de@SEPIA.DE \
   -pass login123 \
   -ptype KRB5_NT_PRINCIPAL \
   -crypto RC4-HMAC-NT \

 

Unter Linux ein Ticket ziehen:

kinit -p www@sepia.de




Oder von Linux (Webserver) aus mit den Samba-Tools:

www:~# net ads keytab add HTTP -U Administrator
Processing principals to add...
Enter administrator's password:

Nun befinden sich in /etc/krb5.keytab die "service principals" für HTTP/www.sepia.de.

Auf dem Webserver checken, ob die Keys vorhanden sind mit ktutil:

www:~# ktutil
ktutil:  rkt /etc/krb5.keytab
ktutil:  l
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
1   19               HTTP/www.sepia.de@SEPIA.DE
2   19               HTTP/www.sepia.de@SEPIA.DE
3   19               HTTP/www.sepia.de@SEPIA.DE
4   19                        HTTP/www@SEPIA.DE
5   19                        HTTP/www@SEPIA.DE

Berechtigungen für apache für die Keytab-Datei:

www:~# chmod 740 /etc/krb5.keytab
www:~# chgrp www-data /etc/krb5.keytab

Konfiguration Apache Webserver

Per mod-auth-gssapi

# Debian:
sudo apt-get install libapache2-mod-auth-gssapi
# on RHEL-based distrubtions:
sudo dnf install mod_auth_gssapi
sudo a2enmod auth_kerb

<LOCATION /abgesichert-gsapi >
AuthType GSSAPI
AuthName "Kerberos GSAPI Login"
GssapiCredStore keytab:/etc/keytabs/pim.keytab
GssapiLocalName On
#Require valid-user
require user user1 user2
</LOCATION>

 

Alternativ mod-auth-kerb (etwas älter):

# on Debian-based distributions:
sudo apt-get install libapache2-mod-auth-kerb
# on RHEL-based distrubtions:
sudo dnf install mod_auth_kerb
sudo a2enmod auth_kerb


<Location /abgesichert>
  AuthType Kerberos
  AuthName "Kerberos Login"
  KrbMethodNegotiate On
  KrbMethodK5Passwd Off
  KrbAuthRealms SEPIA.DE
  Krb5KeyTab /etc/krb5.keytab
#  require valid-user

   require user user1 user2
</Location>

 

Konfiguration Browser

Single Sign On im Browser aktivieren

 

Beim Windows-PC im Firefox wird diese Einstellung vorgenommen:
URL:   about:config:  network.negotiate-auth.trusted-uris   = .sepia.de  (Beispiel)

ODER:

Click auf Menü
Auswahl Einstellungen
Privatsphäre und Sicherheit > Logins and Passwörter
Aktivieren: “Erlauben Windows Single Sign-on ”

 

Debugging

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
# LogLevel trace8 ssl:warn LogLevel info auth_kerb:debug ssl:warn

 

Ergebnis

Nachdem beim Zugriff auf eine URL per Browser - analog zum den hier gelisteten Einstellungen wäre dies  http::/www.sepia.de/abgesichert/ -  die Kerberos-Authentisierung (siehe Schaubild oben) erfolgreich gelaufen ist, teilt der Webbrowser dem Webserver den Anmeldenamen des entfernten Benutzers mit. Dieser ist dann dem Webserver über die Umgebungsvariable REMOTE_USER bekannt. Dass der Benutzer die Webseite nutzen darf, ist sichergestellt, da der Domain Controller über die Information verfügt, dass der Benutzer über das Login auf seinem Rechner zuvor registriert worden war.

Optional: Benutzergruppen per LDAP

Möchte man Benutzer zentral in Gruppen zusammenfassen, um die Berechtigungen der Zielsysteme genau abbilden zu können, so ist auf dem Webserver ein LDAP-Client (Apache mod_ldap) mit Zugriff auf einen LDAP-Server einzurichten, auf dem die Benutzergruppen verwaltet werden. Unter Windows beinhaltet der Active Directory Server einen LDAP-Service, sodass kein separater Server aufgesetzt werden muss.

Konfiguration des Apache Webservers als LDAP-Client

Apache Module installieren: ldap, authnz_ldap

In der Apache Konfigurationsdatei:

//Authentisierung über LDAP aktivieren:

AuthzLDAPAuthoritative on

//URL zum LDAP-Server angeben:
AuthLDAPURL "ldap://dc.sepia.de/dc=sepia,dc=de?userPrincipalName"

//Bindung für den Benutzer (pim) setzen, der Zugriff auf den LDAP-Server hat:
AuthLDAPBindDN "cn=pim,cn=Users,dc=sepia,dc=de"

//Passwort für den User (pim) zur Anmeldung beim LDAP-Server
AuthLDAPBindPassword  *******

//Mitteilen, dass ein Benutzer in  LDAP den Gruppen AlterraPIMAccess und Users angehören muss, damit er das System verwenden darf:

Require ldap-group cn=AlterraPIMAccess,cn=Users,dc=sepia,dc=de

Über LDAP lassen sich natürlich noch andere viel komplexere Einstellungen abbilden, die mit dieser Grundfunktion verwendet werden können.

Spezielle Einstellungen für Alterra MDM/PIM 

Konfigurationseinstellung des SSO Moduls über die zenrtale Konfigurationsdatei:
$_config[ "module" ][ "single_sign_on" ] = array( "remote_user" => getenv("REMOTE_USER"));
 
Login als Administrator oder anderer Benutzer ist optional möglich über:
[pimurl]/web/manage.php;

Über diese URL gelangen Sie nach erfolgreicher Kerberos-Authentisierung  zum Alterra Login-Dialog, der beim Single Sign On nicht benötigt wird, da man in der Regel als der Benutzer automatisch angemeldet wird, der auf dem Client System angemeldet ist.

 

Kontakt


Sepia GmbH & Co. KG

Ernst-Gnoss-Strasse 22
D-40219 Düsseldorf 

Kundenhotline: +49 211 51 419 75

Verwaltung: +49 211 74 958 712 0

Email: info@sepia.de

Beratung oder Online Demo erwünscht?
Hier anfordern.

Mobile Apps

  

Mit Alterra Produktdaten für mobile Anwendungen optimieren. Weiter ...