Skip to content

Repository files navigation

Esup Otp Shibboleth

Description

Esup Otp Shibboleth est un plugin de l'IdP Shibboleth.

Ce plugin est à utilisé au sein d'un login flow de type Multi-Facteur (MFA). Il permet d'appeler l'api REST esup-otp-api et fournir une interface de sélection du second facteur d'authentification.

Plugin ID Module(s) Authentication Flow ID
fr.renater.shibboleth.esup.otp idp.authn.EsupOtp authn/EsupOtp

Build

Prérequis

  • OpenJDK 21
  • Maven 3.8 ou supérieur

Génération du plugin avec Maven

  ./mvnw clean install -s resources/.m2/settings.xml -Dno-check-m2

Une fois la commande maven passée avec succès, le package du module se trouve dans le répertoire esup-otp-dist/target

Signature du plugin

Pour signer le plugin, il est nécessaire de posséder ou générer une paire clef privée/clef publique (par exemple avec gpg) La clef publique devra être ajoutée au préalable du build dans le fichier esup-otp-dist/src/main/resources/bootstrap/keys.txt

La ligne de commande pour signer l'archive est la suivante :

  gpg -u USER_A_REMPLACER -ab esup-otp-dist/target/idp-plugin-esup-otp-${version}.tar.gz

Installation

Copie du package sur le serveur

$ scp module.tar.gz username@server:/tmp/.
$ scp module.tar.gz.asc username@server:/tmp/.
$ ssh username@server -i ~/.ssh/id_rsa
[username@server ~]$ sudo -i
[username@server ~]$ export idp_install_path=/usr/share/shibboleth-idp
[username@server ~]$ cp /tmp/module.tar.gz $idp_install_path/plugins/.
[username@server ~]$ cp /tmp/module.tar.gz.asc $idp_install_path/plugins/.

Activer le module multifacteur Shibboleth

A partir de la documentation Shibboleth MultiFactorAuthnConfiguration

[username@server ~]$ $idp_install_path/bin/module.sh -t idp.authn.MFA || $idp_install_path/bin/module.sh -e idp.authn.MFA

Vérification

[username@server ~]$ $idp_install_path/bin/module.sh -l

Installation du plugin

[username@server ~]$ $idp_install_path/bin/plugin.sh -i $idp_install_path/plugins/module.tar.gz --noCheck

Redémarrage du processus de l'IdP (tomcat, jetty...)

Configuration

property required Default value Description
idp.esup.otp.apiHost ✓ Url de l'api esup-otp-api (https://esup-otp-api.univ.fr)
idp.esup.otp.apiPassword ✓
idp.esup.otp.usersSecret ✓
idp.esup.otp.manager.link ✓ Url de l'application esup-otp-manager (https://esup-otp-manager.univ.fr/preferences)
idp.esup.otp.username.strategy ✓ DefaultUsernameLookupStrategy Stratégie du module pour récupérer l'identifiant pour appeler esup-otp-api (valeurs possible : DefaultUsernameLookupStrategy, SubjectContextUsernameLookupStrategy, AttributeContextUsernameLookupStrategy)
idp.esup.otp.attributeId ✓ (si idp.esup.otp.username.strategy = AttributeContextUsernameLookupStrategy) Attribut de l'IDP à utiliser comme identifiant de l'utilisateur courant (peut être un StringAttribute ou un ScopedStringAttribute)
idp.esup.otp.issuer ✓ %{idp.entityID} L'issuer correspondant au tenant pour esup-otp-api.
idp.esup.otp.supportedMethods totp,webauthn,push,bypass,passcode_grid,random_code,random_code_mail Liste des méthodes supportées pour le second facteur (doit matcher avec les méthodes retourné par esup-otp-api).
idp.esup.otp.send.counter 3 Nombre maximum de renvoi possible d'un code (par SMS ou mail). -1, pas de limitiation. 0 désactivation

Configuration des logs

Pour activer les logs en DEBUG pour le pluging, il est nécessaire de modifier le fichier conf/logback.xml de l'IdP Par exemple :

<!-- Pour logger les appels vers esup-otp-api -->
<logger name="fr.renater.shibboleth.esup.otp" level="DEBUG" />
<!-- logs debug pour le plugin -->
<logger name="fr.renater.shibboleth.idp.plugin.authn.esup.otp.impl" level="DEBUG" />

Les fichiers de logs sont ceux de l'IdP :

  • Fichier de log principal : $idp_install_path/logs/idp-process.log
  • Fichier de log contenant uniquement les lignes d'avertissement et d'erreur : $idp_install_path/logs/idp-warn.log

Tests

Il est possible de réaliser des tests en ligne de commande une fois le plugin installé sur l'IdP.

  • Aide
[username@server ~]$ $idp_install_path/bin/esupotpauth.sh --help
  • Lister tous les utilisateurs
[username@server ~]$ $idp_install_path/bin/esupotpauth.sh --home $idp_install --verbose --command all

Développement

Java 21, Spring framework 7, Lombok, Maven 3.8 (ou supérieur)

Licence

Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la licence publique générale GNU Affero telle que publiée par la Free Software Foundation ; soit la version 3 de la licence, soit (à votre gré) toute version ultérieure.

About

Plugin shibboleth pour esup-otp

Resources

Stars

0 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages