Módosítások

Shib2IdpAttrib

8 808 bájt hozzáadva, 2010. január 25., 10:44
Kapcsolódások adattárakhoz
Az attribútum feloldást az <code>IDP_HOME/conf</code> könyvtárban található '''<code>attribute-resolver.xml</code>''' névre hallgató fájlban konfigurálhatjuk. A fájl szerkezetét tekintve '''négy részből''' áll.
 == Attributum Attribute-resolver alapbeállítások ==
Ezeket általában nem kell állítgatni, megfelelőek az alapbeállítások
<source lang="xml">
urn:mace:shibboleth:2.0:attribute:encoder classpath:/schema/shibboleth-2.0-attribute-encoder.xsd
urn:mace:shibboleth:2.0:security classpath:/schema/shibboleth-2.0-security.xsd">
 
 
<!-- ... -->
 
</AttributeResolver>
== Attributumok Attribútumok definiálása == Az attribútum-definíciós szakasz igazából egyfajta egységesítése és előkészítése különböző forrásokból kinyerhető és később továbbítható adatoknak. Egy attribútum definiálásakor meg kell adni az alapként szolgáló <code><AttributeDefinition></code> elemet három attribútumával:<source lang="xml"><resolver:AttributeDefinition id="cn" xsi:type="simple:Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad"></source>  *'''id''' - az attribútum egyedi neve (nagyon fontos a jó névválasztás :) )*'''xsi:type''' - értéke lehet <code>Simple</code> vagy <code>Scoped</code>, de mivel a második nem szabványos, így törekedni kellene a <code>Simple</code> használatára*'''xmlns''' - alapértelmezett értéke: <code>urn:mace:shibboleth:2.0:resolver:ad</code>  Az <code><AttributeDefinition></code> elemen belül meg kell adni az attribútum függőségét és az attribútum kódolási tulajdonságait   '''Attribútumok függősége''' Egy attribútum függhet bármilyen más, az attribute-resolver.xml fájlban definiált elemtől, legyen az másik <code><AttributeDefinition></code>, vagy <code><DataConnector></code>. Egy attributum több más elemtől is függhet. Az egyetlen attribútuma a forrás elem azonosítója. <code><resolver:Dependency ref="ID_DEPENDENCY1" /></code>   '''Attribútumok kódolási tulajdonságai''' Egy attribútumhoz többféle kódolási mechanizmust megadhatunk, melyek meghatározzák, hogy az attribútum kiadásakor milyen formátum(ok)ban lesz elérhető az aktuális attribútum értéke. Ha nem adunk meg kódolási mechanizmust, alapértelmezetten <code>SAML2String</code> alapon kódol. Egy kódolás megadása az <code><AttributeEncoder></code> elem segítségével történik. A szükséges attribútumok *'''xsi:type''' - értéke a kódolás típusa*'''xmlns''' - alapértelmezett értéke: <code>urn:mace:shibboleth:2.0:resolver:encoder</code>*'''name''' - a megadott típuson belüli azonosító *'''friendlyName''' - :)  ''Példa'' <source lang="xml"><resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="commonName" /> </source>  
<!-- ========================================== -->
<!-- ========================================== -->
<!-- ... -->
 
