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/09/13 14:25] – [Versionen] hofmann@fu-berlin.de | user:hofmann_fu-berlin.de [2024/05/30 16:04] – [Unterstütze Tokenverfahren aus privacyIDEA] hofmann@fu-berlin.de | ||
---|---|---|---|
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. | ||
Zeile 17: | Zeile 17: | ||
Er ist Mitarbeiter des Rechenzentrums [[https:// | Er ist Mitarbeiter des Rechenzentrums [[https:// | ||
- | Mit der Version | + | Mit den Versionen |
- | ===== Versionen ===== | ||
- | ^ 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 | min. 3.7 | aktuell IdP-Version < 4.3.0 | | ||
- | | 1.3.0 | min. 4.3.0 | min. 3.7 | aktuell | ||
- | | 1.4.0 | min. 4.3.0 | min. 3.8.1 | für Tests freigegeben | ||
+ | ===== Versionen für den Shibboleth Identity Provider in der Version 4 ===== | ||
+ | ^ 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 |
+ | | 2.0.0 | min. 5.0.0 | min. 2.0.0 | min. 3.9.2 | aktuell | ||
+ | ===== Unterstütze Tokenverfahren aus eduMFA und privacyIDEA ===== | ||
+ | Aktuell werden die folgenden Tokenverfahren aus eduMFA ([[https:// | ||
^ Tokenverfahren | ^ Tokenverfahren | ||
| Email | mail | 1.0.0 | | | | Email | mail | 1.0.0 | | | ||
Zeile 41: | Zeile 44: | ||
| Remote | | Remote | ||
| SMS Token | sms | 1.0.0 | | | | SMS Token | sms | 1.0.0 | | | ||
+ | | Spass | simple_pass_token | ||
| TAN Token | tan | 1.0.0 | | | | TAN Token | tan | 1.0.0 | | | ||
| TOTP | totp | 1.0.0 | | | | TOTP | totp | 1.0.0 | | | ||
- | | WebAuthn | + | | WebAuthn |
| Yubico | | Yubico | ||
| Yubikey | | Yubikey | ||
Zeile 98: | Zeile 102: | ||
Hierfür wird eine neue Datei // | Hierfür wird eine neue Datei // | ||
<file python idp-admin-policy> | <file python idp-admin-policy> | ||
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
+ | ' | ||
+ | } | ||
+ | ] | ||
} | } | ||
</ | </ | ||
Zeile 117: | Zeile 124: | ||
Hierfür wird eine neue Datei // | Hierfür wird eine neue Datei // | ||
<file python idp-application-tokentype> | <file python idp-application-tokentype> | ||
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | }, | + | ' |
- | ' | + | }, |
- | ' | + | ' |
- | ' | + | ' |
+ | ' | ||
+ | } | ||
+ | ] | ||
} | } | ||
</ | </ | ||
Zeile 136: | Zeile 146: | ||
Hierfür wird eine neue Datei // | Hierfür wird eine neue Datei // | ||
- | <file python | + | <file python |
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | }, | + | ' |
- | ' | + | }, |
- | ' | + | ' |
- | ], | + | ' |
- | ' | + | ], |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | ' | + | ' |
- | }, | + | ' |
- | ' | + | }, |
+ | ' | ||
+ | } | ||
+ | ] | ||
} | } | ||
</ | </ | ||
Zeile 158: | Zeile 171: | ||
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 167: | Zeile 180: | ||
<file python webauthn-enrollment> | <file python webauthn-enrollment> | ||
- | { | + | { ' |
- | ' | + | |
- | ' | + | ' |
- | ' | + | ' |
- | }, | + | ' |
- | ' | + | }, |
- | ' | + | ' |
- | ' | + | ' |
+ | ' | ||
+ | } | ||
+ | ] | ||
} | } | ||
</ | </ | ||
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 '' | ||
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:// |