„Attribútum feloldás” változatai közötti eltérés

Innen: KIFÜ Wiki
(JNDIDirectoryDataConnector)
a (JNDIDirectoryDataConnector: typofix)
90. sor: 90. sor:
 
* ''<code>java.naming.provider.url</code> property'': LDAP URL, amely a search base DN-jét is tartalmazza
 
* ''<code>java.naming.provider.url</code> property'': LDAP URL, amely a search base DN-jét is tartalmazza
 
* ''<code>java.naming.provider.protocol</code> 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]]
 
* ''<code>java.naming.provider.protocol</code> 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]]
* ''<code>java.naming.security.credentials</code> property'': az a DN, amellyel a Shibboleth alkalmazás bind-ol az LDAP szerverhez.
+
* ''<code>java.naming.security.principal</code> property'': az a DN, amellyel a Shibboleth alkalmazás bind-ol az LDAP szerverhez.
 
* ''<code>java.naming.security.credentials</code> property'': az előző DN-hez tartozó jelszó
 
* ''<code>java.naming.security.credentials</code> property'': az előző DN-hez tartozó jelszó
  

A lap 2007. augusztus 7., 14:31-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

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)

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!)
  • id: egyedi azonosító, ezzel lehet hivatkozni erre az adatforrásra
  • 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

StaticDataConnector

Attribútumok előkészítése (AttributeDefinition)

SimpleAttributeDefinition

CompositeAttributeDefinition

RexExpAttributeDefinition

ScriptletAttributeDefinition

SAML2PersistentID

Tesztelés

Forrás