English English Šiandien yra: 2017-12-16, šeštadienis
SimpleSAMLphp diegimas

Šiame straipsnyje aprašytas programos SimpleSAMLphp diegimo procesas, skirtas paruošti tinklalapį naudotis VU SSO sistema. Pateikiamame pavyzdyje SimpleSAMLphp programa bus diegiama kaip paslaugos teikėjo (SP - service provider) priemonė. 

Serveriai ir tinklalapiai gali būti sukonfigūruoti gausybe skirtingų būdų, todėl žemiau pateiktas pavyzdys netiks visais atvejais. Norint  Jūsų tinklalapyje įdiegti programą SimpleSAMLphp, gali tekti kai kuriuos veiksmus atlikti kiek kitaip, ar atlikti papildomus, pavyzdyje neaprašytus veiksmus. Daugiau informacijos (anglų kalba) apie SimpleSAMLphp diegimą galima rasti programos kūrėjų tinklalapyje, skyriuose Installing simpleSAMLphp ir Using simpleSAMLphp as a SAML Service Provider. Kai kurios turinio valdymo sistemos turi modulius, kuriuose įgyvendintas SimpleSAMLphp ar panašios programos panaudojimas. Tokiu atveju programos diegimo procesas gali labai skirtis nuo čia pavaizduoto. 

Kai kuriems aprašytiems veiksmams atlikti reikalinga prieiga prie serverio SSH protokolu. Ne kiekvieno tinklalapio administratorius turi tokią prieigą. Tokiu atveju reikėtų kreiptis pagalbos į serverio administratorius, arba įdiegti SimpleSAMLphp katalogą į tinklalapio lankytojams prieinamą erdvę. Jeigu tinklalapio resursus laikote VU žiniatinklio serveriuose, dėl SimpleSAMLphp diegimo galite kreiptis el. pašto adresu .

Naujausią SimpleSAMLphp bibliotekos versiją galima atsisiųsti iš http://code.google.com/p/simplesamlphp/.

 

0. Pavyzdyje naudojami kintamieji

 

Šiame skyrelyje pateikiami pagrindiniai pavyzdyje naudojami kintamieji. Dauguma iš jų skirsis kiekviename tinklalapyje.

  • www.tinklalapis.lt - tinklalapio adresas
  • /diegimoVieta/simpleSAMLphp - katalogas, kuriame bus įdiegta SimpleSAMLphp programa
  • www.tinklalapis.lt/single-sign-on - adresas, kuriuo bus pasiekiama įdiegtos SimpleSAMLphp programos administracinė dalis
  • default-sp - pasirinktas autentifikavimo šaltinio pavadinimas

 

1. Diegimo vietos pasiekiamumo konfigūravimas

 

SimpleSAMLphp rekomenduojama diegti tokioje vietoje, kuri nebūtų pasiekiama tinklalapio lankytojams. Programos veikimui pakanka, kad viešai pasiekiamas būtų tik jos vidinis katalogas www.

Tarkime, kad programa SimpleSAMLphp buvo įdiegta į katalogą /diegimoVieta/simplesamlphp. Jeigu šis katalogas pasiekiamas tinklalapio lankytojams, toliau šio poskyrio skaityti nereikia ir galima eiti prie kito punkto. Kitu atveju, serverio administratorius turi atlikti keletą pakeitimų, kad katalogas /diegimoVieta/simplesamlphp/www būtų pasiekiamas viešai.

Atliekami pakeitimai Apache konfigūracijoje. Atitinkamo virtualaus serverio (virtual host) konfigūracijoje sukuriame alternatyvų vardą (alias), kuris nurodys kokiu adresu bus pasiekiama SimpleSAMLphp biblioteka. Pavyzdyje nustatome, kad SimpleSAMLphp biblioteka būtų pasiekiama surinkus tinklalapio adresą ir jo gale prirašius /single-sign-on (pvz. www.tinklalapis.lt/single-sign-on).

<VirtualHost ...>
...
Alias /single-sign-on /diegimoVieta/simplesamlphp/www
<Directory "/diegimoVieta/simplesamlphp/www">
                Order deny,allow
                Allow from all
</Directory>
...
</VirtualHost>

