====== MFA mit fudiscr und wahlweise Password/SPNEGO als erstem Faktor ======
([[de:shibidp:plugin-fudiscr|zurück zur fudiscr-Seite]])
Die folgende Anleitung setzt voraus, dass Kerberos-Login bzw. SPNEGO gemäß der [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631622/SPNEGOAuthnConfiguration|Anleitung im Shibboleth-Wiki]] als Extended Flow des Password Login Flows eingerichtet wurde.
==== SPNEGO als eigenständiger Flow ====
Damit authn/SPNEGO als unabhängiger, eigenständiger Flow angesprochen werden kann, muss zunächst die Referenz als Extended Flow in der authn/Password-Konfiguration entfernt oder zumindest auskommentiert werden:
In ''./conf/authn/authn-event-flow.xml'' müssen folgende Einträge ergänzt werden:
Weiterhin muss der SPNEGO-Button im Login-Template überarbeitet werden (mensch beachte die eventId). Gemeinsam mit dem Username/Password-Button sieht dies dann folgendermaßen aus:
authn/SPNEGO erwartet als eigenständiger Flow, dass Autologin aktiviert ist (um es dann zu deaktivieren). Dies lässt sich über folgenden Parameter bewerkstelligen:
idp.authn.SPNEGO.enforceRun = true
\\
==== Spezifische fudiscr-MFA-Konfiguration ====
Zunächst in die entsprechende Transition Map definieren:
Die Liste der supported Principals um den entsprechenden Kerberos-Eintrag erweitern:
idp.authn.MFA.supportedPrincipals = \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocol, \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport, \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Password, \
saml2/urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos, \
saml2/urn:de:zedat:fudis:SAML:2.0:ac:classes:CR
Falls für die weitere Verarbeitung im IdP die User Id ohne Realm benötigt wird (entsprechende Transformationen in der c14n-Config vorausgesetzt), gilt es zu verhindern, dass der MFA-Flow mit zwei unterschiedlichen Usernames bzw. "Username Principals" arbeitet - einmal mit, einmal ohne Realm. Daher muss fudiscr daran gehindert werden, die User Id aus der Authentisierung mit dem zweiten Faktor weiter zu verarbeiten:
fudiscr.result_with_username_principal=shibboleth.Conditions.FALSE
Sowie in ''./conf/c14n/subject-c14n.xml'' in der Liste der ''PostLoginSubjectCanonicalizationFlows'' nach '''' die Referenz '''' einfügen:
Analog zu ''idp.authn.Password.reuseCondition'' sollte auch die Condition für ''idp.authn.SPNEGO.reuseCondition'' gesetzt werden, also z.B.
idp.authn.MFA.reuseCondition=shibboleth.Conditions.FALSE
idp.authn.Password.reuseCondition=shibboleth.Conditions.TRUE
idp.authn.SPNEGO.reuseCondition=shibboleth.Conditions.TRUE
idp.authn.fudiscr.reuseCondition=shibboleth.Conditions.FALSE
{{tag>2FA MFA Zwei-Faktor-Authentifizierung Mehr-Faktor-Authentifizierung Mehrfaktorauthentifizierung idp4 spnego}}