## 2. Új alkalmazás regisztrációja meglévő SimpleSAMLphp telepítésben

Éles alkalmazást csak https protokollal telepítsünk! 

### 2.0 SimpleSAMLphp elérési út

Amennyiben a webszerver nem úgy van globálisan konfigurálva, hogy a /simplesaml prefixre a SimpleSAMLphp jöjjön be, 
akkor hozzunk létre az alkalmazás www könyvtárban egy symlink-et, mely a ...simplesamlphp/public mappára mutat. 

### 2.1 Az alkalmazás manuális regisztrációja (alternatíva)

Erre a lépésre csak akkor van szükség, ha nem telepítettük a szerveren a `refreshAuthsources` modult.

A szerveren lévő SimpleSAMLphp konfigurációban a `$config` tömbben hozzunk létre egy új bejegyzést:

	'alkalmazásnév' => array(
        'saml:SP',
        'idp' => 'https://idp.pte.hu/saml2/idp/metadata.php',
		'privatekey' => 'szervernév.pem',
		'certificate' => 'szervernév.crt',
	),

Megjegyzés: 1.x verzió esetén ne állítsunk be explicit entity-id-t. A RR az automatikusan generált entitásazonosítókkal számol.

### 2.2 Az alkalmazás regisztrációja a PTE Resource Registryben

A SAML menüpont alatt, a megfelelő szerverkörnyzet kiválasztása után [Új szolgáltatás] űrlap kitöltésével.
Használjuk az online dokumentációt. Normális nevet adjunk az alkalmazásnak, mert a felhasználó azt fogja látni, amikor 
az adatainak átadását kérjük jóváhagyni. 

Ne felejtsük el igényelni azokat az attributumokat, melyek szerver szinten nem lettek megjelölve.


### 2.3 (opcionális) Az alkalmazás regisztrációja az EduID szövetségben

Erre a lépésre akkor van szükség, ha az alkalmazás a saját IdP-ken kívül szövetségi IdP-ktől is szeretne elfogadni felhasználókat.
Lásd: [SP csatlakoztatása EduID-hez](href)

## 3. Alkalmazás felkészítése (API)

Használjuk a keretrendszer SAMl modulját, ha van. A modult biztosan konfigurálni kell, és körülbelül az alábbi adatokat kell megadni:

	// Configuration for SAML module
	'saml' => array(
	    'authsource' => 'default-sp',    // A default-sp helyére az alkalmazás nevét írjuk, lásd RR authsource mező. Egyes rendszerekben 'config' néven fut. 
		'dir' => dirname(dirname(__DIR__)).'/simplesamlphp-1.14.8/',    // SimpleSAMLphp elérési útvonala
		'uidfield' => 'eduPersonPrincipalName',                         // Mely mezővel azonosítjuk egyedileg a felhasználót (érdemes olyat használni, melyben van scope is)
		'scope' => 'pte.hu',            // Alapértelmezett scope új felhasználókhoz
	),

Ha nincs modul, vagy nem használunk keretrendszert, akkor itt egy minimál alkalmazási példa (egy modul sem tartalmaz sokkal többet):

- [https://iig-gitlab.pte.hu/UHPOAAP.PTE/samlsample1](https://iig-gitlab.pte.hu/UHPOAAP.PTE/samlsample1)
- [https://bitbucket.org/uhi67/samlsamlple1](https://bitbucket.org/uhi67/samlsamlple1)

Minden oldal elején fusson le:

    $saml_dir = dirname(dirname(__DIR__)).'/simplesamlphp-1.14.8/'; // Ezt konfig fájlból érdemes venni
    require_once($saml_dir.'lib/_autoload.php');
    $as = new SimpleSAML\Auth\Simple('default-sp');
    if (array_key_exists('logout', $_REQUEST)) {
        $as->logout(SimpleSAML\Utils\HTTP::getSelfURLNoQuery());
    }
    if (array_key_exists('login', $_REQUEST)) {
        $as->requireAuth();
    }

Ezek után az alkalmazásban bárhol lekérdezhető:

- `$as->isAuthenticated()`: be van-e lépve
- `$as->getAttributes()`: felhasználó attributumai

A belépéshez `?login`, a kilépéshez a `?logout` címre kell irányítani a felhasználót.