| Apereo CAS | Keycloak | Shibboleth IDP | LemonLDAP-NG | |
|---|---|---|---|---|
| Propriétaire | Apereo | Red Hat | Internet2 | Hébergé par Worteks et OW2 |
| License | Apache | Apache | Apache | GPLv2 |
| Langage | Java | Java | Java | Perl |
| Date 1ère version | 2003 | 2014 | 2003 | 2007 |
| Nombre de déploiements dans la féd Educ-Recherche (sans déléguation) | ~60 v6
~90 v5/v4/v3 |
2 | ~100 | ~10 |
| Installation | gradle WAR overlay + java -jar | docker ou download&unzip + kc.sh |
download&unzip&install.sh + deploy in tomcat | apt/yum/docker + nginx fastcgi conf |
| Performance | bonne | bonne | bonne si on évite certains attributs (calculés?) | bonne |
| License | Apache | Apache | Apache | GPLv2 |
| Taille en kLOC | ~400 | ~600 | ~100 | ~100 |
| Nb commits 2022 | ~2000 | ~1400 | ~400 | ~800 |
| Développeurs principaux + 10 commits/an + 5 commits/an |
1 + 3 + 5 | 0 + 18 + 15 | 2 + 0 + 4 | 3 + 2 + 2 |
| Temps de démarrage | ~60s | ~5s | ~15s | ~1s |
| Remarques | commits anarchiques, pas de tickets | ⚠ cookies sur le domaine | ||
| RememberMe | oui | oui | non | oui |
| Stockage sessions | mémoire / Redis ⚠ / Mongo / Memcache ⚠ / Ehcache / JPA ⚠ / ... | mémoire synchronisé (Infinispan) autres choix en préparation |
mémoire / Memcache / JDBC / JPA (déprécié) | fichiers / Redis / SQL / LDAP (doc) |
| Délégation | SAML2 / CAS / OIDC (mais pas de logout sauf SAML2) / Facebook... | SAML2 / OIDC / Facebook... | SAML2 / CAS (module externe) | SAML2 / CAS / OIDC / Facebook... (doc) |
| Délégation FranceConnect et réconciliation | faisable avec interrupt | facile en laissant keycloak stocker le "sub" FC dans sa base de données. Sinon regarder SPI | N/A | faisable avec un plugin. Page de login mixte password/FC compliquée à faire. Logout ok sur certains endpoints... |
| Kerberos et NTLM popup | facile | difficile (piste #1 #2) | faisable et documenté | faisable avec Combination of authentication if($env->{HTTP_USER_AGENT} =~ /Firefox|Kerberos/) then [Kerberos, attrsLDAP] or [LDAP] else [LDAP] |
| Protocoles en tant que fournisseur d'identité | SAML2 / CAS / OIDC | SAML2 / CAS / OIDC | SAML2 / CAS / OIDC (plugin) | SAML2 / CAS / OIDC (doc) |
| Identity provider CAS |
- nécessite un plugin
- avec proxy tickets depuis 2024 |
implémente pas mal de quirks dispo dans Apereo CAS | - pas de samlValidate
- SingleLogout backchannel dans la prochaine version |
|
| Déclaration des services CAS | regexp ou white-list | white-list par URL prefix | regexp ou white-list | white-list par URL prefix (regexp envisagé) |
| Fédération SPs SAML2 | aggregate / MDQ | non | aggregate / MDQ | aggregate |
| Workflows | interrupt en Groovy | GUI / SPI en Java/Javascript | extensible (en XML/Java/Javascript) | configurables et extensible (en Perl) |
| Prestataire français | CAS in the cloud (Jérôme Leleu) | Worteks | ? | Worteks |
| documentation | manque d'exemples nécessité d'aller sur fawnoos.com |
assez bonne | moyenne | assez bonne |
| difficulté de prise en main | difficile | facile | difficile | moyen |
| Ory Hydra | SATOSA | |
|---|---|---|
| Propriétaire | Ory | IdentityPython (SUNET, GEANT) |
| License | Apache | Apache |
| Langage | Go | Python |
| Taille en kLOC | ~50 | ~10+~70 |
| Nb commits 2022 | ~600 | ~60+~100 |
| Développeurs principaux + 10 commits/an + 5 commits/an |
1 + 3 + 2 | 1 + 2 + 4 |
| Délégation | DIY : CAS | SAML2 / OIDC |
| Protocoles en tant que fournisseur d'identité | OIDC | SAML2 / OIDC |
| Fédération IDPs SAML2 | non | aggregate / MDQ |
| Workflows | très adaptable | ? |
| documentation | bonne | bof ? |