Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
user:hofmann_fu-berlin.de [2023/08/30 23:35] – hofmann@fu-berlin.de | user:hofmann_fu-berlin.de [2024/05/30 16:05] – [Versionen für den Shibboleth Identity Provider in der Version 4] hofmann@fu-berlin.de | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== IdP-Authn-Plugin fudiscr | + | ====== IdP-Authn-Plugin fudiscr ====== |
===== Allgemein ===== | ===== Allgemein ===== | ||
Zeile 10: | Zeile 10: | ||
Es enthält auch selbst keine speziellen Algorithmen zur Validierung von Token. | Es enthält auch selbst keine speziellen Algorithmen zur Validierung von Token. | ||
Über ein generisches ChallengeResponseClientInterface kann ein Token-System angebunden werden. | Über ein generisches ChallengeResponseClientInterface kann ein Token-System angebunden werden. | ||
- | Das Plugin enthält bereits eine Implementierung dieses Interfaces für [[https:// | + | Das Plugin enthält bereits eine Implementierung dieses Interfaces für [[https:// |
- | Zudem ist eine Mockup-Implementierung für Tests enthalten. | + | Zudem ist eine rudimentäre |
Eine externe Implementierung für Fortinet existiert auch bereits. | Eine externe Implementierung für Fortinet existiert auch bereits. | ||
- | Die bisherigen | + | Die primären |
Er ist Mitarbeiter des Rechenzentrums [[https:// | Er ist Mitarbeiter des Rechenzentrums [[https:// | ||
- | Die zukünftige Pflege des Plugins erfolgt durch die [[https:// | ||
- | Sollte dies durch die Hochschule nicht mehr sichergestellt werden können, so stellen Partnerorganisationen und -unternehmen dies sicher. | ||
- | ===== Versionen | + | Mit den Versionen 1.4.0 und 2.0.0 erfolgt eine Zusammenarbeit im Bereich [[https:// |
- | ^ Plugin-Version ^ IdP-Version | + | |
- | | 1.0.0 | min. 4.1.2 | min. 3.7 | nicht mehr verwenden | + | |
- | | 1.1.0 | min. 4.1.2 | min. 3.7 | nicht mehr verwenden | + | |
- | | 1.1.1 | min. 4.1.2 | min. 3.7 | nicht mehr verwenden | + | |
- | | 1.2.0 | min. 4.1.2 | + | |
- | | 1.3.0 | min. 4.3.0 | + | |
+ | ===== Versionen für den Shibboleth Identity Provider in der Version 4 (EOL zum 01.09.2024) ===== | ||
+ | ^ Plugin-Version ^ IdP-Version | ||
+ | | 1.0.0 | min. 4.1.2 und < 4.3.0 | N/A | min. 3.7 | nicht mehr verwenden | ||
+ | | 1.1.0 | min. 4.1.2 und < 4.3.0 | N/A | min. 3.7 | nicht mehr verwenden | ||
+ | | 1.1.1 | min. 4.1.2 und < 4.3.0 | N/A | min. 3.7 | nicht mehr verwenden | ||
+ | | 1.2.0 | min. 4.1.2 und < 4.3.0 | N/A | min. 3.7 | nicht mehr verwenden | ||
+ | | 1.3.0 | min. 4.3.0 und < 5.0.0 | N/A | min. 3.7 | nicht mehr verwenden | ||
+ | | 1.4.0 | min. 4.3.0 und < 5.0.0 | min. 2.0.0 | min. 3.9.2 | aktuell | ||
- | ===== Unterstütze Tokenverfahren aus privacyIDEA ===== | + | ===== Versionen für den Shibboleth Identity Provider in der Version 5 ===== |
- | Aktuell werden die folgenden Tokenverfahren aus privacyIDEA ([[https:// | + | ^ Plugin-Version ^ IdP-Version |
- | ^ Tokenverfahren | + | | 2.0.0 | min. 5.0.0 | min. 2.0.0 | min. 3.9.2 | aktuell |
- | | Email | mail | + | ===== Unterstütze Tokenverfahren aus eduMFA und privacyIDEA ===== |
- | | HOTP Token | hotp | + | Aktuell werden die folgenden Tokenverfahren aus eduMFA ([[https:// |
- | | Indexed Secret Token | indexed_secret | + | ^ Tokenverfahren |
- | | mOTP Token | motp | + | | Email | mail | 1.0.0 | | |
- | | Paper Token (PPR) | indexed_tan | + | | HOTP Token | hotp | 1.0.0 | | |
- | | Questionnaire Token | question | + | | Indexed Secret Token | indexed_secret |
- | | Registration | + | | mOTP Token | motp | 1.0.0 | | |
- | | SMS Token | sms | 1.0.0 | | | + | | Paper Token (PPR) | indexed_tan |
- | | TAN Token | tan | 1.0.0 | | | + | | Questionnaire Token | question |
- | | TOTP | totp | + | | Registration |
- | | WebAuthn | + | | Remote |
- | | Yubico | + | | SMS Token | sms |
- | | Yubikey | + | | Spass | simple_pass_token |
+ | | TAN Token | tan | ||
+ | | TOTP | totp | 1.0.0 | | | ||
+ | | WebAuthn | ||
+ | | Yubico | ||
+ | | Yubikey | ||
===== Installation und Konfiguration ===== | ===== Installation und Konfiguration ===== | ||
Zeile 96: | Zeile 101: | ||
Hierfür wird eine neue Datei // | Hierfür wird eine neue Datei // | ||
- | <code> | + | <file python idp-admin-policy> |
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
+ | ' | ||
+ | } | ||
+ | ] | ||
} | } | ||
- | </code> | + | </file> |
Die Policy kann unter Nutzung dieser Datei erstellt werden: | Die Policy kann unter Nutzung dieser Datei erstellt werden: | ||
Zeile 115: | Zeile 123: | ||
Hierfür wird eine neue Datei // | Hierfür wird eine neue Datei // | ||
- | <code> | + | <file python idp-application-tokentype> |
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | }, | + | ' |
- | ' | + | }, |
- | ' | + | ' |
- | ' | + | ' |
+ | ' | ||
+ | } | ||
+ | ] | ||
} | } | ||
- | </code> | + | </file> |
Die Policy kann unter Nutzung dieser Datei erstellt werden: | Die Policy kann unter Nutzung dieser Datei erstellt werden: | ||
Zeile 135: | Zeile 146: | ||
Hierfür wird eine neue Datei // | Hierfür wird eine neue Datei // | ||
- | <code> | + | <file python idp-webauthn-allowed-transports> |
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | }, | + | ' |
- | ' | + | }, |
- | ' | + | ' |
- | ], | + | ' |
- | ' | + | ], |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | }, | + | ' |
- | ' | + | }, |
+ | ' | ||
+ | } | ||
+ | ] | ||
} | } | ||
- | </code> | + | </file> |
Das Event kann unter Nutzung dieser Datei erstellt werden: | Das Event kann unter Nutzung dieser Datei erstellt werden: | ||
< | < | ||
- | pi-manage event e_import -f idp-webauthn-allowed-transports | + | pi-manage event e_import -f idp-webauthn-allowed-transports |
</ | </ | ||
Zeile 165: | Zeile 179: | ||
Damit möglichst viele WebAuthn-Token funktionieren und auch Passkey via QR-Code im Browser funktioniert, | Damit möglichst viele WebAuthn-Token funktionieren und auch Passkey via QR-Code im Browser funktioniert, | ||
- | <code> | + | <file python webauthn-enrollment> |
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | | + | }, |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
+ | } | ||
+ | ] | ||
} | } | ||
- | </code> | + | </file> |
Die Policy kann unter Nutzung der Datei (// | Die Policy kann unter Nutzung der Datei (// | ||
Zeile 216: | Zeile 232: | ||
</ | </ | ||
\\ | \\ | ||
- | === Installation der Testversion 1.3.0 === | + | === Installation der Testversion 1.4.0 === |
Mit dem folgenden Aufruf kann die aktuelle Testversion des Plugins installiert und aktiviert werden: | Mit dem folgenden Aufruf kann die aktuelle Testversion des Plugins installiert und aktiviert werden: | ||
< | < | ||
Zeile 224: | Zeile 240: | ||
Für ein Update auf die aktuelle Testversion ist folgender Aufruf zu verwenden: | Für ein Update auf die aktuelle Testversion ist folgender Aufruf zu verwenden: | ||
< | < | ||
- | %{idp.home}/ | + | %{idp.home}/ |
</ | </ | ||
Zeile 681: | Zeile 697: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | **Beispiel 5**: Wahlweise authn/ | ||
+ | |||
+ | \\ | ||
=== Reuse Condition === | === Reuse Condition === | ||
Zeile 702: | Zeile 724: | ||
<alert type=" | <alert type=" | ||
+ | <alert type=" | ||
+ | Bei der Verwendung von '' | ||
+ | <file xml> | ||
+ | <?xml version=" | ||
+ | <beans ...> | ||
+ | ... | ||
+ | < | ||
+ | Wird z.B. mit ' | ||
+ | so wird dieser beim ersten Service Provider auch abgefragt. | ||
+ | Wenn ' | ||
+ | Die Funktion ' | ||
+ | ' | ||
+ | --> | ||
+ | <bean id=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | nextFlow = " | ||
+ | |||
+ | authCtx = input.getSubcontext(" | ||
+ | mfaCtx = authCtx.getSubcontext(" | ||
+ | if (mfaCtx.isAcceptable()) { | ||
+ | nextFlow = null; | ||
+ | } | ||
+ | |||
+ | nextFlow; | ||
+ | ]]> | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Nachfolgendes Beispiel erweitert das vorherige Beispiel und erzwingt den Aufruf vom zweiten Faktor mit fudiscr, wenn dieser per [[https:// | ||
+ | <file xml> | ||
+ | <?xml version=" | ||
+ | <beans ...> | ||
+ | ... | ||
+ | < | ||
+ | (Die nachfolgende erweiterte Logik kann auch anders dargestellt werden.) | ||
+ | Wenn ' | ||
+ | und die Reuse Condition ' | ||
+ | Mit ' | ||
+ | der einen zweiten Faktor verlangt, ein Token abgefragt. Mit ' | ||
+ | gibt es für Nutzende kein Unterschied im Verhalten des Login-Vorgangs zum vorherigen Beispiel. | ||
+ | --> | ||
+ | <bean id=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | nextFlow = " | ||
+ | |||
+ | authCtx = input.getSubcontext(" | ||
+ | mfaCtx = authCtx.getSubcontext(" | ||
+ | if (mfaCtx.isAcceptable()) { | ||
+ | AuthnContextClassRefPrincipal = Java.type(" | ||
+ | refPrincipal = new AuthnContextClassRefPrincipal(" | ||
+ | rpCtx = authCtx.getSubcontext(" | ||
+ | |||
+ | if (rpCtx == null || !rpCtx.getRequestedPrincipals().contains(refPrincipal)) { | ||
+ | nextFlow = null; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | nextFlow; | ||
+ | ]]> | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | Wenn ' | ||
==== Logging ==== | ==== Logging ==== | ||
Um detaillierte Logging-Informationen vom fudiscr-Plugin zu erhalten, kann die folgende Zeile in '' | Um detaillierte Logging-Informationen vom fudiscr-Plugin zu erhalten, kann die folgende Zeile in '' | ||
<file xml> | <file xml> | ||
- | <logger name=" | + | <logger name=" |
</ | </ | ||
Zeile 741: | Zeile 838: | ||
idp.c14n.fudiscr.trim=true | idp.c14n.fudiscr.trim=true | ||
</ | </ | ||
+ | ===== FIDO2 Userless ===== | ||
+ | Mit der aktuellen Testversion 1.4.0 wurde in Zusammenarbeit mit der Hochschule München ein neues Authentifizierungsverfahren eingeführt. Weitere Details folgen in Kürze. | ||
+ | |||
===== Weitere Materialien ===== | ===== Weitere Materialien ===== | ||
* Flow: [[https:// | * Flow: [[https:// |