LemonLDAP::NG, un WebSSO libre en Perl !

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

If you can't read please download the document

Transcript of LemonLDAP::NG, un WebSSO libre en Perl !

  • 1. LemonLDAP::NG Web access under protect Un WebSSO libre en Perl! Clment OUDOT Journes Perl 24 juin 2011

2. Sommaire.pm

  • Prsentation de LemonLDAP::NG

3. L'cosystme Perl 4. Hackez LemonLDAP::NG 5. Prsentation.pm 6. Historique

  • LemonLDAP a t cr en 2003 par Eric GERMAN (Ministre des Finances, France) pour remplace Novell iChain (Novell -> llevon -> Lemon)

7. Comme Novell ou SiteMinder, LemonLDAP utilise des en-ttes HTTP pour propager l'identit de l'utilisateur 8. LemonLDAP::NG est une rcriture complte de LemonLDAP par Xavier GUIMARD (Gendarmerie Nationale, France) en 2005 9. Thomas CHEMINEAU et Clment OUDOT compltent l'quipe de dveloppement 10. Fonctionnalits principales

  • Portail d'authentification

11. Menu dynamique des applications 12. Gestion du mot de passe (changement, rinitialisation, etc.) 13. Contrle d'accs par URL 14. Gnration d'en-ttes HTTP 15. Rejeu de formulaire (POST) 16. Notifications 17. Fournisseur d'identits 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 ralisant le contrle des accs 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 Cinmatique simple 1 2 3 23. Cinmatique dtaille 24. Les diffrentes bases

  • Plusieurs bases sont utilises:
  • Authentification: comment vrifier les donnes d'authentification

25. Utilisateurs: o trouver les donnes de l'utilisateur 26. Mots de passe: o changer le mot de passe de l'utilisateur Exemple d'utilisation: authentification par Kerberos, donnes de l'utilisateur dans un annuaire LDAP 27. Mthodes d'authentification

  • LemonLDAP::NG supporte de nombreuses mthodes d'authentification:
  • LDAP

28. Database 29. SSL X509 30. Apache built-in modules (Kerberos, OTP, ...) 31. SAML 2.0 32. OpenID 33. Twitter 34. CAS 35. Yubikey 36. Ecosysteme.pm 37. Les modules Perl

  • LemonLDAP::NG est avant tout bas sur Apache mod_perl et Perl CGI

38. Il utilise un trs 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 publis 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 lments (pages, scripts, etc.) sont fournis dans le sous-rpertoire example/ de chaque module 43. Surchargez camarades!

  • LemonLDAP::NG surcharge la plupart des modules pour apporter ses propres spcificits:
  • Lemonldap::NG::Common::Apache::Session: gestion de la gnration de la cl, recherche par critres, etc

44. Lemonldap::NG::Handler::CGI: gestion authentification et autorisation 45. LemonLDAP::NG::Common::Safe: activation paramtrable de la cage d'excution 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. Crer 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; }

  • Mthodes:
  • authInit

52. extractFormInfo 53. setAuthSessionInfo 54. authenticate 55. authFinish 56. authLogout 57. authForce 58. Crer son module d'authentification

  • Une fois le module cr, pour le charger, dans lemonldap-ng.ini:

authentication = Custom

  • Autres modules pouvant tre crs:
  • UserDBCustom

59. PasswordDBCustom 60. Les expressions rgulires, j'adore

  • LemonLDAP::NG utilise les expressions rgulires:
  • Pour dterminer l'URL protger

61. Pour calculer les droits 62. Pour vrifier les syntaxes des champs en entre 63. Pour afficher les modules du Menu De manire gnrale, LemonLDAP::NG value des expressions Perl pour tous les contrles d'accs 64. Fonctions tendues

  • Certaines fonctions spciales sont fournies nativement:
  • checkLogonHours

65. checkDate 66. basic 67. iso2unicode 68. unicode2iso 69. Fonctions personnalises

  • 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