Módosítások

Attribútum feloldás

6 313 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.
; 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>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
== 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ü