Kako implementirati autentikaciju putem sustava AAI@EduHr u PHP aplikacijama?

 

Autor: Dubravko Vončina

Datum zadnje izmjene: 23.10.2013.

Sadržaj:

Autentikacijski modul:

U sustavu AAI@EduHr za implementaciju SSO autentikacijskog modula u PHP aplikacijama koristi se programski alat simpleSAMLphp.

Navedeni programski alat može se instalirati iz paketa ili ručno, raspakiravanjem arhive koja sadrži simpleSAMLphp i pripadajuće konfiguracijske datoteke u odgovarajući direktorij. U nastavku su opisane procedure instalacije iz paketa i ručne instalacije.

Za primjenu u sustavu AAI@EduHr službeno su podržane sljedeće verzije programskog alata simpleSAMLphp:

  • simpleSAMLphp 1.6.3 - isključivo verzija iz paketa za Debian 'squeeze' distribuciju;

  • simpleSAMLphp 1.9.2 - za instalaciju iz paketa na Debian 'wheezy' distribuciji i za ručnu instalaciju raspakiravanjem odgovarajuće arhive;

Ostale verzije programskog alata simpleSAMLphp nisu podržane od strane AAI@EduHr tima.


Instalacija programskog alata simpleSAMLphp iz paketa:

Ako se vaša aplikacija nalazi na poslužitelju s CARNetovom distribucijom Debian Linux operacijskog sustava, poželjno je da simpleSAMLphp instalirate iz instalacijskog paketa uporabom naredbe:

apt-get install simplesamlphp-aai

Nakon instalacije iz paketa, simpleSAMLphp 1.6.3 ima konfiguraciju unaprijed prilagođenu uporabi u produkcijskom AAI@EduHr okruženju, dok je za uporabu u testnom okruženju potrebno podesiti konfiguracjiske parametre prema uputama na web stranici:


https://fed-lab.aaiedu.hr/upute.html


U instalacijskom paketu koji sadrži simpleSAMLphp 1.9.2 već su unaprijed uneseni konfiguracijski parametri za autentikaciju i u produkcijskom i u testnom okruženju.


Ručna instalacija programskog alata simpleSAMLphp:

Ako se vaša aplikacija ne nalazi na poslužitelju s CARNetovom distribucijom Debian Linux operacijskog sustava, arhiva s programskim alatom simpleSAMLphp iskonfiguriranim za uporabu u sustavu AAI@EduHr dostupna je na adresi:


http://developer.aaiedu.hr/download/simplesamlphp-1.9.2-aai.tar.gz


U nastavku uputa podrazumjevat ćemo da ste prethodno navedenu arhivu raspakirali u direktorij /var/www/. Ako ste simpleSAMLphp instalirali u neki drugi direktorij, u daljnim uputama jednostavno zamijenite direktorij /var/www/ direktorijem u kojem ste instalirali simpleSAMLphp. Nakon raspakiravanja arhive potrebno je napraviti sljedeće:

  • kreirajte alias:

    ln -s /var/www/simplesamlphp-1.9.2-aai /var/www/simplesamlphp


  • podesite da Apache ima dozvolu pisanja u datoteku simplesamlphp.log:

    chown root:apache /var/www/simplesamlphp/log/simplesamlphp.log

    chmod 620 /var/www/simplesamlphp/log/simplesamlphp.log


  • u datoteci:

    /var/www/simplesamlphp/config/config.php


    postavite odgovarajuće vrijednosti parametara 'auth.adminpassword', 'technicalcontact_name' i 'technicalcontact_email';

  • U odgovarajućoj konfiguracijskoj datoteci Apache poslužitelja (standardno httpd.conf) za vaš web dodajte liniju:

    Alias /simplesaml /var/www/simplesamlphp/www


    i nakon toga učitajte novu konfiguraciju Apache poslužitelja ili jednostavno restartajte poslužitelj;


Registracija novog resursa u sustavu AAI@EduHr:

Da bi autentikacija kroz sustav AAI@EduHr bila omogućena, potrebno je zatražiti registraciju novog resursa u sustavu AAI@EduHr prema uputama na stranici:


http://developer.aaiedu.hr/faq/sso_registracija.html


Parametre koje je prilikom registracije resursa potrebno upisati u odjeljku SAML metapodaci možete saznati na način da se web preglednikom prijavite u sučelje za administratore programskog alata simpleSAMLphp koje bi se, ovisno o nazivu poslužitelja, trebalo nalaziti na adresi:


http(s)://fqdn_naziv_posluzitelja/simplesaml/


Ako ste simpleSAMLphp instalirali iz paketa, zaporku za prijavu u administratorsko sučelje možete pronaći u datoteci:


