Módosítások

SimpleSAMLphp

5 722 bájt hozzáadva, 2018. október 29., 16:30
Letöltés
Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp(SSP) alkalmazást állítsunk üzembe.
==Telepítés==
A leírás a forrásból történő telepítés lépéseit írja le. Az itt részletezetten kívül a SimpleSAMLphp telepíthető Debian (vagy más) operációs rendszer csomagjából, de ebben az esetben ne telepítsunk composerrel third-party (pl. általunk készített) modulokat! }}
===Előkészületek===
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.
** HEXAA integrációhoz (SP): <code>soap</code>
====PHP csomagok Debian 9 / Ubuntu 16.04 LTS eseténcsomagok====
sudo apt install php php-dom mcrypt php-xml php-mbstring
Előkészületként telepíteni ====RHEL / CentOS 7 csomagok====A '''php-mcrypt''' csomaghoz engedélyezni kell a rendszerre a az "''epel-release''"-t.  sudo yum install epel-release sudo yum update sudo yum install php php-dom php-mcrypt php-xml php-mbstring php-common mod_ssl ====Composer==== A '''[https://getcomposer.org composertcomposer]'''. PHP csomagkezelőt is telepíteni kell (Akár akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.)
===Letöltés===
A GitHubról történő telepítés előnye, hogy a simplesamlphp könnyen frissíthető marad, csak a third party modulokat kell újratelepíteni. Az utolsó stabil verzió számát a https://simplesamlphp.org/download oldalról tudhatjuk meg.
{{NOTE|Jelenleg néhány saját modulunkat még nem igazítottuk az 1.15-ös kiadás változásaihoz, ezért átmenetileg az utolsó 1.14-es kiadást használjuk!}}
cd /var
git clone https://github.com/simplesamlphp/simplesamlphp.git
cd simplesamlphp
git checkout tags/v1.1416.172 -b v1.16.2
composer install --no-dev
</Directory>
===Alapbeállítások===
====Konfigurációs fájlok másolása====Mielőtt aktiváljuk valamelyik főszolgáltatását (IdP,SP...) a telepített alkalmazásnak, néhány beállítást meg kell adnunk a konfigurációs fájlban <code>config/config.php</code>és <code>config/authsources.php</code> konfigurációs fájlokban
* '''config.php''' másolása a '''config-templates''' mappából
cp config-templates/config.php config/
 
* '''authsources.php''' másolása a '''config-templates''' mappából
cp config-templates/authsources.php config/
 
<span style="color:green">A '''config.php''' és '''authsources.php''' fájlok másolása utána ellenőrizzük, hogy a SimpleSAMLphp működik-e, a https://example.org/simplesaml oldalon.</span>
 
====Konfigurációs fájlok szerkesztése====
=====Adminisztrációs adatok beállítása=====
 
Amennyiben az SimpleSAMLphp kezdőlapja hiba nélkül megjelent, akkor nyissuk meg a '''config/config.php''' fájl szerkesztésre és végezzük el az alábbi beállításokat.
 
