Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
user:hofmann_fu-berlin.de [2023/08/29 15:59] – [Konfiguration fudiscr-Plugin] abalke@fu-berlin.deuser:hofmann_fu-berlin.de [2024/05/23 11:33] (aktuell) – [IdP-Authn-Plugin fudiscr] hofmann@fu-berlin.de
Zeile 1: Zeile 1:
-====== IdP-Authn-Plugin fudiscr ab Version 1.3.0 ====== +====== IdP-Authn-Plugin fudiscr ====== 
 +[[user:hofmann_fu-berlin.de:zusatz|zusatz]]
 ===== Allgemein ===== ===== Allgemein =====
 Das Plugin kann als weiterer Faktor für die Multi-Faktor-Authentifizierung (MFA) vom [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/overview|Shibboleth Identity Provider (IdP)]] verwendet werden. Das Plugin kann als weiterer Faktor für die Multi-Faktor-Authentifizierung (MFA) vom [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/overview|Shibboleth Identity Provider (IdP)]] verwendet werden.
Zeile 14: Zeile 14:
 Eine externe Implementierung für Fortinet existiert auch bereits. Eine externe Implementierung für Fortinet existiert auch bereits.
  
-Die bisherigen Entwicklungsarbeiten wurden von Steffen Hofmann von der [[https://www.fu-berlin.de|Freien Universität Berlin]] durchgeführt.+Die primären Entwicklungsarbeiten wurden von Steffen Hofmann von der [[https://www.fu-berlin.de|Freien Universität Berlin]] durchgeführt.
 Er ist Mitarbeiter des Rechenzentrums [[https://www.zedat.fu-berlin.de|(FUB-IT Infrastruktur)]] und zuständig für den Bereich Identity Management. Das Identity Management System der Freien Universität Berlin trägt den Namen FUDIS (FU Directory and Identity Service). Aus diesem Grund wird für das **C**hallenge-**R**esponse-Plugin in Konfigurationsparametern u.a. das Kürzel fudiscr verwendet. Er ist Mitarbeiter des Rechenzentrums [[https://www.zedat.fu-berlin.de|(FUB-IT Infrastruktur)]] und zuständig für den Bereich Identity Management. Das Identity Management System der Freien Universität Berlin trägt den Namen FUDIS (FU Directory and Identity Service). Aus diesem Grund wird für das **C**hallenge-**R**esponse-Plugin in Konfigurationsparametern u.a. das Kürzel fudiscr verwendet.
-Die zukünftige Pflege des Plugins erfolgt durch die [[https://www.fu-berlin.de|Freien Universität Berlin]]. 
-Sollte dies durch die Hochschule nicht mehr sichergestellt werden können, so stellen Partnerorganisationen und -unternehmen dies sicher. 
  
-===== Versionen ===== +Mit der Version 1.4.0 erfolgt eine Zusammenarbeit im Bereich FIDO2/WebAuthn mit der Hochschule MünchenDie Pflege des Plugins erfolgt mit dieser Version in Kooperation der [[https://www.fu-berlin.de|Freien Universität Berlin]] und der [[https://www.hm.edu|Hochschule München]].
-^ Plugin-Version ^ IdP-Version   ^ privacyIDEA-Version ^ Support-Level         ^ +
-1.0.0          | min. 4.1.2    | min. 3.7            | nicht mehr verwenden +
-| 1.1.0          | min4.1.2    min3.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               |  +
-| 1.3.0          | min. 4.3.0    | min. 3.7            | für Tests freigegeben |+
  
 +===== Versionen =====
 +^ Plugin-Version ^ IdP-Version            ^ privacyIDEA-Version ^ Support-Level               ^
 +| 1.0.0          | min. 4.1.2 und < 4.3.0 | min. 3.7            | nicht mehr verwenden        |
 +| 1.1.0          | min. 4.1.2 und < 4.3.0 | min. 3.7            | nicht mehr verwenden        |
 +| 1.1.1          | min. 4.1.2 und < 4.3.0 | min. 3.7            | nicht mehr verwenden        |
 +| 1.2.0          | min. 4.1.2 und < 4.3.0 | min. 3.7            | aktuell                     
 +| 1.3.0          | min. 4.3.0 und < 5.0.0 | min. 3.7            | aktuell                     |
 +| 1.4.0          | min. 4.3.0 und < 5.0.0 | min. 3.8.1          | für Tests freigegeben       |
  
  
 ===== Unterstütze Tokenverfahren aus privacyIDEA ===== ===== Unterstütze Tokenverfahren aus privacyIDEA =====
 Aktuell werden die folgenden Tokenverfahren aus privacyIDEA ([[https://privacyidea.readthedocs.io/en/latest/tokens/tokentypes.html|Token types in privacyIDEA]]) unterstützt: Aktuell werden die folgenden Tokenverfahren aus privacyIDEA ([[https://privacyidea.readthedocs.io/en/latest/tokens/tokentypes.html|Token types in privacyIDEA]]) unterstützt:
-^ Tokenverfahren       ^ Typbezeichnung im Plugin ^ min. Plugin-Version ^ Einschränkungen / Hinweise                               ^ +^ Tokenverfahren       ^ Typbezeichnung im Plugin    ^ min. Plugin-Version ^ Einschränkungen / Hinweise                               ^ 
-| Email                | mail                     | 1.0.0                |                                                          | +| Email                | mail                        | 1.0.0                |                                                          | 
-| HOTP Token           | hotp                     | 1.0.0                |                                                          | +| HOTP Token           | hotp                        | 1.0.0                |                                                          | 
-| Indexed Secret Token | indexed_secret           | 1.0.0                |                                                          | +| Indexed Secret Token | indexed_secret              | 1.0.0                |                                                          | 
-| mOTP Token           | motp                     | 1.0.0                |                                                          | +| mOTP Token           | motp                        | 1.0.0                |                                                          | 
-| Paper Token (PPR)    | indexed_tan              | 1.0.0                |                                                          | +| Paper Token (PPR)    | indexed_tan                 | 1.0.0                |                                                          | 
-| Questionnaire Token  | question                 | 1.0.0                | Es darf nur eine Antwort per Richtlinie verlangt werden. | +| Questionnaire Token  | question                    | 1.0.0                | Es darf nur eine Antwort per Richtlinie verlangt werden. | 
-| Registration         | registration_code        | 1.3.0                |                                                          | +| Registration         | registration_code           | 1.3.0                |                                                          
-| SMS Token            | sms                      | 1.0.0                |                                                          | +| Remote               | //referenzierter Tokentyp// | 1.3.0                | Nur referenzierte Token vom Typ //Email//, //HOTP Token//, //mOTP Token//, //Paper Token (PPR)//, //Registration//, //SMS Token//, //TAN Token, TOTP//, //Yubico// und //Yubikey// werden unterstützt. 
-| TAN Token            | tan                      | 1.0.0                |                                                          | +| SMS Token            | sms                         | 1.0.0                |                                                          | 
-| TOTP                 | totp                     | 1.0.0                |                                                          | +| TAN Token            | tan                         | 1.0.0                |                                                          | 
-| WebAuthn             | web_authn                | 1.2.0                | bei Version 1.2.0 nur mit Konfigurationsoption ''fudiscr.privacyidea.single_trigger_challenges=false'', aber Version 1.3.0 siehe [[user:hofmann_fu-berlin.de#zusaetzliche_richtlinie_ab_fudiscr-version_version_130|Richtlinie und Event ab Version 1.3.0]]                                        | +| TOTP                 | totp                        | 1.0.0                |                                                          | 
-| Yubikey              | yubikey_otp              | 1.3.0                |                                                          |+| WebAuthn             | web_authn                   | 1.2.0                | bei Version 1.2.0 nur mit Konfigurationsoption ''fudiscr.privacyidea.single_trigger_challenges=false'', ab Version 1.3.0 siehe [[user:hofmann_fu-berlin.de#zusaetzliche_richtlinie_ab_fudiscr-version_version_130|Richtlinie und Event ab Version 1.3.0]]                                        
 +| Yubico               | yubico_otp                  | 1.3.0                |                                                          
 +| Yubikey              | yubikey_aes                 | 1.3.0                |                                                          |
  
 ===== Installation und Konfiguration ===== ===== Installation und Konfiguration =====
Zeile 89: Zeile 91:
 Definiert man eine Policy im Scope 'admin', so gelten für alle Admins nur noch die den Policies eingetragenen Rechte. Definiert man eine Policy im Scope 'admin', so gelten für alle Admins nur noch die den Policies eingetragenen Rechte.
 Sollte es noch keine weitere Admin-Policy geben, sollte man daher darauf achten, sich nicht selbst aus dem Web-UI auszusperren. Sollte es noch keine weitere Admin-Policy geben, sollte man daher darauf achten, sich nicht selbst aus dem Web-UI auszusperren.
-privacyIDEA weist daher darauf hin, falls man eine Admin-Policy definiert, jedoch in keiner (dieser oder) anderen Policy Rechte zum Bearbeiten von Policies vergeben wurden. 
  
 Zunächst wird mit der Richtlinien-Vorlage //superuser// die funktionserhaltende Richtlinie für den Admin-Supernutzer erstellt, und der Nutzer //admin// zugewiesen. Zunächst wird mit der Richtlinien-Vorlage //superuser// die funktionserhaltende Richtlinie für den Admin-Supernutzer erstellt, und der Nutzer //admin// zugewiesen.
Zeile 96: Zeile 97:
  
 Hierfür wird eine neue Datei //idp-admin-policy// erstellt, welche die Parameter der Policy als Python-Dictionary enthält. Der Inhalt sollte wie folgt aussehen: Hierfür wird eine neue Datei //idp-admin-policy// erstellt, welche die Parameter der Policy als Python-Dictionary enthält. Der Inhalt sollte wie folgt aussehen:
-<code>+<file python idp-admin-policy>
 { {
   'action': {'tokenlist':True, 'triggerchallenge':True},   'action': {'tokenlist':True, 'triggerchallenge':True},
Zeile 104: Zeile 105:
   'scope': 'admin'   'scope': 'admin'
 } }
-</code>+</file>
  
 Die Policy kann unter Nutzung dieser Datei erstellt werden: Die Policy kann unter Nutzung dieser Datei erstellt werden:
Zeile 115: Zeile 116:
  
 Hierfür wird eine neue Datei //idp-application-tokentype// erstellt, welche die Parameter der Policy als Python-Dictionary enthält. Der Inhalt sollte so aussehen: Hierfür wird eine neue Datei //idp-application-tokentype// erstellt, welche die Parameter der Policy als Python-Dictionary enthält. Der Inhalt sollte so aussehen:
-<code>+<file python idp-application-tokentype>
 { {
   'action': {   'action': {
Zeile 124: Zeile 125:
   'scope': 'authorization'   'scope': 'authorization'
 } }
-</code>+</file>
  
 Die Policy kann unter Nutzung dieser Datei erstellt werden: Die Policy kann unter Nutzung dieser Datei erstellt werden:
Zeile 135: Zeile 136:
  
 Hierfür wird eine neue Datei //idp-webauthn-allowed-transports// erstellt, welche die Parameter des Events als Python-Dictionary enthält. Der Inhalt sollte so aussehen: Hierfür wird eine neue Datei //idp-webauthn-allowed-transports// erstellt, welche die Parameter des Events als Python-Dictionary enthält. Der Inhalt sollte so aussehen:
-<code>+<file python validate_triggerchallenge>
 { {
   'action': 'set',   'action': 'set',
Zeile 153: Zeile 154:
   'position': 'pre'   'position': 'pre'
 } }
-</code>+</file>
  
 Das Event kann unter Nutzung dieser Datei erstellt werden: Das Event kann unter Nutzung dieser Datei erstellt werden:
Zeile 163: Zeile 164:
 \\ \\
 === Weitere Konfigurationsempfehlung === === Weitere Konfigurationsempfehlung ===
-Damit möglich viele WebAuthn-Token funktionieren und auch Passkey via QR-Code im Browser funktioniert, wird folgende weitere Richtlinie (Datei //webauthn-enrollment//) empfohlen:+Damit möglichst viele WebAuthn-Token funktionieren und auch Passkey via QR-Code im Browser funktioniert, wird folgende weitere Richtlinie (Datei //webauthn-enrollment//) empfohlen:
  
-<code>+<file python webauthn-enrollment>
 { {
   'action': {   'action': {
     'webauthn_authenticator_attestation_form': 'indirect',     'webauthn_authenticator_attestation_form': 'indirect',
-    'webauthn_authenticator_attestation_level': 'none'+    'webauthn_authenticator_attestation_level': 'none'
-    'webauthn_avoid_double_registration': True+
   },   },
   'active': True,   'active': True,
Zeile 176: Zeile 176:
   'scope': 'enrollment',   'scope': 'enrollment',
 } }
-</code>+</file>
  
 Die Policy kann unter Nutzung der Datei (//webauthn-enrollment//) erstellt werden: Die Policy kann unter Nutzung der Datei (//webauthn-enrollment//) erstellt werden:
Zeile 185: Zeile 185:
 Die die für WebAuthn notwendigen Enrollment Parameter ''webauthn_relying_party_id'' und ''webauthn_relying_party_name'' können mit dieser oder einer separaten Richtlinie definiert werden. Allgemein gilt, dass die Domain des Identity Providers entweder identisch mit ''webauthn_relying_party_id'' oder eine Subdomain von ''webauthn_relying_party_id'' sein muss. (Es findet keine Vorabfilterung statt, ob die Domain des Identity Providers mit der ''webauthn_relying_party_id'' des WebAuthn-Token verträglich ist.) Die die für WebAuthn notwendigen Enrollment Parameter ''webauthn_relying_party_id'' und ''webauthn_relying_party_name'' können mit dieser oder einer separaten Richtlinie definiert werden. Allgemein gilt, dass die Domain des Identity Providers entweder identisch mit ''webauthn_relying_party_id'' oder eine Subdomain von ''webauthn_relying_party_id'' sein muss. (Es findet keine Vorabfilterung statt, ob die Domain des Identity Providers mit der ''webauthn_relying_party_id'' des WebAuthn-Token verträglich ist.)
  
-==== Aktivierung MFA-Module ==== +==== Aktivierung MFA-Modul ==== 
-Das fudiscr-Plugin benötigt das MFA-Module. Dieses sollte wie folgt aktiviert werden:+Das fudiscr-Plugin benötigt das MFA-Modul. Dieses sollte wie folgt aktiviert werden:
 <code> <code>
 %{idp.home}/bin/module.sh -e idp.authn.MFA %{idp.home}/bin/module.sh -e idp.authn.MFA
 </code> </code>
-Mit dem MFA-Module wird auch die Konfigurationsdatei, ''%{idp.home}/conf/authn/mfa-authn-config.xml'' abgelegt.+Mit dem MFA-Modul wird auch die Konfigurationsdatei, ''%{idp.home}/conf/authn/mfa-authn-config.xml'' abgelegt.
  
  
Zeile 216: Zeile 216:
 </code> </code>
 \\ \\
-=== 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:
 <code> <code>
Zeile 224: Zeile 224:
 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:
 <code> <code>
-%{idp.home}/bin/plugin.sh -u de.zedat.fudis.shibboleth.idp.plugin.authn.fudiscr -fu 1.3.0+%{idp.home}/bin/plugin.sh -u de.zedat.fudis.shibboleth.idp.plugin.authn.fudiscr -fu 1.4.0
 </code> </code>
  
Zeile 274: Zeile 274:
 |''fudiscr.on_failed_restart_completely_mfa''|''shibboleth.Conditions.FALSE''|Dieses [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] legt fest, ob bei einem Neustart der Authentifizieurung aus dem fudiscr-Plugin heraus nur der Faktor //fudiscr// im MFA-Flow (Default) oder die gesamte Authentifizierung neu gestartet wird. Gibt das [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] ''TRUE'' zurück, werden also die Ergebnisse der vorherigen Faktoren zurückgesetzt. Es werden also Benutzername und Passwort u.a. erneut verlangt.| |''fudiscr.on_failed_restart_completely_mfa''|''shibboleth.Conditions.FALSE''|Dieses [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] legt fest, ob bei einem Neustart der Authentifizieurung aus dem fudiscr-Plugin heraus nur der Faktor //fudiscr// im MFA-Flow (Default) oder die gesamte Authentifizierung neu gestartet wird. Gibt das [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] ''TRUE'' zurück, werden also die Ergebnisse der vorherigen Faktoren zurückgesetzt. Es werden also Benutzername und Passwort u.a. erneut verlangt.|
 |''fudiscr.result_with_username_principal''|''shibboleth.Conditions.TRUE''|Dieses [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] legt fest, ob nach erfolgreicher Authentifizierung ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631602/AttributePostLoginC14NConfiguration|UsernamePrincipal]] dem Subject hinzugefügt wird. Per Default enthält das Authentifizierungsergebnis nach erfolgreicher Authentifizierung mit dem fudiscr-Plugin einen [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631602/AttributePostLoginC14NConfiguration|UsernamePrincipal]].| |''fudiscr.result_with_username_principal''|''shibboleth.Conditions.TRUE''|Dieses [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] legt fest, ob nach erfolgreicher Authentifizierung ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631602/AttributePostLoginC14NConfiguration|UsernamePrincipal]] dem Subject hinzugefügt wird. Per Default enthält das Authentifizierungsergebnis nach erfolgreicher Authentifizierung mit dem fudiscr-Plugin einen [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631602/AttributePostLoginC14NConfiguration|UsernamePrincipal]].|
-|''fudiscr.result_with_realm_in_username_principal''|''shibboleth.Conditions.TRUE''|Wenn mit ''fudiscr.result_with_username_principal'' ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631602/AttributePostLoginC14NConfiguration|UsernamePrincipal]] erzeugt wird, dann legt diese [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] fest, ob der Realm enthalten ist. ''TRUE'' (default) erzeugt z.B. //dummy@fu-berlin.de//, ''FALSE'' nur //dummy// als Username.|+|''fudiscr.result_with_realm_in_username_principal''|''shibboleth.Conditions.TRUE''|Ab fudiscr-Version 1.3.0: Wenn mit ''fudiscr.result_with_username_principal'' ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631602/AttributePostLoginC14NConfiguration|UsernamePrincipal]] erzeugt wird, dann legt dieses [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631700/PredefinedBeans|Predicate]] fest, ob der Realm enthalten ist. ''TRUE'' (default) erzeugt z.B. //dummy@fu-berlin.de//, ''FALSE'' nur //dummy// als Username.|
 |''fudiscr.result_idp_attribute_principal_attribute_name''|//leer//|Wird mit dieser Option ein Attributname angeben, so wird ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631557/PrincipalNameAttributeDefinition|IdpAttributePrincipal]] mit diesem Attributnamen dem erfolgreichen Authentifizierungsergebnis des fudiscr-Plugins hinzugefügt. Der Attributwert enthält die ID/Seriennummer des Token, mit dem die Authentifizierung erfolgt ist.| |''fudiscr.result_idp_attribute_principal_attribute_name''|//leer//|Wird mit dieser Option ein Attributname angeben, so wird ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631557/PrincipalNameAttributeDefinition|IdpAttributePrincipal]] mit diesem Attributnamen dem erfolgreichen Authentifizierungsergebnis des fudiscr-Plugins hinzugefügt. Der Attributwert enthält die ID/Seriennummer des Token, mit dem die Authentifizierung erfolgt ist.|
-|''fudiscr.result_idp_attribute_principal_attribute_name_for_token_type''|//leer//|Wird mit dieser Option ein Attributname angeben, so wird ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631557/PrincipalNameAttributeDefinition|IdpAttributePrincipal]] mit diesem Attributnamen dem erfolgreichen Authentifizierungsergebnis des fudiscr-Plugins hinzugefügt. Der Attributwert enthält den Tokentyp des Token, mit dem die Authentifizierung erfolgt ist.|+|''fudiscr.result_idp_attribute_principal_attribute_name_for_token_type''|//leer//|Ab fudiscr-Version 1.3.0: Wird mit dieser Option ein Attributname angeben, so wird ein [[https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631557/PrincipalNameAttributeDefinition|IdpAttributePrincipal]] mit diesem Attributnamen dem erfolgreichen Authentifizierungsergebnis des fudiscr-Plugins hinzugefügt. Der Attributwert enthält den Tokentyp des Token, mit dem die Authentifizierung erfolgt ist.|
  
 === Konfigurationsoptionen für privacyIDEA === === Konfigurationsoptionen für privacyIDEA ===
Zeile 290: Zeile 290:
 |''fudiscr.privacyidea.preferred_parameter_name''|//leer//|Wird mit dieser Option ein Name angegeben, so wird nach diesem Namen in den Token-Infos in privacyIDEA gesucht und versucht, den zugehörigen Wert als Boolean zu interpretieren. Sollte der Wert //true// ergeben, so wird der Token auf der eventuellen Auswahlseite der Token vorselektiert.| |''fudiscr.privacyidea.preferred_parameter_name''|//leer//|Wird mit dieser Option ein Name angegeben, so wird nach diesem Namen in den Token-Infos in privacyIDEA gesucht und versucht, den zugehörigen Wert als Boolean zu interpretieren. Sollte der Wert //true// ergeben, so wird der Token auf der eventuellen Auswahlseite der Token vorselektiert.|
 |''fudiscr.privacyidea.relying_party_id_parameter_name''|//leer//|Wird mit dieser Option ein Name angegeben, so wird bei jeder Anfrage gegen die privacyIDEA-API die entityID des Service Providers als Parameter mit diesem Namen übergeben.| |''fudiscr.privacyidea.relying_party_id_parameter_name''|//leer//|Wird mit dieser Option ein Name angegeben, so wird bei jeder Anfrage gegen die privacyIDEA-API die entityID des Service Providers als Parameter mit diesem Namen übergeben.|
-|''fudiscr.privacyidea.user_agent_ip_address_parameter_''|//leer//|Wird mit dieser Option ein Name angegeben, so wird bei jeder Anfrage gegen die privacyIDEA-API die IP-Adresse des Users als Parameter mit diesem Namen übergeben.|+|''fudiscr.privacyidea.user_agent_ip_address_parameter_name''|//leer//|Wird mit dieser Option ein Name angegeben, so wird bei jeder Anfrage gegen die privacyIDEA-API die IP-Adresse des Users als Parameter mit diesem Namen übergeben.|
 |''fudiscr.privacyidea.singleton''|''true''|Gibt an, ob der vom fudiscr-Plugin verwendete //PrivacyIdeaChallengeResponseClient// nur einmal instanziiert wird. In manchen Anwendungsfällen kann es die Performance verbessern, wenn mehrere Instanzen zugelassen werden.| |''fudiscr.privacyidea.singleton''|''true''|Gibt an, ob der vom fudiscr-Plugin verwendete //PrivacyIdeaChallengeResponseClient// nur einmal instanziiert wird. In manchen Anwendungsfällen kann es die Performance verbessern, wenn mehrere Instanzen zugelassen werden.|
-|''fudiscr.privacyidea.with_additional_pin_response''|''false''|In privacyIDEA ist es möglich, neben dem one time password/code noch eine PIN zu verlangen. Wenn dieser Konfigurationsparameter auf ''true'' gesetzt ist, dann ergänzt das fudiscr-Plugin auf der Eingabeseite für die Response ein PIN-Feld. Nur für die Tokentypen //hotp//, //indexed_tan//, //registration_code//, //tan//, //totp// und //yubikey_otp// wird diese Funktionalität unterstützt.|+|''fudiscr.privacyidea.with_additional_pin_response''|''false''|In privacyIDEA ist es möglich, neben dem one time password/code noch eine PIN zu verlangen. Wenn dieser Konfigurationsparameter auf ''true'' gesetzt ist, dann ergänzt das fudiscr-Plugin auf der Eingabeseite für die Response ein PIN-Feld. Nur für die Tokentypen //hotp//, //indexed_tan//, //registration_code//, //tan//, //totp// und //yubikey_otp// wird diese Funktionalität unterstützt. (Bis fudiscr-Version 1.2.0 wurde diese Option unter dem Namen ''fudiscr.with_additional_pin_response'' geführt.)|
 |''fudiscr.privacyidea.single_trigger_challenges''|''true''|Dies Option existiert nur bis zur fudiscr-Version 1.2.0. Wird der Wert auf ''false'' gesetzt, wird über alle aktive Token der Nutzer*innen eine Challange ausgelöst und nicht (wie bei ''true'') eine separate Challenge pro Token. Wird WebAuthn mit mehreren aktiven WebAuthn-Token pro Nutzer in der fudiscr-Version 1.2.0 eingesetzt, so sollte der Wert auf ''false'' gesetzt werden.| |''fudiscr.privacyidea.single_trigger_challenges''|''true''|Dies Option existiert nur bis zur fudiscr-Version 1.2.0. Wird der Wert auf ''false'' gesetzt, wird über alle aktive Token der Nutzer*innen eine Challange ausgelöst und nicht (wie bei ''true'') eine separate Challenge pro Token. Wird WebAuthn mit mehreren aktiven WebAuthn-Token pro Nutzer in der fudiscr-Version 1.2.0 eingesetzt, so sollte der Wert auf ''false'' gesetzt werden.|
  
Zeile 313: Zeile 313:
 Ergänzend oder altenrativ zu den o.g. Konfigurationsoptionen ''fudiscr.filter_tokens.type_exclude_regex'' und ''fudiscr.filter_tokens.id_exclude_regex'' können weitere Ausschlussbedingungen für Token definiert werden. Ergänzend oder altenrativ zu den o.g. Konfigurationsoptionen ''fudiscr.filter_tokens.type_exclude_regex'' und ''fudiscr.filter_tokens.id_exclude_regex'' können weitere Ausschlussbedingungen für Token definiert werden.
  
-In ''%{idp.home}/conf/authn/fudiscr.xml'' kann eine mit ''fudiscr.ExcludeTokenPredicates'' eine Liste von Ausschlussfunktionen definiert werden.+In ''%{idp.home}/conf/authn/fudiscr.xml'' kann mit ''fudiscr.ExcludeTokenPredicates'' eine Liste von Ausschlussfunktionen definiert werden.
 <file xml> <file xml>
 <util:list id="fudiscr.ExcludeTokenPredicates"> <util:list id="fudiscr.ExcludeTokenPredicates">
Zeile 372: Zeile 372:
 In diesem Beispiel werden Token anhand einer Tokeneigenschaft herausgefiltert. In privacyIDEA können aktive Token existieren, die eine erste Validierung erfordern, bevor sie effektiv verwendet werden können. So soll z.B. erzwungen werden, dass Nutzer bei der Einrichtung eines TOTP-Token den QR-Code mit dem Authenticator einscannen und diesen Vorgang mit einem OTP bestätigen. Die Token besitzen bis zur Bestätigung die Eigenschaft //rollout_state// mit den Werten //verify// oder //clientwait//. Die in dem Beispiel verwendeten zwei Predicates lassen sich auch mit einem Predicate und der Regular Expression //^(clientwait|verify)$// abbilden. Es soll in dem Bespiel nur die Listeneigenschaft von ''fudiscr.ExcludeTokenPredicates'' verdeutlicht werden. In diesem Beispiel werden Token anhand einer Tokeneigenschaft herausgefiltert. In privacyIDEA können aktive Token existieren, die eine erste Validierung erfordern, bevor sie effektiv verwendet werden können. So soll z.B. erzwungen werden, dass Nutzer bei der Einrichtung eines TOTP-Token den QR-Code mit dem Authenticator einscannen und diesen Vorgang mit einem OTP bestätigen. Die Token besitzen bis zur Bestätigung die Eigenschaft //rollout_state// mit den Werten //verify// oder //clientwait//. Die in dem Beispiel verwendeten zwei Predicates lassen sich auch mit einem Predicate und der Regular Expression //^(clientwait|verify)$// abbilden. Es soll in dem Bespiel nur die Listeneigenschaft von ''fudiscr.ExcludeTokenPredicates'' verdeutlicht werden.
  
-(Mit dem Bean-Setter ''p:negateResult="true"'' kann das Ergbnis eines //ExcludeTokenPredicates// negiert werden.)+(Mit dem Konstruktor-Parameter ''c:negateResult="true"'' kann das Ergbnis eines //ExcludeTokenPredicates// negiert werden.)
  
 === Filterung von Token für die Funtkion fudiscr.UserHasTokenPredicate (ab Version 1.3.0) === === Filterung von Token für die Funtkion fudiscr.UserHasTokenPredicate (ab Version 1.3.0) ===
Zeile 400: Zeile 400:
    <bean class="de.zedat.fudis.shibboleth.idp.plugin.authn.fudiscr.function.impl.RegexExcludeTokenPropertiesPredicate"    <bean class="de.zedat.fudis.shibboleth.idp.plugin.authn.fudiscr.function.impl.RegexExcludeTokenPropertiesPredicate"
          c:propertyName="info:fudis_preferred"          c:propertyName="info:fudis_preferred"
-         c:excludePattern="^(?i)true$" +         c:excludePattern="^(?i)false$" 
-         p:negateResult="true"/>+         p:returnValueForNullInput="false"/>
    <bean class="de.zedat.fudis.shibboleth.idp.plugin.authn.fudiscr.function.impl.RegexExcludeTokenPropertiesPredicate"    <bean class="de.zedat.fudis.shibboleth.idp.plugin.authn.fudiscr.function.impl.RegexExcludeTokenPropertiesPredicate"
-         c:propertyName="tokentype"+         c:propertyName="type"
          c:excludePattern="^totp$"          c:excludePattern="^totp$"
-         p:negateResult="true"/>      +         c:negateResult="true"/>
 </util:list> </util:list>
 </file> </file>
-Das Beispiel filtert alle Token heraus, die nicht das Token-Info-Attribut ''fudis_preferred'' mit dem Wert ''true'' (case-insensitive) und nicht vom Typ 'totp' sind. Bitte beachten Sie, dass durch ''p:negateResult="true"'' aus einem Exclude eine Include wird. In dem Beispiel werden im Gegensatz zu den vorherigen Filterbeispielen die Beans direkt in der Liste und nicht als Referenzen definiert.+Das Beispiel filtert alle Token heraus, die nicht das Token-Info-Attribut ''fudis_preferred'' mit dem Wert ''true'' (case-insensitive) und nicht vom Typ 'totp' sind. ''p:returnValueForNullInput="false"'' bewirkt, dass das //RegexExcludeTokenPropertiesPredicate// bei fehlendem Token-(Info-)Attribut //false// zurückgibt. Bitte beachten Sie, dass durch ''c:negateResult="true"'' aus einem Exclude eine Include wird. In dem Beispiel werden im Gegensatz zu den vorherigen Filterbeispielen die Beans direkt in der Liste und nicht als Referenzen definiert.
  
 === Realm-Transformation (ab Version 1.3.0) === === Realm-Transformation (ab Version 1.3.0) ===
Zeile 681: Zeile 681:
 </beans> </beans>
 </file> </file>
 +
 +\\
 +
 +**Beispiel 5**: Wahlweise authn/Password und authn/SPNEGO als ersten Faktor -> [[de:aai:mfa_mit_passwd_spnego_first|hier]]. 
 +
 +\\
  
 === Reuse Condition === === Reuse Condition ===
Zeile 705: Zeile 711:
 Um detaillierte Logging-Informationen vom fudiscr-Plugin zu erhalten, kann die folgende Zeile in ''%{idp.home}/conf/logback.xml'' ergänzt werden: Um detaillierte Logging-Informationen vom fudiscr-Plugin zu erhalten, kann die folgende Zeile in ''%{idp.home}/conf/logback.xml'' ergänzt werden:
 <file xml> <file xml>
-<logger name="de.zedat.fudis" level="DEBUG/>+<logger name="de.zedat.fudis" level="DEBUG"/>
 </file> </file>
  
Zeile 741: Zeile 747:
 idp.c14n.fudiscr.trim=true idp.c14n.fudiscr.trim=true
 </file> </file>
 +===== 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://identity.fu-berlin.de/downloads/shibboleth/idp/plugins/authn/fudiscr/doc/ChallengeResponseFlow.pdf|ChallengeResponseFlow.pdf]]   * Flow: [[https://identity.fu-berlin.de/downloads/shibboleth/idp/plugins/authn/fudiscr/doc/ChallengeResponseFlow.pdf|ChallengeResponseFlow.pdf]]
  • Zuletzt geändert: vor 9 Monaten