Kad šis konfigūracijos pasikeitimas įsigaliotų, reikia perkrauti Apache.

Priklausomai nuo PHP nustatymų, gali tekti atlikti pakeitimus ir PHP konfigūraciniame faile php.ini. Jeigu naudojamas open_basedir apribojimas, prie leidžiamų naudoti vietų reikia priskirti /diegimoVieta/simplesamlphp/. Susirandame tinklalapio php.ini faile eilutę, aprašančią open_basedir ir sąrašo gale pridedame /diegimoVieta/simplesamlphp/.

open_basedir =buvoAnksčiau1:buvoAnksčiau2:/diegimoVieta/simplesamlphp/

 

2. Programos konfigūravimas

 

Reikia sukonfigūruoti pačią SimpleSAMLphp programą. Redaguojame bylą /diegimoVieta/simplesamlphp/config/config.php. Reikia susirasti ir atitinkamai pakeisti eilutes:

 

'baseurlpath'           => 'single-sign-on/',

Šioje vietoje reikia įvesti kokiu adresu per naršyklę bus pasiekiama SimpleSAMLphp biblioteka. Adresas yra reliatyvus, t.y. kas prirašoma prie tinklalapio adreso galo.

 

'tempdir'               => '/tmp/simplesaml',

Įrašome, kurioje vietoje SimpleSAMLphp gali išsaugoti laikinus (temporary) failus.

 

'auth.adminpassword'        => '*******',
'admin.protectindexpage'    => true,
'admin.protectmetadata'        => true,

Šioje vietoje įvedame SimpleSAMLphp programos administracinės dalies slaptažodį. Į administracinę dalį bus galima patekti interneto naršyklėje surinkus adresą www.tinklalapis.lt/single-sign-on. Joje galima pamatyti tam tikrus tinklalapio naudojamos PHP konfigūracijos duomenis, nustatytus autentifikavimo šaltinius ir jų metaduomenis.

 

'secretsalt' => 'atsitiktineReiksme',

Čia įrašoma atsitiktinė reikšmė, kuri bus panaudojama koduojant tam tikrus SimpleSAMLphp duomenis. Atsitiktinę reikšmę sugeneruoti galima prisijungus prie serverio, su komanda:

tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo

arba galima pasitelkti kurį nors internete skelbiamą atsitiktinių reikšmių generatorių.

 

'technicalcontact_name'     => 'Administrator',
'technicalcontact_email'    => 'na@example.org',

Šiose eilutėse galima pakeisti el. pašto adresą, kuriuo naudotojas bus raginamas išsiųsti informaciją apie kilusią klaidą programos SimpleSAMLphp veikloje. Galima pakeisti ir el. pašto adresato įvardinimą.

 

'timezone' => 'Europe/Vilnius',

Nustatome laiko zoną, pagal kurią programa apskaičiuoja laiką.

 

'logging.handler'       => 'file',

Nustatome kad SimpleSAMLphp įvykių žurnalą įrašytų į failą.  Failas bus įrašytas adresu /diegimoVieta/simplesamlphp/log/simplesamlphp.log.

Po visų pakeitimų Apache, PHP ir SimpleSAMLphp konfigūracijose, adresas www.tinklalapis.lt/single-sign-on jau turėtų būti atverčiamas interneto naršyklėje. 

 

3. Autentifikavimo šaltinio konfigūravimas

 

Reikia sukonfigūruoti autentifikavimo šaltinį, per kurį tinklalapyje įdiegta SimpleSAMLphp programa autentifikuosis VU SSO sistemoje.

Sukuriame sertifikatus, kuriuos SimpleSAMLphp programa naudos bendraudama su login.vu.lt. Einame į katalogą /diegimoVieta/simplesamlphp/cert/. Galima ištrinti server.crt ir server.pem failus. Sukuriame naują sertifikatą. Tai galima atlikti komanda:

 openssl req -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem

Po šios komandos įvykdymo bus sukurtas sertifikato failas saml.crt ir privataus rakto failas saml.pem. Šiuos failus panaudosime bendraudami su login.vu.lt.

