SAML/SSO mit 2FA (Privacy Idea) - auf 2FA begrenzen

Halllo zusammen,

ich habe es mit der Unterstützung von ein paar Tutorials hier es geschafft, SAML+SSO inklusive 2FA durch Privacy Idea hin zu bekommen.
Dabei übernimmt privacyidea nur den 2ten Part der 2FA.
Damit ein Backup-Server aus dem Internet erreichbar ist, bin folgendes Tutorial (Scenario 2) durchgegangen.
Reconfigure UCS Single Sign On (tolles Tutorial).

Hat alles geklappt und die SAML URL ist erreichbar + 2FA läuft hinter unserem haproxy (pfsense).
Jetzt habe ich bemerkt, dass es beim Login noch den Button gibt “Ohne Single-Sign-On anmelden”.
Das klappt auch - jedoch muss ich dann den 2fa nicht eingeben, und das möchte ich vermeiden.

Dies würde ich gerne für nur diese FQDN umsetzten.
Sodass nur der Exposed Host eine 2FA durchführt.
Ich habe schon versucht dies über die pfsense mit regeln umzusetzten, aber das hat nicht gut geklappt. Ich konnte mich dann auch unter der SAML url nicht mehr anmelden, nachdem ich die /univention/login/ url umgebogen habe im haproxy auf /univention/saml.

  1. Frage: Gibt es eine Möglichkeit dies umzusetzen?
  2. Frage: wenn 1. nicht geht, wie könnte ich generell eine 2fa erzwingen?

ps: Leider konnte ich nach einiger Recherche nichts finden… oder ich sehe einfach den Wald vor lauter Bäumen nicht mehr.

Beste Grüße
Ralph

Hallo Ralph,

schön, dass es mit der 2FA-Einrichtung & SSO so gut geklappt hat!
Der technische Hintergrund der 2FA-Abfrage basiert im Hintergrund auf einem SAML-Filter, d.h. ohne SSO kommt auch keine 2FA-Abfrage.

Der Weg zur Lösung besteht also im Deaktivieren der Nicht-SSO-Anmeldung.

Spontan fallen mir drei Wege ein:

  • in der pfsense nur Zugriffe über ucs-sso.* zulassen
  • den zugriff auf das interne Netz nur bei valider SAML-Session erlauben, z.B. über mellon-Auth 1
  • in der custom.css 2 den Button für den lokalen Login ausblenden:
/* (div) Wrapper around login dialog */
#umcLoginWrapper {
}

/* (h1) Login page title */
h1 {
	visibility: hidden !important;
}

Hallo Herr Friedrich,

danke für die schnelle Antwort :slight_smile:

in der pfsense habe ich nur Zugriff von außen auf portal.testdomain.com erlaubt.
Bei dem Aufruf der URL komme ich dann direkt auf die SAML Anmeldung.

im File /usr/share/simplesamlphp/modules/univentiontheme/themes/univention/core/loginuserpass.php habe ich nun folgende Zeile auskommentiert.

		<div id="umcLoginLinks"></div> 

Nun ist der Link für “Anmeldung ohne SAML” verschwunden. (ich muss halt beim nächsten Update daran denken)

Über die custom.css hat es leider nicht geklappt.
Wenn ich die custom.css angepasst habe, hat sich das auch auf die SAML page ausgewirkt.

Leider ist aber die url “portal.testdomain.com/univention/login” ebenfalls erreichbar. Unter dieser URL kann ich mich ohne SAML anmelden und das würde ich gerne vermeiden :slight_smile:
Ungern würde ich den Controller so im Netz belassen.
Wenn ich die URL “portal.testdomain.com/univention/login” über die pfsense sperre, lädt sich auch die saml site nicht mehr.

Gibt es hier evtl noch eine andere Möglichkeit?

ps: mit melon hab ich bisher noch keine Erfahrung. Ich werde es am WE mal versuchen auf einem apache2+ubuntu zu testen, bevor ich es auf unserem Server teste.

Beste Grüße
Ralph

Hallo Ralph,

Danke fürs schnelle Ausprobieren & die Experimentierfreude.

Für das Ausblenden des Links habe ich noch eine UCR-Variable gefunden, die ist dann auch updatesicher:

umc/login/links/login_without_sso/enabled
 If a variable in the format 'umc/login/links/.*/enabled' is deactivated, then the given link is no longer shown on the login page. E.g. 'umc/login/links/how_do_i_login/enabled=false'.

Daraus folgt ucr set umc/login/links/login_without_sso/enabled=false zum Deaktivieren des Links.

/univention/login ist dann natürlich immer noch erreichbar. Ich frage dazu nochmal intern nach.

Hallo Ralph,

Ich habe mich nochmal umgehört: es gibt keine Möglichkeit, die lokalen Logins zu unterbinden, da diese auch für die Kommunikation zwischen den Systemen notwendig sind. Das würde dann z.B. die Replikation beeinträchtigen.

Als Workaround bleibt also nur das Ausblenden des Nicht-SSO-links.

Tut mir leid

Hallo Olilver,

danke fürs Umhören :slight_smile:
ich hatte sowas schon vermutet…
Ebenfalls hatte ich noch ne Idee:
einen anderen Apache Server der per iframe die site einbindet… somit müsste ich den server nicht direkt ins netz stellen, sondern könnte ihn über das iframe mittels der internen auflösung einbinden.
Leider scheitere ich gerade daran.
Gibt es eine Möglichkeit die Startsite per iframe einzubinden?

Schöne Grüße
Ralph

Hallo an euch beide,

ich verfolge das Thema mit großem Interesse. Das mit dem iFrame ist so 'ne Sache, dass normalerweise im Header mitgegeben wird, ob man die Seite in einem iFrame laden darf oder eben nicht.

Was mich jedoch etwas besorgt stimmt ist, dass PrivacyIDEA ist im Software-Katalog als depreciated gekennzeichnet bzw nicht mehr mit Updates versorgt wird…

lg
Rei

Hallo @ToeiRei :slight_smile:

danke für den Tipp mit dem Header bei iFrame.
Gibt’s da evtl. einen Tipp von Univention, wie man das einbauen könnte? (die Frage geht eher an Univention, falls noch jemand mitliest)

Das wegen der PrivacyIDEA App habe ich gesehen, man kann das aber auch so wie ich mit der " privacyIDEA SAML" App lösen. Sofern ich das richtig verstanden habe bekommt nur die direkte App in Univention kein Update mehr. Eine eigene PrivacyIDEA Instanz lässt sich schnell aufbauen. Ich hab es auf einem Ubuntu aufgesetzt. Wenn Du da Tutorials brauchst, kann ich mal rumkramen, ob ich da was finde. Allerdings sollte es genug dazu im Netz geben. Evtl auch auktueller :slight_smile:

LG
Ralph

Sagt dir

Header set X-Frame-Options ALLOW-FROM http://foo.bar early
Header unset X-Frame-Options

etwas? Ansonsten mal das und die Content Security Policy anschauen.

Mastodon