Módosítások

SimpleSAMLphp

5 379 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.
* PHP futtatására alkalmas webszerver
* PHP környezet (legalább >=5.2.0 verzió4)
* A következő PHP kiterjesztéseket engedélyezni kell
** <code>date</code>, <code>dom</code>, <code>hash</code>, <code>libxml</code>, <code>openssl</code>, <code>pcre</code>, <code>SPL</code>, <code>zlib</code>
** Assertion-ök titkosítása esetén: <code>mcrypt</code>
** Memcache használata esetén: <code>memcache</code>
** HEXAA integrációhoz (SP): <code>soap</code>
 
====Debian 9 / Ubuntu 16.04 LTS csomagok====
 
sudo apt install php php-dom mcrypt php-xml php-mbstring
 
====RHEL / CentOS 7 csomagok====
A '''php-mcrypt''' csomaghoz engedélyezni kell 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 composer]''' PHP csomagkezelőt is telepíteni kell (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 legfrissebb változat letölthető [httpGitHubró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://code.googlesimplesamlphp.com/p/simplesamlphporg/ http://code.googledownload oldalról tudhatjuk meg.com/p/simplesamlphp/] címről
cd /var
tar xzf git clone https://github.com/simplesamlphp/simplesamlphp-1.x.y.tar.gzgit mv cd simplesamlphp git checkout tags/v1.16.2 -1b v1.x16.y simplesamlphp2 Alapértelmezés szerint a <code>/var/simplesamlphp</code> alatt szeretne majd működni, ez természetesen változtatható, de most maradunk az eredeti beállításoknál. composer install --no-dev
===Apache konfigurálás===
A webről csak a <code>/var/simplesamlphp/www</code> könyvtárat kell elérni.'''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!
Alias /simplesaml /var/simplesamlphp/www
<Directory /var/simplesamlphp/www>
Require all granted
</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 <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.
===Alapbeállítások===
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>.
* '''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.
<source lang="php">
'example-ldap' => array(
'ldap:LDAP',
*
* This option is not used if the search.enable option is set to TRUE.
'dnpattern' => 'uid=%username%,ou=people,dc=example,dc=org',
*/
'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>
===Metaadat alapok===
A beállítandó IdP alapvető paraméterei a <code>metadata/saml20-idp-hosted.php</code> fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.
<source lang="php">
$metadata['__DYNAMIC:1__'] = array(
/*
* These are stored in the cert-directory.
*/
'privatekey' => 'idp.saml-example.-org.key', 'certificate' => 'idp.saml-example.-org.crt',
/*
'auth' => 'example-ldap',
);
 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 -x509 -days 3652 -nodes -out idp.example.org.crt -keyout idp.example.org.keyA fingerprint az alábbi módon kérdezhető le a legegyszerűbben openssl x509 -fingerprint -noout -in idp.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(
'saml:SP',
'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 tanúsítvány generálására a <code>cert</code> könyvtárba. Ehhez segítség lehet az alábbi parancs.
openssl req Az SP készen áll arra, hogy összekössük egy IdP-new vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-x509 -days 3652 -nodes -out saml.crt t és IdP oldalon is beállítsuk az SP metadata-keyout samlt.pem
===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 '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a legcélszerűbb ezt összehangolni az metadata mappába. * '''SP''' oldalon lennie kell egy''' metadata/saml20-velidp-remote.php''' fájlnak. Ehhez egyfelől Ez a <code>fájl tartalmazza az IdP eléréséhez szükséges adatokat. cp metadata-templates/saml20-idp-remote.php<metadata * '''IdP''' oldalon lennie kell egy '''metadata/code> fájlban meg kell adni saml20-sp-remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat. cp metadata-templates/saml20-sp-remote.php metadata ====Metadata letöltés==== Ezen az oldalon megtaláljuk az SP vagy IdP adatait-re vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp?output=xhtml ====SP metadata beállítás IdP oldalon==== 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( 'enBinding' => 'TestSPurn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', ), ), 'SingleSignOnServiceAssertionConsumerService' => array ( 0 => array ( 'index' => 0, 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', ), 1 => array ( 'index' => 1, 'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post', 'Location' => 'https:/idp/SSOServiceexample.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp', ), 2 => array ( 'index' => 2, 'Binding' => 'SingleLogoutServiceurn: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', 'Location' => 'https://example.org/simplesaml/module.php/idpsaml/SingleLogoutServicesp/saml1-acs.php/default-sp/artifact', ), ), 'certFingerprintcontacts' => array ( 0 => array ( 'afe71c28ef740bc87425be13a2263d37971da1f9emailAddress'=> 'admin@example.org', 'contactType' => 'technical', 'givenName' => 'Example Corp. IT Dept.', ), ), 'certData' => 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==', );</source>
Ehhez hasonlóan A vágólapra másolt kódot IdP oldalon, a <code>'''metadata/saml20-sp-remote.php</code> fájlban meg kell adnunk az SP adatait''' fájl végére illesszük be. Teszteléshez az alábbiak elegendők:
$====IdP metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] beállítás SP oldalon== array ( 'AssertionConsumerService' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', 'SingleLogoutService' => 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', );
Ezek után A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:* Magyar nyelv esetén: "Föderáció" fül / "SAML 2.0 IdP tesztelésénél már említett oldalon Metaadatok" pont alatt a default-sp opciót kiválasztva, majd "Mutasd a legördülő menüben metaadatokat" linkre kattintva juthatunk el a TestSP-re kattintva be kell tudnunk jelentkezni az IdP-n keresztülfenti menüponthoz.* Angol nyelv esetén: "Federation" fül / "SAML 2. Ha működik, akkor az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő 0 IdP-nkMetadata" pont alatt a "Show metadata" linkre kattintva juthatunk el a fenti menüponthoz.
==HREF-integráció==
===Metadata beállítása (IdP és SP is)===* Az SSPA "''SimpleSAMLphp fájl formátumban -nél be kell állítani metaadat forrásként akkor használható, ha a központi metaadatot:*Első lépésként engedélyezzük, hogy az SSP automatikusan frissíthesse másik oldalon SimpleSAMLphp van''" mezőből tegyük a metaadatot, ill. vágólapra az ezt elvégző két modult touch modules/metarefresh/enable cp modules/metarefresh/config-templates/*.php config/ touch modules/cron/enable cp modules/cron/config-templates/*.php config/alábbi PHP kódot:
:*Létrehozunk egy könyvtárat, ahová letöltésre kerül az központi metaadat XML fájlja<source lang="php"> mkdir $metadata['https://idp.example.org/simplesaml/metarefresh-href chmod g+rw metadatasaml2/metarefresh-href:*Ezek után be kell állítani a metaadat kokrét adatait a <code>configidp/config-metarefreshmetadata.php</code> fájlban $config = array( 'sets' ] => array( 'humetadata-set' => array( 'cron' => array('hourlysaml20-idp-remote'), 'sources' => array( array( 'srcentityid' => 'https://rridp.aaiexample.niif.huorg/simplesaml/saml2/metadataidp/href-metadata.xmlphp', 'validateFingerprintSingleSignOnService' => 'DF:4F:7F:B2:C8:3E:D9:D8:33:38:79:C7:2B:27:FB:55:42:97:36:74', 'template' => array( 'authproc' 0 => array( 51 => array( 'classBinding' => 'coreurn:oasis:names:tc:SAML:2.0:bindings:AttributeMapHTTP-Redirect', 'oid2nameLocation' => 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php'), ), ), ), 'SingleLogoutService' => ), array ( 'expireAfter' 0 => 60*60*24*4, // Maximum 4 days cache time. array ( 'outputDirBinding' => 'metadata/metarefreshurn:oasis:names:tc:SAML:2.0:bindings:HTTP-href/Redirect', 'outputFormatLocation' => 'flatfilehttps://idp.example.org/simplesaml/saml2/idp/SingleLogoutService.php', ),
),
);,:*Be kell állítani 'certData' => 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==', hogy az SSP az automata által generált fájlokból dolgozzon. Ehhez a <code 'NameIDFormat' =>config/config'urn:oasis:names:tc:SAML:2.php0:nameid-format:transient',);</codesource> fájlban keressük ki  A vágólapra másolt kódot SP oldalon, a <code>'''metadata/saml20-idp-remote.source</code> szakaszt, és az alábbiak szerint szerkesszük átphp''' fájl végére illesszük be. Amennyiben nem csak  ===Tesztelés=== A fent elvégzett alapbeállítások után már tudjuk tesztelni a központi metaadatból szeretnénk dolgozni, úgy további sorokat is megadhatunk itt bemutatott mintájárahogy a felépített IdP - SP kapcsolat működik-e. 'metadata.sources' => array( array(SP oldalon nyissuk meg a 'type' => 'flatfilesimplesaml', 'directory' => 'metadatakezdő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 /metarefresh"default-sp" link-re kattintva tudjuk tesztelni az IdP -href'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.   )Az alapvető lépsekkel kész vagyunk,van egy működő SP-nk és egy működő IdP-nk.
:*Végül le kell futtatni kézzel a cronjobot, amelyet az SSP webes felületén tudunk megtenni a Configuration fül alatt, a Cron module information page menüpontban. Ekkor létrejönnek a fájlok (majd óránként frissülnek is, ha beállítjuk cronjobként). ==HREF-integráció==
===Metadata beállítása (IdP és SP is)===
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]
===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.
* (A jelenleg is formálódó Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])* Kell küldeni egy levelet a [mailto:aaiinfo@niifeduid.hu aaiinfo@niifeduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example.org/simplesamlphp/saml2/idp/metadata.php)
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést.
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de egy-két néhány óra alatt várhatóan beindul. :)
:Tesztelésre használható oldal: [https://wikiattributes.aai.niifeduid.hu/shibtest.php https://wiki.aai.niif.hu/shibtest.php]
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]
** <del>[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]</del> (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]
 
====Attribútumok kezelése====
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.
:1. Az <code>attributemap/name2oid.php</code> fájlba az 's'-betűhöz szúrjuk be az alábbi sort: 'schacHomeOrganizationType' => 'urn:oid:1.3.6.1.4.1.25178.1.2.10',:2. A <code>metadata/saml20-idp-hosted.php</code> fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az <code>'auth' => 'example-ldap',</code> sor alatt kezdjük.Fontos, hogy egyúttal a config.php <code>authproc.idp</code> részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak. <source lang="php">
'AttributeNameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
'userid.attribute' => 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t
//Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.
),
# 20 => array( # 'class' => 'core:AttributeAdd', # 'schacHomeOrganizationType' => array('urn:schac:homeOrganizationType:hu:university') # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően # ),
30 => array(
'class' => 'core:AttributeAlter',
'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(
// Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat
),
80 => 'core:AttributeLimit', ),// .authproc
'simplesaml.nameidattribute' => 'eduPersonPrincipalName',
'attributeencodings' => array(
'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' => 'raw',
), ==== Külső attribútum filter modul használata 'sign.logout' ====Ha idáig eljutottunk, akkor az IdP már képes a föderációban dolgozni, tesztelni már lehet, ám a teljességhez hozzátartozik, hogy az attribútum filtert kezelő modult is beállítsuk. Ehhez [https://www.aai.niif.hu/ssp-attributes töltsük le a modult], majd kitömörítés után másoljuk a <code>/var/simplesamlphp/modules</code> könyvtárba <code>edugain</code> néven.true: Fontos, hogy a modul működéséhez függ a <code>php xsl</codesource> kiegészítőjétől.
: A fenti konfigurációs fájlba illeszük be az alábbi kiegészítést:
65 => array(
'class' => 'edugain:Attributes',
'mode' => 'idp',
'filterconfig' => '/path/to/AttributeFilter.xml',
'cache' => true /*, 'cacheDirectory' => '/path/to/cache/directory'*/
)
 