* '''Az "admin" felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''
'auth.adminpassword' => 'ujjelszotirdide',
'timezone' => 'Europe/Budapest',
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t. =====Naplózás beállítása===== Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást. Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról gondoskodni* '''log''' mappa létrehozása és jogosultság beállítása sudo mkdir log && chgrp ; sudo chown www-data :adm log && ; sudo chmod g+w 755 log * Naplózási szint beállítása a '''config/config.php'''-ban 'debug' => array( 'saml' => true, 'backtraces' => true, 'validatexml' => false, ), 'logging.level' => SimpleSAML\Logger::DEBUG, 'logging.handler' => 'file', <span style="color:red">A "SimpleSAML\Logger::DEBUG" a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.</span> =====Tanúsítvány készítése===== <span style="color:red">Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!</span> * A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi. mkdir cert * Az alábbi paranccsal egy 10 éves [[FedCerts | self-signed tanúsítvány]] generálunk a SimpleSMALphp számára. openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key A fingerprint az alábbi módon kérdezhető le a legegyszerűbben openssl x509 -fingerprint -noout -in cert/saml-example-org.crt
===Telepítés kész===
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/ https://service.example.org/simplesaml/] címen elérjük a telepített SSP-nk webes adminfelületét, ahol megejthetjük a további beállítások nagy részét.
==Identity Provider (IdP ) beállítás=====IdP funkció engedélyezéseAlapbeállítások===A <code>'''IdP''' engedélyezése: a '''config/config.php</code> fájlt ''' fájlban kell szerkesztenünk, s engedélyezni a saml20 idp lehetőséget-t "true"-re állítani.
'enable.saml20-idp' => true,
===Alapbeállítások===  * '''authsources.php''' másolása a '''config-templates''' mappából cp config-templates/authsources.php config/===Autentikáció LDAP alaponautentikáció===
Meg kell adni, hogy az IdP milyen módon azonosítsa a felhasználót, amennyiben alapértelmezés szerint nem engedélyezett modult szeretnénk használni, úgy a megfelelő modult a <code>modules</code> könyvtár alatt engedélyezni kell. Az alábbi példában az LDAP alapú azonosítást mutatjuk be, amely külön modult nem igényel, alapértelmezés szerint része a telepített alkalmazásnak.
* These are stored in the cert-directory.
*/
'privatekey' => 'idp.saml-example.-org.key', 'certificate' => 'idp.saml-example.-org.crt',
/*
);
</source>
Teszteléshez is érdemes, éles használathoz pedig elengedhetetlen, hogy a csomagban érkezett tanúsítványt felülírjuk, ezt célszerű mihamarabb megtenni. Ehhez az alábbi parancs lehet segítségünkre.
openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out idp.example.org.crt -keyout idp.example.org.key
 
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben
openssl x509 -fingerprint -noout -in idp.example.org.crt
Megfelelő beállítások után a dinamikusan generált metadata a <code>/saml2/idp/metadata.php</code> útvonalon érhető el.
Legegyszerűbben a telepített SSP felületén tudjuk ellenőrizni, hogy a beállított autentikációs forrás működik-e. A felületen az Authentication fül alatt található egy 'Test authentication sources' link, amelyre kattintva látható minden beállított autentikációs forrás is, így a két alapértelmezett, teszt célokat szolgáló alatt a most beállított example-ldap névre hallgatónak is meg kell jelenni. (A közvetlen url erre az oldalra: simplesaml/module.php/core/authenticate.php) Ez utóbbira kattintva a beállított LDAP-ból autentikálva be kell tudnunk jelentkeznünk; siker esetén az LDAP-ból kinyerhető attribútumokat láthatjuk.
==Service Provider (SP ) beállítás==
===Alapbeállítások===
* A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' másolása fájlban tudjuk beállítani. Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''config-templatesprivatekey'''/ '' mappából, 'certificate'ha ezt korábban nem tettük meg (IdP)'' cp config-templates/authsourcesrészt.php config/
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.
===Alapadatok===
A telepített alkalmazásunk által kezelt SP-ket a <code>config/authsources.php</code> fájlban tudjuk beállítani.
<source lang="php">
'default-sp' => array(
'discoURL' => NULL,
'privatekey' => 'saml-example-org.pemkey', 'certificate' => 'saml-example-org.crt',
),
</source>
 