/var/lib/simplesamlphp/secrets.inc.php


Ako ste simpleSAMLphp instalirali ručno, zaporka za prijavu u administratorsko sučelje zapisana je kao vrijednost parametra 'auth.adminpassword' u datoteci /var/www/simplesamlphp/config/config.php

Nakon što se prijavite u administratorsko sučelje, kliknite na karticu Federacija (engl. Federation). Otvorit će vam se sučelje kao na sljedećoj slici:



s tri odjeljka u kojima su definirani metapodaci ovisno o tome koji autentikacijski servis vaša aplikacija treba koristiti:

  • default-sp - metapodaci koji opisuju vašu aplikaciju u slučaju da za autentikaciju koristite produkcijski AAI@EduHr SSO servis;

  • proxy-sp - metapodaci koji opisuju vašu aplikaciju u slučaju da za autentikaciju želite koristiti društvene mreže;

  • fedlab-sp - metapodaci koji opisuju vašu aplikaciju u slučaju da za autentikaciju koristite testni SSO servis;

Za svaku grupu metapodataka navedena je vrijednost parametra Entity ID kojeg treba unijeti u polje Jedinstveni identifikator resursa prilikom postavljanja zahtjeva za registracijom novog resursa.

Klikom na opciju Prikaži metapodatke (engl. Show Metadata) otvorit će vam se stranica s prikazom metapodataka u XML i simpleSAMLphp formatu na kojoj možete pronaći vrijednosti preostalih dvaju parametara (AssertionConsumerService URL i SingleLogoutService URL) koje je potrebno unijeti prilikom popunjavanja zahtjeva za registracijom novog resursa:



Obzirom da većina novoregistriranih resursa najprije treba proći kroz fazu razvoja i testiranja, prilikom registracije novog resursa najprije je u registru potrebno unijeti metapodatke za testni SSO servis, odnosno fedlab-sp metapodatke.

Kada servis bude spreman za produkciju, u registru resursa je potrebno ažurirati SAML metapodatke na način da se podaci za testni SSO servis zamijene podacima koji odgovaraju produkcijskom SSO servisu, odnosno default-sp metapodacima.

Metapodaci za proxy-sp odnose se na servis koji, osim autentikacije korisnika putem sustava AAI@EduHr, omogućuje i autentikaciju korisnika putem pojedinih društvenih mreža. Za više informacija o tom servisu kontaktirajte nas elektroničkom poštom na team@aaiedu.hr


Primjer korištenja:

Primjere PHP skripti index.php i logout.php koje demonstriraju uporabu programskog alata simpleSAMLphp za prijavu i odjavu korisnika možete pronaći u arhivi dostupnoj na adresi:

http://developer.aaiedu.hr/download/authdemo.tar.gz


Ovisno o tome gdje je na vašem poslužitelju instaliran simpleSAMLphp, na početku obje skripte unutar naredbe require_once() trebate postaviti odgovarajuću putanju do skripte _autoload.php. Primjerice, ako ste simpleSAMLphp instalirali iz paketa, ispravna putanja trebala bi biti:


require_once('/usr/share/simplesamlphp/lib/_autoload.php');


Analogno, ako ste simpleSAMLphp instalirali ručno (npr. u direktorij /var/www/), trebate navesti putanju sukladno direktoriju u kojem ste instalirali simpleSAMLphp:

require_once('/var/www/simplesamlphp/lib/_autoload.php');


Bitno je naglasiti da je u skriptama standardno postavljeno da se autentikacija vrši putem testnog autentikacijskog servisa namijenjenog aplikacijama koje se nalaze u fazi razvoja i testiranja jer se podrazumijeva da sve nove aplikacije koje žele koristiti sustav AAI@EduHr za autentikaciju korisnika najprije trebaju proći kroz fazu testiranja.

Obzirom da se u testnom okruženju iz sigurnosnih razloga ne mogu koristiti produkcijski AAI@EduHr elektronički identiteti, kreiranje testnih elektroničkih identiteta možete zatražiti putem web forme na adresi


https://fed-lab.aaiedu.hr/zahtjev.php?show=zahtjev_identitet


Nakon što aplikacija prođe kroz fazu razvoja i testiranja, u produkcijsko AAI@EduHr okruženje ju možete uključiti na način da u skriptama za prijavu i odjavu korisnika liniju

$as = new SimpleSAML_Auth_Simple('fedlab-sp');

zamijenite linijom

$as = new SimpleSAML_Auth_Simple('default-sp');


te putem registra resursa zatražite promjenu statusa resursa iz test u produkcija.

Za sve dodatne informacije, rješavanje problema i bilo kakvih eventualnih nejasnoća kontaktirajte nas elektroničkom poštom na team@aaiedu.hr.