Dies ist eine alte Version des Dokuments!


Einrichtung eines Funktionsnutzers in privacyIDEA

Das Shibboleth-Plugin kommuniziert mit privacyIDEA über dessen API. Es werden drei Endpunkte verwendet:

  • /token/ (Abrufen einer Liste von Tokens)
  • /validate/triggerchallenge (Initiieren einer Token-Challenge)
  • /validate/check (Überprüfen eines OTP ggf. in Kombination mit einer PIN)

Ein Nutzer muss also über die Berechtigungen verfügen, die Aktionen, die bei Aufruf dieser Endpunkte ausgelöst werden, ausführen zu dürfen. Am besten sollte dieser Nutzer über keine weiteren Rechte verfügen.

Anlegen eines Admin-Nutzers

Achtung: Wir gehen davon aus, das der initiale Admin-Supernutzer admin vorhanden ist. Zunächst muss ein Admin-Nutzer für den Zugriff vom Identity Provider angelegt werden. Es empfiehlt sich, hierfür auch einen eigenen (administrativen) Realm anzulegen, um Berechtigungen für unterschiedliche Arten von Admin später besser trennen zu können. Der anzulegende Nutzer kann dann aus einer beliebigen externen Quelle kommen und über einen in privacyIDEA definierten Resolver importiert werden.

Das Anlegen von Realms und Resolvern ist nicht Thema dieser Anleitung. Wir legen hier jedoch der Einfachheit und Anschaulichkeit wegen einen PrivacyIDEA-internen IdP-Admin-Nutzer an.

pi-manage admin add idp-admin

Um die Anzahl an API-Anfragen zu reduzieren, sollte für den idp-admin anstelle von Benutzernamen und Passwort ein Token für den Zugriff erzeugt werden. Dieser Token kann mit einer beliebigen Gültigkeitsdauer in Tagen (default 365) versehen werden. Das nachfolgende Beispiel legt eine Gültigkeitsdauer von zehn Jahren fest:

pi-manage api createtoken -r admin -u idp-admin -d 3650


Vergeben der Berechtigungen

Die notwendigen Berechtigungen werden via Policy in privacyIDEA eingetragen.

Achtung: Admins in privacyIDEA haben zu Beginn Rechte für alle Aktionen. Dies gilt solange, wie keine Admin-Policy definiert ist. 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.

Zunächst wird mit der Richtlinien-Vorlage superuser die funktionserhaltende Richtlinie für den Admin-Supernutzer erstellt, und der Nutzer admin zugewiesen.

Anschließend wird nun eine neue Policy für den Nutzer idp-admin erstellt.

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:

idp-admin-policy
{   'policy': [   
      {
        'action': {'tokenlist':True, 'triggerchallenge':True},
        'active': True,
        'adminuser': ['idp-admin'],
        'name': 'idp-admin-policy',
        'scope': 'admin'
      }
   ]
}

Die Policy kann unter Nutzung dieser Datei erstellt werden:

pi-manage policy p_import -f idp-admin-policy


Zusätzliche Richtlinie ab fudiscr-Version Version 1.3.0

Das fudiscr-Plugin benötigt für bestimmte Tokenverfahren wie WebAuthn und zur Reduzierung von API-Anfragen das Recht, für /validate/triggerchallenge auf Tokentypen einschränken zu können.

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:

idp-application-tokentype
{   'policy': [
      {
        'action': {
          'application_tokentype': True
        },
        'active': True,
        'name': 'idp-application-tokentype',
        'scope': 'authorization'
      }
   ]
}

Die Policy kann unter Nutzung dieser Datei erstellt werden:

pi-manage policy p_import -f idp-application-tokentype


Event ab fudiscr-Version 1.3.0

Tests mit privcyIDEA haben ergeben, dass aufgrund eines Features/Bugs in Verbindung mit der zuvor genannten Policy idp-application-tokentype der Parameter webauthn_allowed_transports per Event gesetzt werden muss.

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:

idp-webauthn-allowed-transports
{   'event': [
      {
        'action': 'set',
        'active': True,
        'conditions': {
          'tokentype': 'webauthn'
        },
        'event': [
          'validate_triggerchallenge'
        ],
        'handlermodule': 'RequestMangler',
        'name': 'idp-webauthn-allowed-transports',
        'options': {
          'parameter': 'webauthn_allowed_transports',
          'value': 'usb ble nfc internal'
        },
        'position': 'pre'
      }
   ]
}

Das Event kann unter Nutzung dieser Datei erstellt werden:

pi-manage event e_import -f idp-webauthn-allowed-transports

Achtung: Wenn per Policy der Wert webauthn_allowed_transports angepasst wird, dann sollte auch passend dazu das Event angepasst werden.

Weitere Konfigurationsempfehlung

Damit möglichst viele WebAuthn-Token funktionieren und auch Passkey via QR-Code im Browser funktioniert, wird folgende weitere Richtlinie (Datei webauthn-enrollment) empfohlen:

webauthn-enrollment
{   'policy': [
      {
        'action': {
          'webauthn_authenticator_attestation_form': 'indirect',
          'webauthn_authenticator_attestation_level': 'none'
        },
        'active': True,
        'name': 'webauthn-enrollment',
        'scope': 'enrollment',
      }
   ]
}

Die Policy kann unter Nutzung der Datei (webauthn-enrollment) erstellt werden:

pi-manage policy p_import -f webauthn-enrollment

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.)

  • Zuletzt geändert: vor 10 Monaten