Módosítások

Attribútum feloldás

6 984 bájt hozzáadva, 2010. április 27., 15:46
elavult, most mar a jo sablonnal
{{SHIB_OLD}}
A felhasználó azonosítása után az IdP még csak a REMOTE_USER változóban megkapott principal azonosítót tudja. A következő lépésben meg kell határozni a felhasználóhoz kapcsolódó attribútumokat. Ezeket az attribútumokat általában valamilyen adatbázisból (LDAP, SQL) kell lekérdezni, de lehetséges konstans, ill. származtatott attribútumokat is használni.
Az attribútum feloldás abból áll, hogy attribútum definícióhoz adat(bázis) konnektorokat rendelünk. Az adat konnektor feladata az attribútum értékének meghatározása, pl. külső adatforrásokból. Az attribútum definíció azt adja meg, hogy miként kell az értéket a Shibboleth által használt SAML [[Assertion | assertionbe]] tenni.
== Adatok kinyerése (DataConnector) ==
Minden adatforrás rendelkezik egy ''id'' mezővel, amelynek az összes adatforrásra nézve egyedinek kell lennie.
=== JNDIDirectoryDataConnector ===
Ennek segítségével állíthatjuk be a JNDI LDAP kapcsolat paramétereit. Ezen az interfészen keresztül tetszőleges LDAP v3 interfészt biztosító adatforrás lekérdezhető.
; Példa beállítások magyarázata (részletes beállítási lehetőségekkel kapcsolatban lásd a [https://spaces.internet2.edu/display/SHIB/JNDIDataConnector Shibboleth Wiki vonatkozó részét]!)
* ''<code>id</code>'': egyedi azonosító, ezzel lehet hivatkozni erre az adatforrásra* ''<code>Search@filter</code>'': az az LDAP filter, amely alapján a REMOTE_USER értékéből megkereshető a felhasználó LDAP entry-je. Ha összetett szűrő szabályt kell mondani, akkor a '''&''' jelet '''&amp;amp;'''-vel kell eszképelni.
* ''<code>Search/Controls@searchScope</code>'': az LDAP lekérdezés scope-ja. Lehetséges értékek:
** ONELEVEL_SCOPE
=== StaticDataConnector ===
Ennek segítségével rendelhetünk statikus adatokat a felhasználókhoz. Legtöbbször akkor használjuk, ha az IdP-nél történt azonosítás tényéből attribútumokat akarunk származtatni.
<source lang="xml">
<StaticDataConnector id="staticOrgDN">
<Attribute name="eduPersonOrgDN">
<Value>o=niifi,o=niif,c=hu</Value>
</Attribute>
</StaticDataConnector>
</source>
 
Egy <code>StaticDataConnector</code> egyszerre több attribútumot is tud szolgáltatni, ill. egy attribútumnak több értéke is lehet. Bővebben lásd a [https://spaces.internet2.edu/display/SHIB/StaticDataConnector Shibboleth wiki vonatkozó részét]!
 
== Attribútumok előkészítése (AttributeDefinition) ==
Az attribútum definíciók arra valók, hogy az adatforrásból származó értéket az átvitelt biztosító SAML szabványnak, illetve az attribútumot fogadó SP-nek megfelelő formátumba konvertálják. Ezért minden attribútum definíciónál meg lehet adni függőséget, amelyből az attribútum értéke származik. A függőségnek két fajtája van:
* '''DataConnectorDependency''': az attribútum értéke egy már definiált adatforrásból származik.
* '''AttributeDependency''': az attribútum értéke egy másik (feloldott) attribútum értékéből származik
Mindkét függőség megadásakor a ''requires'' XML attribútummal hivatkozhatunk a DataConnector vagy az AttributeDefinition ''id''-jére. Ebből következik az is, hogy minden attribútum definíciónak egyedi ''id'' mezője kell, hogy legyen.
=== SimpleAttributeDefinition ===
Ezzel a pluginnal egyszerű műveleteket végezhetünk az adatforrásokból származó értékeken (vagy akár átalakítás nélkül is továbbíthatjuk). Az alábbi attribútumokkal rendelkezik:
* ''id'': ezzel lehet rá függőségekben hivatkozni, ill. az attribútum forrásának megállapításához is felhasználható. Az [[Assertion]]-ben ennek az értéke szerepel attribútum névként.
* ''sourceName'': ezzel lehet explicit módon meghatározni a forrás nevét
* ''smartScope'': ha az érték nem scope-olt (azaz nem <code>valami@valahol</code> formátumú), akkor az attribútum scope-ja a <code>smartScope</code> lesz, ellenkező esetben a scope értéke a "@ utáni rész" lesz (pl.: <code>valahol</code>).
:: <small>(Leegyszerűsítve) egy [[Assertion]]-ben egy attribútum így adható meg: attribútum név + scope + érték(ek)</small>
* ''allowEmpty'': ez a boolean paraméter adja meg, hogy az üres érték elfogadható-e. Alapértelmezett értéke <code>false</code>, azaz ha nincs érték, akkor az [[Assertion]]-be nem kerül bele az attribútum. Ha <code>true</code>, akkor érték nélkül kerül bele.
 
A ''sourceName'' mezőt nem kötelező megadni, mert a forrás attribútum neve megadható az ''id'' paraméterben is. A forrás attribútum nevének meghatározása a következő sorrendben történik:
# Ha meg van adva a ''sourceName'', akkor az adat konnektortól ezt az attribútumot kapja meg
# Ha van olyan - az adat konnektor által nyújtott - attribútum, amely az ''id'' mezővel teljesen megegyezik, akkor annak az értékét használja
# Egyébként az adat konnektortól az ''id'' mezőben megadott paraméter utolsó "''':'''" vagy "'''/'''" jel utáni részének megfelelő attribútumot kérdezi le.
 
'''Példa 1.''': a ''directory'' nevű adat konnektortól lekérdezi a "cn" attribútumot, majd ennek értékét az <code>urn:mace:dir:attribute-def:cn</code> attribútumban küldi el a másik félnek.
<source lang="xml">
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:cn">
<DataConnectorDependency requires="directory"/>
</SimpleAttributeDefinition>
</source>
 
 
'''Példa 2.''': a ''directory'' nevű adat konnektortól lekérdezi a ''displayName'' attribútumot, majd ennek értékét az <code>urn:mace:dir:attribute-def:<b>cn</b></code> (!) attribútumban küldi el a másik félnek.
<source lang="xml">
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:cn" sourceName="displayName">
<DataConnectorDependency requires="directory"/>
</SimpleAttributeDefinition>
</source>
 
 
'''Példa 3.''': a (már korábban feloldott) <code>urn:mace:dir:attribute-def:uid</code> attribútumot (amennyiben az nem scope-olt) kiegészíti az "niif.hu" scope-pal, és ezt adja át <code>urn:mace:dir:attribute-def:eduPersonPrincipalName</code> néven. Ha viszont az uid értéke pl. <code>valaki@valahol</code>, akkor az átadott érték a <code>valaki</code> lesz, a scope pedig <code>valahol</code>.
<source lang="xml">
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:eduPersonPrincipalName" smartScope="niif.hu">
<AttributeDependency requires="urn:mace:dir:attribute-def:uid"/>
</SimpleAttributeDefinition>
</source>
 
Részletes leírást lásd a [https://spaces.internet2.edu/display/SHIB/SimpleAttributeDefinition Shibboleth wiki vonatkozó részében]!
 
=== CompositeAttributeDefinition ===
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/CompositeAttributeDefinition === RexExpAttributeDefinition RegExpAttributeDefinition ==='''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/RegExpAttributeDefinition 
=== ScriptletAttributeDefinition ===
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/ScriptletAttributeDefinition
 
=== SAML2PersistentID ===
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/SAML2PersistentIDAttributeDefinition
 
== Tesztelés ==
A Shibboleth IdP-hez tartozik egy '''resolvertest''' névre hallgató program, amellyel ellenőrizhetjük az attribútumok feloldását. Használatához először be kell állítani a telepítésnek megfelelően az IDP_HOME és a JAVA_HOME változókat.
 
Példa: <code>/usr/local/shibboleth-idp/bin/resolvertest --resolverxml=file:///etc/shibboleth-idp/resolver.ldap.xml --user=bajnokk</code>
<source lang="xml">
<Attribute xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
AttributeName="urn:mace:dir:attribute-def:eduPersonOrgDN"
AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri">
<AttributeValue>o=niifi,o=niif,c=hu</AttributeValue>
</Attribute>
 
<Attribute xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
AttributeName="urn:mace:dir:attribute-def:uid"
AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri">
<AttributeValue>bajnokk</AttributeValue>
</Attribute>
 
<Attribute xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
AttributeName="urn:mace:dir:attribute-def:eduPersonPrincipalName"
AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri">
<AttributeValue Scope="niif.hu">bajnokk</AttributeValue>
</Attribute>
</source>
 
== Forrás ==
* https://spaces.internet2.edu/display/SHIB/NewIdPAttribute
* https://spaces.internet2.edu/display/SHIB/IdPAttributeConfig
 
[[Kategória: Shibboleth IdP]]
[[Kategória: Shibboleth IdP konfiguráció]]

Navigációs menü