English English Šiandien yra: 2017-04-28, penktadienis
SimpleSAMLphp panaudojimo pavyzdys

Šiame straipsnyje pateiktas paprastas jau įdiegtos ir sukonfiguruotos SimpleSAMLphp bibliotekos panaudojimo pavyzdys PHP aplinkoje. Pavyzdyje parodyta, kaip naudotojui suteikti galimybę autentifikuotis ir kaip prieiti prie atpažinto naudotojo atributų. Pilną pavyzdžio kodą rasite čia. Žemiau pateikiamas su autentifikavimu susijęs PHP kodo blokas ir jo paaiškinimas.

<?php
$lib = '/keliasIkiSimpleSAMLphpDiegimoVietos/lib/_autoload.php';
$authID = 'default-sp';

include $lib;
$auth =  new SimpleSAML_Auth_Simple($authID);
if (!$auth –> isAuthenticated())
    {
    echo '<a href="'.$auth –> getLoginURL().'">Prisijungti</a>';
    }
else
    {
    $attributes = $auth –> getAttributes();
    echo 'Jūsų el. pašto adresas: ';
    echo $attributes['mail'][0];
    echo '<br><br>';
    echo 'Visas jūsų atributų masyvas:';
    echo '<pre>';
    print_r($attributes);
    echo '</pre>';
    echo '<a href="'.$auth –> getLogoutURL().'">Atsijungti</a>';
    }
?>

 

Pirmosios kodo bloko eilutės apibrėžia su SimpleSAMLphp konfigūracija susijusius kintamuosius. Jų reikšmės skirsis kiekviename tinklalapyje, priklausomai nuo SimpleSAMLphp konfigūracijos ir diegimo vietos.

 

$lib = '/keliasIkiSimpleSAMLphpDiegimoVietos/lib/_autoload.php';

Kintamasis $lib nurodo kelią į SimpleSAMLphp biblioteką. Norint naudotis SimpleSAMLphp autentifikavimo priemonėmis, reikia į kodą įtraukti bylą _autoload.php.

 

$authID = 'default-sp';

$authID nurodo autentifikavimo šaltinį. Standartinė reikšmė yra default-sp.

 

include $lib;

Šia eilute į kodą įtraukiama SimpleSAMLphp priemonių biblioteka.

 

$auth =  new SimpleSAML_Auth_Simple($authID);

Sukuriame SimpleSAMLphp autentifikavimo priemonių objektą. Kuriant klasės SimpleSAML_Auth_Simple objektą, konstruktoriui reikia paduoti parametrą, nurodantį autentifikacijos šaltinį. Mūsų pavyzdyje autentifikacijos šaltinio identifikatorius saugomas kintamajame $authID. Nuo šiol visas SimpleSAMLphp funkcijas kviesime per kintamąjį $auth.

 

if (!$auth –> isAuthenticated())

Patikriname, ar naudotojas įvykdė autentifikaciją. Mūsų pavyzdyje prieš funkciją isAuthenticated() įrašytas neigimo operatorius (!). Dėl to, šiuo atveju, pirma aprašomas kodas, vykdomas tada, kai lankytojas dar nėra autentifikuotas. 

 

    {
    echo '<a href="'.$auth –> getLoginURL().'">Prisijungti</a>';
    }

Jeigu naudotojas dar neatliko autentifikacijos, suformuojame nuorodą į VU vieningo prisijungimo sistemą, pasinaudodami getLoginURL() metodu. Ant nuorodos „Prisijungti" paspaudęs tinklalapio lankytojas pateks į login.vu.lt tinklalapį, kur jo bus paprašyta įvesti prisijungimo duomenis.

 

else
    {
    $attributes = $auth –> getAttributes();
    echo 'Jūsų el. pašto adresas: ';
    echo $attributes['mail'][0];
    echo '<br><br>';
    echo 'Visas jūsų atributų masyvas:';
    echo '<pre>';
    print_r($attributes);
    echo '</pre>';
    echo '<a href="'.$auth –> getLogoutURL().'">Atsijungti</a>';
    }

Šis kodo blokas vykdomas tik tada, kai naudotojas yra atpažintas VU SSO sistemoje. 

 

$attributes = $auth –> getAttributes(); 

Jeigu naudotojas sėkmingai autentifikavosi, galime iš autentifikavimo sistemos pasiimti tam tikrus naudotojo atributus. Tam pasitelkiame metodą getAttributes(). Pavyzdyje atributus išsaugome į kintamąjį $attributes.

 

echo $attributes['mail'][0];

Išsaugotus atributus galime panaudoti, pvz. išspausdinti į ekraną. Aukščiau pateikta eilutė atspausdina naudotojo elektroninio pašto adresą. Dauguma atributų turi savo reikšmių masyvą, nors dažnai tokiame masyve saugomas tik vienas elementas. Dėl bendros atributų saugojimo schemos, prie $attributes['mail'] reikėjo prirašyti masyvo pirmojo elemento numerį [0].

 

echo '<pre>';
print_r($attributes);
echo '</pre>';

Šios eilutės, santykinai suprantama forma, išveda į ekraną visą gautą atpažinto naudotojo atributų masyvą. HTML žymės <pre> čia naudojamos tik tam, kad reikšmių masyvas būtų išspausdintas suprantamesne forma. Masyvo išvedimas į ekraną atliekamas komanda print_r()

 

echo '<a href="'.$auth –> getLogoutURL().'">Atsijungti</a>';    

Suformuojame nuorodą, kad naudotojas galėtų atsijungti nuo autentifikavimo sistemos. Šiam tikslui pasitelkiame  metodą getLogoutURL().

 

SimpleSAML_Auth_Simple klasė turi daugiau metodų, kuriais naudojantis galima atlikti autentifikaciją. Aprašytame pavyzdyje naudotojas į login.vu.lt nukreipiamas paspaudęs ant nuorodų, kurioms sugeneruoti buvo naudojami metodai getLoginURL() ir getLogoutURL(). Alternatyva specialių nuorodų sukūrimui yra tiesiogiai nukreipti naudotoją į autentifikavimo sistemą, naudojantis funkcijomis login() ir logout(). Priverstinį autentifikavimą galima vykdyti pasitelkiant metodą requireAuth(). Tokiu atveju, autentifikacijos dar neatlikęs naudotojas bus automatiškai nukreipiamas į autentifikavimo sistemą.

Daugiau apie SimpleSAMLphp autentifikacijai skirtą klasę SimpleSAML_Auth_Simple sužinoti galite programos kūrėjų tinklalapyje.


Paskutinis pakeitimas: 2012-02-23 15:35:18