# AttributePushPull

Egy IdP és egy SP között az attribútumok átadása *push* és *pull* modell szerint történhet.

## Attribute Pull

**Attribute Pull** esetén a folyamat az alábbi:

1. IdP azonosítja a felhasználót (ill. feldolgozza az autentikációs kérést)
1. IdP autentikációs [igazolást]() állít ki és elküldi az SP-nek
1. SP attribútum kérést (AttributeRequest) küld az IdP-nek
1. IdP attribútum [igazolást]() állít ki, mely a felhasználó attribútumait tartalmazza, majd ezt visszaküldi az SP-nek

## Attribute Push

**Attribute Push** használata esetén az IdP által küldött első válaszba beágyazva szerepelnek az attribútumok, ezért az SP részéről nincs szükség további kérésekre, a folyamat tehát a következő módon zajlik:

1. IdP azonosítja a felhasználót (ill. feldolgozza az autentikációs kérést)
1. IdP autentikációs **és attribútum** [igazolást]() állít ki és ezeket egyetlen válaszként elküldi az SP-nek

## Alkalmazási terület

Shibboleth esetén [Browser/POST]() profil használata esetén a *pull* modell, míg [Browser/Artifact]() profil esetén a *push* modell az alapértelmezett, ám ez felülbírálható.

Bizonyos föderációs megvalósítások (pl. a [SimpleSAMLphp](https://help.edu.hu/books/aai/page/simplesamlphp)) csak a *push* modellt támogatják, mivel ennek implementációja egyszerűbb.

!!! info

	Nagyméretű attribútumok használata esetén a válasz mérete is elég nagy lehet, ezért ez [POST]() profil esetén esetleg kényelmetlenséget (lassú működést) okozhat.