„Attribútum feloldás” változatai közötti eltérés
(→StaticDataConnector) |
(→Attribútumok előkészítése (AttributeDefinition)) |
||
120. sor: | 120. sor: | ||
== Attribútumok előkészítése (AttributeDefinition) == | == 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 === | === SimpleAttributeDefinition === | ||
=== CompositeAttributeDefinition === | === CompositeAttributeDefinition === | ||
− | === | + | === RegExpAttributeDefinition === |
=== ScriptletAttributeDefinition === | === ScriptletAttributeDefinition === | ||
=== SAML2PersistentID === | === SAML2PersistentID === | ||
+ | |||
== Tesztelés == | == Tesztelés == | ||
== Forrás == | == Forrás == | ||
* https://spaces.internet2.edu/display/SHIB/NewIdPAttribute | * https://spaces.internet2.edu/display/SHIB/NewIdPAttribute | ||
* https://spaces.internet2.edu/display/SHIB/IdPAttributeConfig | * https://spaces.internet2.edu/display/SHIB/IdPAttributeConfig |
A lap 2007. augusztus 8., 11:13-kori változata
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.
Fontos megjegyezni, hogy az attribútumok csak akkor adódnak át az SP-knek, ha ez az Attribute Release Policy-ban engedélyezve van. Természetesen fel nem oldott attribútumokat nem lehet átadni.
Az attribútum feloldást az IdP konfiguráció IdPConfig
elemének resolverConfig
attribútumában megadott XML állományban konfigurálhatjuk. Ez általában a resolver.xml
vagy resolver.ldap.xml
névre hallgat
Tartalomjegyzék
[elrejtés]Működő példa konfiguráció
<AttributeResolver xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mace:shibboleth:resolver:1.0"
xsi:schemaLocation="urn:mace:shibboleth:resolver:1.0 shibboleth-resolver-1.0.xsd">
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:eduPersonEntitlement">
<DataConnectorDependency requires="directory"/>
</SimpleAttributeDefinition>
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:eduPersonAffiliation">
<DataConnectorDependency requires="directory"/>
</SimpleAttributeDefinition>
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:cn">
<DataConnectorDependency requires="directory"/>
</SimpleAttributeDefinition>
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:uid">
<DataConnectorDependency requires="directory"/>
</SimpleAttributeDefinition>
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:eduPersonPrincipalName" smartScope="niif.hu">
<AttributeDependency requires="urn:mace:dir:attribute-def:uid"/>
</SimpleAttributeDefinition>
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" smartScope="niif.hu">
<AttributeDependency requires="urn:mace:dir:attribute-def:eduPersonAffiliation"/>
</SimpleAttributeDefinition>
<SimpleAttributeDefinition id="urn:mace:dir:attribute-def:eduPersonOrgDN" >
<DataConnectorDependency requires="staticOrgDN"/>
</SimpleAttributeDefinition>
<JNDIDirectoryDataConnector id="directory">
<Search filter="uid=%PRINCIPAL%">
<Controls searchScope="ONELEVEL_SCOPE" returningObjects="false" />
</Search>
<Property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory" />
<Property name="java.naming.provider.url"
value="ldap://directory.iif.hu:636/ou=users,o=niifi,o=niif,c=hu" />
<Property name="java.naming.security.protocol" value="ssl" />
<Property name="java.naming.security.principal"
value="uid=niif-idp,ou=shib,ou=applications,o=niifi,o=niif,c=hu" />
<Property name="java.naming.security.credentials" value="XXXXXXXX" />
</JNDIDirectoryDataConnector>
<StaticDataConnector id="staticOrgDN">
<Attribute name="eduPersonOrgDN">
<Value>o=niifi,o=niif,c=hu</Value>
</Attribute>
</StaticDataConnector>
</AttributeResolver>
Attribútum feloldás menete
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 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:
<JNDIDirectoryDataConnector id="directory">
<Search filter="uid=%PRINCIPAL%">
<Controls searchScope="ONELEVEL_SCOPE" returningObjects="false" />
</Search>
<Property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory" />
<Property name="java.naming.provider.url"
value="ldap://directory.iif.hu:636/ou=users,o=niifi,o=niif,c=hu" />
<Property name="java.naming.security.protocol" value="ssl" />
<Property name="java.naming.security.principal"
value="uid=niif-idp,ou=shib,ou=applications,o=niifi,o=niif,c=hu" />
<Property name="java.naming.security.credentials" value="XXXXXXXX" />
</JNDIDirectoryDataConnector>
- Példa beállítások magyarázata (részletes beállítási lehetőségekkel kapcsolatban lásd a Shibboleth Wiki vonatkozó részét!)
-
Search@filter
: az az LDAP filter, amely alapján a REMOTE_USER értékéből megkereshető a felhasználó LDAP entry-je -
Search/Controls@searchScope
: az LDAP lekérdezés scope-ja. Lehetséges értékek:- ONELEVEL_SCOPE
- OBJECT_SCOPE (base)
- SUBTREE_SCOPE
-
java.naming.provider.url
property: LDAP URL, amely a search base DN-jét is tartalmazza -
java.naming.provider.protocol
property: itt lehet megadni, hogy SSL-t használjon-e az LDAP kapcsolat kiépítésekor. Ha nem akarunk SSL-t használni, akkor ezt a property-t ne adjuk meg! Lásd még: LDAP kliens SSL -
java.naming.security.principal
property: az a DN, amellyel a Shibboleth alkalmazás bind-ol az LDAP szerverhez. -
java.naming.security.credentials
property: az előző DN-hez tartozó jelszó
JDBCDataConnector
E konnektor segítségével tetszőleges JDBC-n keresztül elérhető adatforrásból kinyerhetünk adatokat.
<JDBCDataConnector id="studentSystem"
dbURL="jdbc:postgresql://test.example.edu/test?user=postgres&password=test"
dbDriver="org.postgresql.Driver"
<Query>select entitlement from foo where name = ?</Query>
</JDBCDataConnector>
A "?" karakterrel hivatkozhatunk a REMOTE_USER változóban kapott principal azonosítóra.
A JDBCDataConnector
részletes paraméterezhetőségéről lásd a Shibboleth wiki vonatkozó részét!
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.
<StaticDataConnector id="staticOrgDN">
<Attribute name="eduPersonOrgDN">
<Value>o=niifi,o=niif,c=hu</Value>
</Attribute>
</StaticDataConnector>
Egy StaticDataConnector
egyszerre több attribútumot is tud szolgáltatni, ill. egy attribútumnak több értéke is lehet. Bővebben lásd a 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.