Lasso Exemples
----------------------------------
SOFTWARE
This directory include a Liberty Alliance Service Provider (sample-sp)
and a Liverty Alliance Identity Provider (sample-idp) written in PHP
with the Lasso extension.
INSTALLATION
You need the fallowing components :
- The Apache Web Server with SSL support (http://www.apache.org)
- OpenSSL (http://www.openssl.org)
- PHP4 version 4.3 with OpenSSL support enabled (http://www.php.net)
- The Lasso Extension for PHP (http://lasso.entrouvert.org)
- A PostgreSQL database server (http://www.postgresql.org/)
- PHP Pear modules : DB, HTML_QuickForm, Log (http://pear.php.net)
Debian packages for the Lasso extension are available, they are included
in the current development version (sid) and packages for the current stable
version (sarge) are available in the entr'ouvert's apt repository:
deb http://www.entrouvert.org ./debian/lasso/
Add this line in your /etc/apt/sources.list and install the fallow packages :
apt-get install apache-ssl php4 php4-lasso php4-pgsql php4-pear postgresql
Pear packages can be installed with the pear command :
# pear install DB HTML_Common HTML_Form HTML_QuickForm Log
CONFIGURATION
PostgreSQL
Change user "postgres" password to access the database.
You can do this by executing in a shell :
# su - postgres
$ psql template1
template1=# ALTER USER postgres password 'new_pass';
ALTER USER
template1=# \q
Change your PostgreSQL server configuration to use passwords to
authenticate users writing in your /etc/postgresql/pg_hba.conf file:
local all all password
host all all 127.0.0.1 255.255.255.255 password
Then, restart the postmaster with /etc/init.d/postgresql restart.
# /etc/init.d/postgresql restart
Now you can create users idp and sp in postgres. Thoses users can create
database.
$ createuser -A -d -P idp
Enter password for new user:
Enter it again:
Password: <-- postgres's password used to access the database
CREATE USER
$ createuser -A -d -P sp
[ ... ]
Create databases for idp and sp.
$ createdb -U idp idp
Password: <-- idp's password
CREATE DATABASE
$ createdb -U sp sp
[ ... ]
Database setup is finished.
Copy example source code in /var/lib/www :
# cp -r sample-idp /var/www/idp
# cp -r sample-sp /var/www/sp
# chown -R www-data: /var/www/idp /var/www/sp
OpenSSL
To generate SSL certificat for the Identity Provider and the Service
Provider you need the openssl command line utility. You need to create
a certificate, a public and private key :
# cd /var/www/sp
# openssl req -out certificate_sp1.pem -keyout private-key-raw_sp1.pem -x509 -nodes -newkey rsa:2048
[ ... ]
Common Name (eg, YOUR name) []:sp1
[ ... ]
# openssl x509 -in certificate_sp1.pem -noout -pubkey > public-key_sp1.pem
# chown www-data: *.pem
# cd /var/www/idp
# openssl req -out certificate_idp1.pem -keyout private-key-raw_idp1.pem -x509 -nodes -newkey rsa:2048
[ ... ]
Common Name (eg, YOUR name) []:idp1
[ ... ]
# openssl x509 -in certificate_idp1.pem -noout -pubkey > public-key_idp1.pem
# chown www-data: *.pem
Then, copy the IdP's certificate and public key in the SP directory :
# cd /var/www
# cp -p idp/certificate_idp1.pem idp/public-key_idp1.pem sp/
Copy the SP's certificate and public key in the IdP directory :
# cd /var/www
# cp -p sp/certificate_sp1.pem sp/public-key_sp1.pem idp/
Enable PHP in Apache
Change you Apache's configuration file to load PHP as module in your
/etc/apache-ssl/modules.conf file :
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
Add Type Mime for PHP
In /etc/apache-ssl/httpd.conf write :
#
# And for PHP 4.x, use:
#
AddType application/x-httpd-php .php
PHP 4
Edit PHP 4 configuration file to enable the Lasso and Postgres extension
at the end of /etc/php4/apache/php.ini file :
extension=pgsql.so
extension=lasso.so
Configure Virtual Host in Apache
With a two virtual hosts setup, one for the IdP and another for the SP,
you can try Lasso on one physical machine.
At first we need to add two hosts in the /etc/hosts file :
127.0.0.2 idp1
127.0.0.3 sp1
In the Apache configuration file add two lines :
Listen idp1:1998
Listen sp1:2006
DocumentRoot /var/www/idp
ServerName idp1
SSLCertificateFile /var/www/idp/certificate_idp1.pem
SSLCertificateKeyFile /var/www/idp/private-key-raw_idp1.pem
DocumentRoot /var/www/sp
ServerName sp1
SSLCertificateFile /var/www/sp/certificate_sp1.pem
SSLCertificateKeyFile /var/www/sp/private-key-raw_sp1.pem
SETUP
Now launch your favorite web browser and go to :
https://idp1:1998/setup.php
or
https://sp1:2006/setup.php