LemonLDAP::NG, un WebSSO libre‎ en Perl !

  • 1,723 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,723
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
33
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. LemonLDAP::NG Web access under protect Un WebSSO libre en Perl ! Clément OUDOT Journées Perl – 24 juin 2011
  • 2. Sommaire.pm
    • Présentation de LemonLDAP::NG
    • 3. L'écosystème Perl
    • 4. Hackez LemonLDAP::NG
  • 5. Présentation.pm
  • 6. Historique
    • LemonLDAP a été créé en 2003 par Eric GERMAN (Ministère des Finances, France) pour remplace Novell iChain (Novell -> llevon -> Lemon)
    • 7. Comme Novell ou SiteMinder, LemonLDAP utilise des en-têtes HTTP pour propager l'identité de l'utilisateur
    • 8. LemonLDAP::NG est une réécriture complète de LemonLDAP par Xavier GUIMARD (Gendarmerie Nationale, France) en 2005
    • 9. Thomas CHEMINEAU et Clément OUDOT complètent l'équipe de développement
  • 10. Fonctionnalités principales
    • Portail d'authentification
    • 11. Menu dynamique des applications
    • 12. Gestion du mot de passe (changement, réinitialisation, etc.)
    • 13. Contrôle d'accès par URL
    • 14. Génération d'en-têtes HTTP
    • 15. Rejeu de formulaire (POST)
    • 16. Notifications
    • 17. Fournisseur d'identités
  • 18. Parlons technique
    • LemonLDAP::NG repose sur trois composants :
      • Le portail (Portal) : interface d'authentification, menu des applications, changement de mot de passe
      • 19. Le handler (Handler) : agent réalisant le contrôle des accès aux applications Web
      • 20. Le manager (Manager) : interface de configuration, explorateur de sessions et de notifications
  • 21. Vue macroscopique
  • 22. Utilisateur Application Web Portail WebSSO Cinématique simple 1 2 3
  • 23. Cinématique détaillée
  • 24. Les différentes bases
    • Plusieurs « bases » sont utilisées :
      • Authentification : comment vérifier les données d'authentification
      • 25. Utilisateurs : où trouver les données de l'utilisateur
      • 26. Mots de passe : où changer le mot de passe de l'utilisateur
    • Exemple d'utilisation : authentification par Kerberos, données de l'utilisateur dans un annuaire LDAP
  • 27. Méthodes d'authentification
    • LemonLDAP::NG supporte de nombreuses méthodes d'authentification :
  • 36. Ecosysteme.pm
  • 37. Les modules Perl
    • LemonLDAP::NG est avant tout basé sur Apache mod_perl et Perl CGI
    • 38. Il utilise un très grand nombre de modules Perl : Apache::Session, Net::LDAP, MIME::Base64, LWP::UserAgent, Cache::Cache, DBI, XML::Simple, CGI::Session, Regexp::Assemble, XML::LibXML, Crypt::Rijndael, IO::String, XML::LibXSLT, HTML::Template,SOAP::Lite, Config::IniFiles, JSON, Digest::HMAC, Crypt::OpenSSL::RSA, Crypt::OpenSSL::X509, Convert::PEM, Clone, MIME::Lite, Net::SMTP, String::Random, Net::OpenID, Net::Twitter, ...
  • 39. CPAN
    • Les modules Perl LemonLDAP::NG sont publiés sur le CPAN :
      • http://search.cpan.org/dist/Lemonldap-NG-Common/
      • 40. http://search.cpan.org/dist/Lemonldap-NG-Handler/
      • 41. http://search.cpan.org/dist/Lemonldap-NG-Manager/
      • 42. http://search.cpan.org/dist/Lemonldap-NG-Portal/
    • Les autres éléments (pages, scripts, etc.) sont fournis dans le sous-répertoire example/ de chaque module
  • 43. Surchargez camarades !
    • LemonLDAP::NG surcharge la plupart des modules pour apporter ses propres spécificités :
      • Lemonldap::NG::Common::Apache::Session : gestion de la génération de la clé, recherche par critères, etc
      • 44. Lemonldap::NG::Handler::CGI : gestion authentification et autorisation
      • 45. LemonLDAP::NG::Common::Safe : activation paramétrable de la cage d'exécution
      • 46. Lemonldap::NG::Portal::OpenID::Server
      • 47. Lemonldap::NG::Portal::_LDAP
      • 48. ...
  • 49. Hackez.pm
  • 50. CGI Perl my $cgi = Lemonldap::NG::Handler::CGI->new ({}); $cgi->authenticate(); $cgi->authorize(); # Get attributes (or macros) my $cn = $cgi->user->{cn} # Test if user is member of a Lemonldap::NG group (or LDAP mapped group) if( $cgi->group('admin') ) { # special html code for admins } else { # another HTML code }
  • 51. Créer son module d'authentification package Lemonldap::NG::Portal::AuthCustom; use Lemonldap::NG::Portal::Simple; sub authInit { PE_OK; } sub extractFormInfo { PE_OK; } sub setAuthSessionInfo { PE_OK; } sub authenticate { PE_OK; } sub authFinish { PE_OK; } sub authLogout { PE_OK; }
  • 58. Créer son module d'authentification
    • Une fois le module créé, pour le charger, dans lemonldap-ng.ini :
    authentication = Custom
    • Autres modules pouvant être créés :
      • UserDBCustom
      • 59. PasswordDBCustom
  • 60. Les expressions régulières, j'adore
    • LemonLDAP::NG utilise les expressions régulières :
      • Pour déterminer l'URL à protéger
      • 61. Pour calculer les droits
      • 62. Pour vérifier les syntaxes des champs en entrée
      • 63. Pour afficher les modules du Menu
    • De manière générale, LemonLDAP::NG évalue des expressions Perl pour tous les contrôles d'accès
  • 64. Fonctions étendues
    • Certaines fonctions spéciales sont fournies nativement :
  • 69. Fonctions personnalisées
    • Il est possible de charger sa propre librairie Perl (custom functions) :
    package SSOExtensions; sub function1 { my $portal = shift; my $param = shift; # Your nice code here return $param } 1;
  • 70. JoinUs.pm http://lemonldap-ng.org IRC #lemonldap-ng @freenode
  • 71. Questions.pm