107
szerkesztés
Módosítások
→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>
===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.
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',
'language.default' => 'hu',
'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!
* '''log''' mappa létrehozása és jogosultság beállítása
sudo mkdir log; sudo chown www-data:adm log; sudo chmod 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,
===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.
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a <code>config/authsources.php</code> fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.
*
* This option is not used if the search.enable option is set to TRUE.
'dnpattern' => 'uid=%username%,ou=people,dc=example,dc=org',
*/
/*
* search for the username in a set of attributes. This is enabled by this option.
*/
'search.enable' => FALSETRUE,
/*
* this is left as NULL, no bind will be performed before searching.
*/
'search.username' => NULL'cn=simplesamlphp,dc=example,dc=org', 'search.password' => NULL'servicepassword', 'priv.read' => TRUE, // The DN & password the SimpleSAMLphp should bind to before // retrieving attributes. These options are required if // 'priv.read' is set to TRUE. 'priv.username' => 'cn=simplesamlphp,dc=example,dc=org', 'priv.password' => 'servicepassword;,
),
</source>
* These are stored in the cert-directory.
*/
'privatekey' => 'idp.saml-example.-org.key', 'certificate' => 'idp.saml-example.-org.crt',
/*
);
</source>
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=====AlapadatokAlapbeállítások=== A telepített alkalmazásunk által kezelt SP-ket a <code>'''config/authsources.php</code> ''' fájlban tudjuk beállítani.Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''privatekey''' / '''certificate''' részt. 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.
<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.
===Tesztelés=Metadata========Metadata fájlok====Amennyiben IdP is beállításra került, úgy A különböző metadata template fájlok a legcélszerűbb ezt összehangolni az SP'''metadata-veltemplates''' mappában találhatóak. Ehhez egyfelől A nekünk szükséges template fájlt másoljuk át a <code>metadata mappába. * '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php</code> fájlban meg kell adni ''' fájlnak. Ez a fájl tartalmazza az IdP adatait, amely esetünkben az alábbiak szerint festeléréséhez szükséges adatokat. cp metadata-templates/saml20-idp-remote.php metadata
====Metadata letöltés====
A metadata '''simplesaml''' kezdőlapon, az alá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.
<source lang="php">$metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] =array ( 'SingleLogoutService' =Metadata beállítása > array ( 0 => array (IdP és SP is 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', ), ), 'AssertionConsumerService' => array ( 0 => array ( 'index' => 0, 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',Az SSP 'Location' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-nél be kell állítani metaadat forrásként a központi metaadatotacs.php/default-sp', ), 1 => array ( 'index' => 1, 'Binding' => 'urn:oasis:names:tc:SAML:1. Erre két lehetőségünk van0:profiles:browser-post',* 'Location'=> '[[MDX]]https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp', ), 2 => array ( 'index' => 2, 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact', 'Location' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', ), 3 => array ( 'index' => 3, 'Binding'=> 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01' használata,* statikus metadata XML 'Location' => 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-ek használatasp/artifact', ), ), 'contacts' => array ( 0 => array ( 'emailAddress' => 'admin@example.org', 'contactType' => 'technical', 'givenName' => 'Example Corp. IT Dept.', ), ), 'certData' => 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',);</source>
<source lang="php">
),
</source>
===IdP===
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.
'class' => 'core:AttributeAdd',
'eduPersonScopedAffiliation' => array('member@intezmenydomain.hu')
// Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás
),
61 => array(