NAME

Lemonldap::NG::Portal::AuthLA - Provide Liberty Alliance Authentication for FederID project.

SYNOPSIS

use Lemonldap::NG::Portal::AuthLA;
my $portal = Lemonldap::NG::Portal::AuthLA->new({
  configStorage => {
    type => 'DBI',
    dbiChain => "dbi:mysql:...",
    dbiUser => "lemonldap",
    dbiPassword => "password",
    dbiTable => "lmConfig",
  } ,

  # Liberty Parameters
  laSp => {
    certificate => '/path/to/public/key.pem' ,
    metadata => '/path/to/metadata.xml' ,
    privkey => '/path/to/private/key.pem' ,
    secretkey => '/path/to/private/key.pem' ,
  } ,
  laIdpsFile => '/path/to/idps/file.xml' ,
  laStorage => 'Apache::Session::File',
  laStorageOptions => {
    Directory => '/path/to/session/directory' ,
    LockDirectory => '/path/to/lockedsession/directory' ,
  } ,
  laDebug => 1 ,
  laLdapLoginAttribute => 'uid' ,

  # Parameters that permit to access lemonldap::NG::Handler local cache
  localStorage            => 'Cache::FileCache' ,
  localStorageOptions     => {} ,
});

if( $portal->process() ) {
  # Print protected URLs
  print $portal->header ;
  print "<a href=\"http://$_\"> $_</a><br/>"
    foreach ($portal->getProtectedSites) ;

} else {
  print $portal->header ;
  print '...' ;

  # Print simple template
  print 'Simple Authentication<br/>' ;
  print '<input type="hidden" name="url" value="' . $portal->param('url') . '"/>' ;
  print 'Login :' ;
  if ($portal->param('user')) {
    print '<input type="hidden" name="user" value="' . $portal->param('user') . '"/>' ;
  } else {
    print '<input type="hidden" name="user"/>' ;
  }
  print 'Password : <input name="password" type="password" autocomplete="off">' ;

  # Retrieve IDP list.
  my @idps = () ;
  foreach ($portal->getIdpIDs) {
    my %row_data ;
    $row_data{IDPNAME} = $_ ;
    push (@idps, \%row_data) ;
  }
  @idps = sort {$a cmp $b} @idps ;

  # Print SSO template
  print 'SSO Authentication<br/>' ;
  print '<select name="idpChoice"><option value="null">Select IDP</option>' ;
  foreach (@idps) {
    print '<option value="' . $_ . '">' . $_ . '</option>' ;
  }

  print '<input type="submit" value="ok" />' ;
  print '</form>' ;
}

DESCRIPTION

Lemonldap::NG::Portal::AuthLA is the base module for building Lemonldap::NG compatible portals using a authentication mechanism based on Liberty Alliance. You have to use by inheritance.

SEE ALSO

Lemonldap::NG::Portal::SharedConf, Lemonldap::NG::Portal, Lemonldap::NG::Handler, Lemonldap::NG::Manager, http://wiki.lemonldap.objectweb.org/xwiki/bin/view/NG/Presentation

AUTHOR

Clement Oudot, <coudot@linagora.com> Mikaël Ates, <mikael.ates@univ-st-etienne.fr> Thomas Chemineau, <tchemineau@linagora.com>

BUG REPORT

Use OW2 system to report bug or ask for features: http://forge.objectweb.org/tracker/?group_id=274

DOWNLOAD

Lemonldap::NG is available at http://forge.objectweb.org/project/showfiles.php?group_id=274

COPYRIGHT AND LICENSE

Copyright (C) 2007 by FederID Consortium, <mail@FederID>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 1363:

Non-ASCII character seen before =encoding in 'Mikaël'. Assuming UTF-8