A fenti beállítások alapján az SP entityID-ja megegyezik a metadata elérési útvonalával (szokásos megoldás SSP-nél), nem adunk meg alapértelmezett idp-t, ezáltal az SSP választási lehetőséget kínál fel számunkra, mikor az SP-re szeretnénk bejelentkezni, ill. most még Discovery Service URL-t sem adunk meg, hanem a beépítettet használjuk. Ez utóbbit majd a HREF-be történő integrációkor meg kell változtatni - lásd lejjebb.
Az IdP beállításához hasonlóan itt is szükség lesz egy [[FedCerts | self-signed tanúsítvány]] generálására a <code>cert</code> könyvtárba. Ehhez segítség lehet az alábbi parancs.
Az SP készen áll arra, hogy összekössük egy IdP-vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-t és IdP oldalon is beállítsuk az SP metadata-t. ====Metadata========Metadata fájlok====A különböző metadata template fájlok a '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a metadata mappába. * '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php''' openssl req fájlnak. Ez a fájl tartalmazza az IdP eléréséhez szükséges adatokat. cp metadata-new templates/saml20-newkey rsa:2048 idp-remote.php metadata * '''IdP''' oldalon lennie kell egy '''metadata/saml20-x509 sp-days 3652 remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat. cp metadata-nodes templates/saml20-out saml.crt sp-keyout samlremote.pemphp metadata
===Tesztelés=Metadata letöltés====Amennyiben IdP is beállításra került, úgy a legcélszerűbb ezt összehangolni Ezen az oldalon megtaláljuk az SPvagy IdP-velre vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module. Ehhez egyfelől a <code>php/saml/sp/metadata/saml20-idp-remote.php</code> fájlban meg kell adni az default-sp?output=xhtml ====SP metadata beállítás IdP adataitoldalon==== A metadata '''simplesaml''' kezdőlapon, amely esetünkben az alábbiak szerint festalábbi helyen érhető el:* Magyar nyelv esetén: "Föderáció" fül / "SAML 2.0 SP Metaadatok" pont alatt a "Mutasd a metaadatokat" linkre kattintva juthatunk el a fenti menüponthoz.* Angol nyelv esetén: "Federation" fül / "SAML 2.0 SP Metadata" pont alatt a "Show metadata" linkre kattintva juthatunk el a fenti menüponthoz.  A "''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''" mezőből tegyük a vágólapra az alábbi PHP kódot:
<source lang="php">
$metadata['https://example.org/simplesaml/saml2module.php/saml/idpsp/metadata.php/default-sp'] = array( 'nameSingleLogoutService' => array( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'enLocation' => 'TestSPhttps://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', ), ), 'AssertionConsumerService' => array ( 0 => array ( 'index' => 0, 'SingleSignOnServiceBinding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/idpdefault-sp', ), 1 => array ( 'index' => 1, 'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post', 'Location' => 'https://example.org/simplesaml/SSOServicemodule.php/saml/sp/saml1-acs.php/default-sp', ), 2 => array ( 'index' => 2, 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact', 'SingleLogoutServiceLocation' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/idpdefault-sp', ), 3 => array ( 'index' => 3, 'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01', 'Location' => 'https://example.org/SingleLogoutServicesimplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact', ), ), 'certFingerprintcontacts' => array ( 0 => array ( 'afe71c28ef740bc87425be13a2263d37971da1f9emailAddress'=> 'admin@example.org', 'contactType' => 'technical', 'givenName' => 'Example Corp. IT Dept.', ), ), 'certData' => 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==', );
</source>
A vágólapra másolt kódot IdP oldalon, a '''metadata/saml20-sp-remote.php''' fájl végére illesszük be.
Ehhez hasonlóan a <code>====IdP metadata beállítás SP oldalon==== A metadata'''simplesaml''' kezdőlapon, az alábbi helyen érhető el:* Magyar nyelv esetén: "Föderáció" fül /saml20-sp-remote"SAML 2.0 IdP Metaadatok" pont alatt a "Mutasd a metaadatokat" linkre kattintva juthatunk el a fenti menüponthoz.php<* Angol nyelv esetén: "Federation" fül /code> fájlban meg kell adnunk az SP adatait"SAML 2.0 IdP Metadata" pont alatt a "Show metadata" linkre kattintva juthatunk el a fenti menüponthoz. Teszteléshez   A "''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''" mezőből tegyük a vágólapra az alábbiak elegendőkalábbi PHP kódot:
<source lang="php">
$metadata['https://idp.example.org/simplesaml/module.php/samlsaml2/spidp/metadata.php/default-sp'] = array ( 'AssertionConsumerServicemetadata-set' => 'saml20-idp-remote', 'entityid' => 'https://idp.example.org/simplesaml/modulesaml2/idp/metadata.php', 'SingleSignOnService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https:/saml/spidp.example.org/simplesaml/saml2-acs/idp/SSOService.php/default-sp', ), ), 'SingleLogoutService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://idp.example.org/simplesaml/module.phpsaml2/samlidp/sp/saml2-logoutSingleLogoutService.php/default', ), ), 'certData' => 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-spformat:transient', );
</source>
A vágólapra másolt kódot SP oldalon, a '''metadata/saml20-idp-remote.php''' fájl végére illesszük be.
 
===Tesztelés===
 
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.
 
SP oldalon nyissuk meg a '''simplesaml''' kezdőlapot:
 
* Magyar nyelv esetén: "Azonosítás (autentikáció)" fül / "Azonosítási (autentikációs) beállítások tesztelése" link / "default-sp" link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.
* Angol nyelv esetén: "Authentication" fül / "Test configured authentication sources" link / "default-sp" link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.
 
A legördülő menüben az IdP-nk "nevére" kattintva, be kell tudnunk jelentkezni (az IdP-n keresztül). Ha működik, akkor az IdP visszairányít az SP-re, kiírja az azonosított felhasználó attribútumait.
Ezek után az IdP tesztelésénél már említett oldalon a default-sp opciót kiválasztva, majd a legördülő menüben a TestSP-re kattintva be kell tudnunk jelentkezni az IdP-n keresztül. Ha működik, akkor az Az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő IdP-nk.
==HREF-integráció==

Navigációs menü