<!-- ... -->
== Kapcsolódások adattárakhoz ==
Ahhoz, hogy megkaphassuk az egyes attributumokhoz attribútumokhoz tartozó értéket, valamilyen adattárból (adatbázis, címtár) kell őket kinyernünk, hiszen ekkor még csak a sikeres azonosítás után tartunk, és csak a felhasználói nevet tudjuk, amivel az azonosítás megtörtént. '''Fontos''', hogy az egyes kapcsolódások definiálásakor erre a felhasználói névre a '''<code>$requestContext.principalName</code>''' néven hivatkozhatunk, amely kiindulópontként szolgálhat lekérdezéseinkhez. === Kapcsolódás címtárhoz === '''1. Konnektor definiálása''' Új adatbáziskapcsolat létrehozásához definiálnunk kell a konnektort <code><DataConnector xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc"></code> az alábbi attribútumokkal ''Attribútumok, melyeket kötelező megadni''*'''id''' - egyedi azonosító, mellyel az attribútum definicióknál elérhetjük a konnektort*'''ldapURL''' - a címtár elérési útja. Több is megadható vesszőkkel elválasztva, ekkor a megadott sorrend alapján addig próbálkozik, amíg valahol nem tud csatlakozni*'''baseDN''' - a címtárban való kereséshez tartozó BaseDN*'''principal''' - a címtár bind-olására használandó felhasználói név*'''principalCredential''' - a címtár bind-olására használandó felhasználói névhez tartozó jelszó <source lang="xml"><resolver:DataConnector xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="UNIQUE_ID" ldapURL="LDAP_URL" baseDN="BASE_DN" principal="PRINCIPAL_NAME" principalCredential="PRINCIPAL_CREDENTIAL">   <!-- Ide kerülnek majd az további konfigurációs beállítások a következő lépések alapján --> </resolver:DataConnector></source>  '''2. Az LDAP lekérdezés definiálása'''  <source lang="xml"><resolver:DataConnector xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="UNIQUE_ID" ldapURL="LDAP_URL" baseDN="BASE_DN" principal="PRINCIPAL_NAME" principalCredential="PRINCIPAL_CREDENTIAL">  <FilterTemplate> <![CDATA[ (uid=${requestContext.principalName}) ]]> </FilterTemplate>  <!-- Ide kerülhet a lekérdezési eredmény mezőneveinek és értékeinek felüldefiniálása --> </resolver:DataConnector></source> 
=== Kapcsolódás relációs adatbázisokhoz ===
'''1. Konnektor definiálása'''
Új adatbáziskapcsolat létrehozásához definiálnunk kell a konnektort <code><DataConnector xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc"></code> az alábbi attributumokkalattribútumokkal
''AttributumokAttribútumok, melyeket kötelező megadni''*'''id''' - egyedi azonosító, mellyel az attributum attribútum definicióknál elérhetjük a konnektort
''AttributumokAttribútumok, melyeket opcionálisan megadhatók''
*'''readOnlyConnection''' - logikai érték, mely meghatározza, hogy az adatbázis csak olvasható, vagy esetleg írható is. Alapértelmezés szerint <code>true</code>, azaz csak olvasható
*'''queryUsesStoredProcedure''' - logikai érték, mely meghatározza, hogy a 3az 5. lépésnél bemutatott módon definiált SQL lekérdezések használhatnak-e előre meghatározott eljárásokat. Alapértelmezés szerint nem, azaz <code>false</code>
*'''cacheResults''' - logikai érték, mely meghatározza, hogy a lekérdezés eredménye eltárolható-e a felhasználó munkamenetének lejártáig. Alapértelmezés szerint igen, azaz <code>true</code>
</resolver:DataConnector>
</sorucesource>  '''2. Függőségek definiálása''' ''Opcionális''  '''3. Másodlagos adatkapcsolat definiálása''' ''Opcionális''   '''4/a. Idp által natívan vezérelt adatbáziskapcsolatok beállítása''' Az Idp alkalmazás által vezérelt kapcsolathoz definiálnunk kell egy <code><ApplicationManagedConnection></code> elemet az alábbi (mind kötelezően megadandó) attribútumokkal *'''jdbcDriver''' - a JDBC meghajtó teljes elérési útvonala*'''jdbcURL''' - URL, melyen elérjük az adatbázist*'''jdbcUserName''' - adatbázis eléréséhez tartozó felhasználó*'''jdbcPassword''' - a fenti felhasználóhoz tartozó jelszó  ''Példa MySQL adatbázis eléréséhez'' <source lang="xml"><resolver:DataConnector xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="UNIQUE_ID">  <!-- Ide kerülhetnek a függőségek a másodlagos adatkapcsolatokkal kapcsolatos beállítások -->  <ApplicationManagedConnection jdbcDriver="com.mysql.jdbc.Driver" jdbcURL="jdbc:mysql://localhost:3306/DATABASE_NAME?autoReconnect=true" jdbcUserName="DATABASE_USER" jdbcPassword="DATABASE_USER_PASSWORD" />  <!-- Ide kerülnek majd az további konfigurációs beállítások a következő lépések alapján --> </resolver:DataConnector></source>  '''4/b. Konténer által vezérelt adatbáziskapcsolatok beállítása'''  '''5. SQL lekérdezés definiálása'''  <source lang="xml"><resolver:DataConnector xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="UNIQUE_ID">  <!-- Ide kerülhetnek a függőségek a másodlagos adatkapcsolatokkal kapcsolatos beállítások -->  <ContainerManagedConnection resourceName="RESOURCE_NAME" />  <QueryTemplate> <![CDATA[ SELECT * FROM PEOPLE WHERE userid='$requestContext.principalName' ]]> </QueryTemplate>  <!-- Ide kerülhet a lekérdezési eredmény mezőneveinek és értékeinek felüldefiniálása --> </resolver:DataConnector></source>  '''6. Lekérdezési eredmény mezőneveinek és értékeinek felüldefiniálása''' ''Opcionális'' Alapértelmezés szerint a lekérdezések eredményét mezőnevenként és a hozzákapcsolódó értékként egy-egy attribútumba szervezi a konnektor, melyet lehetőségünk van felüldefiniálni, ehhez a <code><Column></code> elemet használhatjuk az alábbi atttribútumokkal  ''Kötelező megadni'' *'''columnName''' - az lekérdezés eredményének mezője, mellyel kapcsolatban módosításokat hajtanánk végre ''Az alábbiak közül minimum egyet kötelező megadni'' *'''attributeID''' - az attribútum azonosítója, melyhez hozzárendeljük az eredményt*'''type''' - az eredmény típusa. A következők közül választhatunk: BigDecimal, Boolean, Byte, ByteArray, Date, Double, Float, Integer, Long, Object, Short, String, Time, Timestamp, URL <source lang="xml"> <resolver:DataConnector xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="UNIQUE_ID">  <!-- Ide kerülhetnek a függőségek a másodlagos adatkapcsolatokkal kapcsolatos beállítások ill. a kapcsolatvezérló beállítások -->   <QueryTemplate> <![CDATA[ SELECT * FROM people WHERE userid='$requestContext.principalName' ]]> </QueryTemplate>  <Column columnName="firstname" attributeID="fname" /> <Column columnName="personid" type="String" /> </resolver:DataConnector> </source>  '''7. Összegzés''' ''Működő példa a fentieket összegezve'' <source lang="xml">
<!-- ========================================== -->
<!-- ========================================== -->
<!-- resolver:DataConnector id="vhoMySQLsurname" xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc"> <ApplicationManagedConnection jdbcDriver="com.mysql.jdbc.Driver" jdbcURL="jdbc:mysql://localhost:3306/VHOtools?autoReconnect=true" jdbcUserName="DATABASE_USER" jdbcPassword="DATABASE_USER_PASSWORD" /> <QueryTemplate> <![CDATA[ SELECT uniqueID FROM vho_Users WHERE username = '$requestContext. --principalName' ]]> </QueryTemplate>  <Column columnName="uniqueID" attributeID="uid" /> </resolver:DataConnector>  </source>
== Principal Connectors ==
</source>
ttribútum

Navigációs menü