Redaguojame failą /diegimoVieta/simplesamlphp/config/authsources.php. Galima ištrinti visą failo turinį ir jo vietoje įrašyti šį kodą:

 <?php
$config = array(
              // This is a authentication source which handles admin authentication.
              'admin' => array(
                            // The default is to use core:AdminPassword, but it can be replaced with
                            // any authentication source.
              'core:AdminPassword',
              ),

             // An authentication source which can authenticate against both SAML 2.0
             // and Shibboleth 1.3 IdPs.
             'default-sp' => array(
                            'saml:SP',
                            // The entity ID of this SP.
                            // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.
                            'entityID' => NULL,
                            // The entity ID of the IdP this should SP should contact.
                            // Can be NULL/unset, in which case the user will be shown a list of available IdPs.
                            'idp' => 'https://login.vu.lt/SSO/saml2/idp/metadata.php',
                           'privatekey' => 'saml.pem',
                           'certificate' => 'saml.crt',
              ),

);

Parametrą default-sp rekomenduojama pakeisti, pvz. tinklalapio adresu. Vėliau šio parametro gali prireikti, pvz. kuriant SimpleSAMLphp autentifikavimo objektą, ar konfigūruojant SimpleSAMLphp įskiepį.

Naudojantis VU SSO paslaugomis, idp parametru rekomenduojama nurodyti https://login.vu.lt/SSO/saml2/idp/metadata.php. Kitu atveju, naudotojui norint atlikti autentifikaciją, jam bus parodytas tapatybių teikėjų (IdP - Identitiy Provider) sąrašas.

 

4. Apsikeitimas metaduomenimis

 

Tinklalapyje įdiegtos SimpleSAMLphp programos metaduomenis reikia užregistruoti login.vu.lt sistemoje. Juos galima sužinoti tinklalapio SimpleSAMLphp programos administracinėje dalyje.

Įsijungiame interneto naršyklę ir einame adresu www.tinklalapis.lt/single-sign-on. Prisijungiame su slaptažodžiu, kurį nustatėme faile /diegimoVieta/simplesamlphp/config/config.php. Einame į skiltį Federacija (Federation). Atvertame puslapyje galima pamatyti sukonfigūruotų autentifikacijos šaltinių sąrašą. Spaudžiame ant default-sp atitinkančio šaltinio nuorodos Parodyti metaduomenis (show metadata). SimpleSAMLphp programa turėtų keliais formatais parodyti metaduomenis. Nukopijuokite SimpleSAMLphp paprasto formato metaduomenis ir juos nusiųskite el. paštu .

Po kiek laiko iš VU SSO administratorių turėtumėte gauti login.vu.lt metaduomenis. Juos reikia įrašyti į failą /diegimoVieta/simplesamlphp/metadata/saml20-idp.remote.php. Seną failo turinį galima ištrinti.

Po šių veiksmų tinklalapyje jau galima atlikti naudotojų autentifikavimą per VU SSO.

 

5. Autentifikacijos testavimas

 

Pasitikrinti, ar autentifikavimas pavyksta galima prisijungus prie SimpleSAMLphp administracinės dalies. Šiame pavyzdyje administracinė programos dalis pasiekiama adresu www.tinklalapis.lt/single-sign-on.

Einame į skiltį Autentifikavimas (Authentication). Spaudžiame ant nuorodos Testuoti nustatytus autentifikavimo šaltinius (Test authentication sources). Atvertame puslapyje turėtumėte pamatyti autentifikavimo šaltinių sąrašą. Jeigu SimpleSAMLphp konfigūravote pagal šį dokumentą, sąraše turėtų būti 2 šaltiniai: admin ir pavadinimas, kurį įrašėte vietoje default-sp faile /diegimoVieta/simplesamlphp/config/authsources.php. Pasirinkite default-sp atitikmenį.

Jeigu viskas sukonfigūruota teisingai, turėtumėte būti nukreiptas į login.vu.lt prisijungimo formą. Įvedus VU el. tapatybės duomenis, būsite grąžintas į SimpleSAMLphp administracinę dalį, kurioje galėsite pamatyti iš VU SSO gautus naudotojo duomenis.

 


Paskutinis pakeitimas: 2012-02-23 16:42:52