: Az itt megadott AttributeFilter.xml fájl lesz a Resource Registry által generált, és az IdP által automatikusan letöltött XML, melynek url-je az a fent említett levelezés útján kerül elküldésre. A modul futása közben a konfigurációs XML-t gyorstárazza (<code>cache=true </code> esetén), ehhez a <code>/var/simplesamlphp/modules/edugain/cache</code> könyvtárra írásjogot kell adni a webszervernek, vagy a <code>cacheDirectory</code> paraméter megadásával más könyvtárba helyezhető a gyorsítótár.
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.
 
 
====Attribútum scopeok használata====
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://repogithub.niif.hucom/gitwebNIIF/gitweb.cgi?p=simplesamlphp-module-attributescope.git;a=summary attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.
A telepítésről és konfigurációról bővebben itt lehet olvasni: https: Az <code>attributescope</code> modul használata esetén a következőképp kell módosítani a <code>config/config-metarefreshgithub.php<com/NIIF/code> fájlt:simplesamlphp-module-attributescope
'template' : Az <code>attributescope</code> modul használata esetén a következőképp kell módosítani a <code>config/config.php</code> fájlt:<source lang="php"> array( ' authproc' .sp => array( 51 ... // 49 => array('class' => 'core:AttributeMap', 'oid2name'), 55 50 => array( 'class' => 'attributescope:FilterAttributes' ), ... ), </source>Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok nevei ''scopedattributesfriendlyName' => array' alakúak legyenek (ne pedig 'eduPersonScopedAffiliation', oid'eduPersonPrincipalName'-ok),. A példában erre utal a 49-es sor.  ),[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]

Navigációs menü