„Shib2IdpAttrib” változatai közötti eltérés
1. sor: | 1. sor: | ||
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. | 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. | ||
− | == | + | |
+ | == Attribute-resolver alapbeállítások == | ||
Ezeket általában nem kell állítgatni, megfelelőek az alapbeállítások | Ezeket általában nem kell állítgatni, megfelelőek az alapbeállítások | ||
<source lang="xml"> | <source lang="xml"> | ||
24. sor: | 25. sor: | ||
− | == | + | == Attribútumttribú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 Simple vagy Scoped, de mivel a második nem szabványos | ||
+ | |||
<!-- ========================================== --> | <!-- ========================================== --> | ||
37. sor: | 48. sor: | ||
== Kapcsolódások adattárakhoz == | == Kapcsolódások adattárakhoz == | ||
− | Ahhoz, hogy megkaphassuk az egyes | + | Ahhoz, hogy megkaphassuk az egyes 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 relációs adatbázisokhoz === | === Kapcsolódás relációs adatbázisokhoz === | ||
43. sor: | 54. sor: | ||
'''1. Konnektor definiálása''' | '''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 | + | Ú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 | + | *'''id''' - egyedi azonosító, mellyel az attribútum definicióknál elérhetjük a konnektort |
− | '' | + | ''Attribú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ó | *'''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 az 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> | *'''queryUsesStoredProcedure''' - logikai érték, mely meghatározza, hogy az 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> | ||
78. sor: | 89. sor: | ||
'''4/a. Idp által natívan vezérelt adatbáziskapcsolatok beállítása''' | '''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ó) | + | 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 | *'''jdbcDriver''' - a JDBC meghajtó teljes elérési útvonala | ||
135. sor: | 146. sor: | ||
''Opcionális'' | ''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 | + | 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 |
144. sor: | 155. sor: | ||
''Az alábbiak közül minimum egyet kötelező megadni'' | ''Az alábbiak közül minimum egyet kötelező megadni'' | ||
− | *'''attributeID''' - az | + | *'''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 | *'''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 | ||
218. sor: | 229. sor: | ||
</source> | </source> | ||
+ | ttribútum |
A lap 2008. október 14., 15:11-kori változata
Az attribútum feloldást az IDP_HOME/conf
könyvtárban található attribute-resolver.xml
névre hallgató fájlban konfigurálhatjuk. A fájl szerkezetét tekintve négy részből áll.
Tartalomjegyzék
[elrejtés]Attribute-resolver alapbeállítások
Ezeket általában nem kell állítgatni, megfelelőek az alapbeállítások
<AttributeResolver xmlns="urn:mace:shibboleth:2.0:resolver" xmlns:resolver="urn:mace:shibboleth:2.0:resolver"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pc="urn:mace:shibboleth:2.0:resolver:pc"
xmlns:ad="urn:mace:shibboleth:2.0:resolver:ad" xmlns:dc="urn:mace:shibboleth:2.0:resolver:dc"
xmlns:enc="urn:mace:shibboleth:2.0:attribute:encoder" xmlns:sec="urn:mace:shibboleth:2.0:security"
xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver classpath:/schema/shibboleth-2.0-attribute-resolver.xsd
urn:mace:shibboleth:2.0:resolver:pc classpath:/schema/shibboleth-2.0-attribute-resolver-pc.xsd
urn:mace:shibboleth:2.0:resolver:ad classpath:/schema/shibboleth-2.0-attribute-resolver-ad.xsd
urn:mace:shibboleth:2.0:resolver:dc classpath:/schema/shibboleth-2.0-attribute-resolver-dc.xsd
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>
Attribútumttribú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ó <AttributeDefinition>
elemet három attribútumával:
<resolver:AttributeDefinition id="cn" xsi:type="simple:Simple"
xmlns="urn:mace:shibboleth:2.0:resolver:ad">
- id - az attribútum egyedi neve (nagyon fontos a jó névválasztás :) )
- xsi:type - értéke lehet Simple vagy Scoped, de mivel a második nem szabványos
Kapcsolódások adattárakhoz
Ahhoz, hogy megkaphassuk az egyes 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 $requestContext.principalName
néven hivatkozhatunk, amely kiindulópontként szolgálhat lekérdezéseinkhez.
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 <DataConnector xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc">
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
Attribú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
true
, azaz csak olvasható - queryUsesStoredProcedure - logikai érték, mely meghatározza, hogy az 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
false
- 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
true
<resolver:DataConnector xsi:type="RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
id="UNIQUE_ID">
<!-- Ide kerülnek majd az további konfigurációs beállítások a következő lépések alapján -->
</resolver:DataConnector>
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 <ApplicationManagedConnection>
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
<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>
4/b. Konténer által vezérelt adatbáziskapcsolatok beállítása
5. SQL lekérdezés definiálása
<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>
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 <Column>
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
<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>
7. Összegzés
Működő példa a fentieket összegezve
<!-- ========================================== -->
<!-- Data Connectors -->
<!-- ========================================== -->
<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>
Principal Connectors
Ezt sem kell babrálni :)
<!-- ========================================== -->
<!-- Principal Connectors -->
<!-- ========================================== -->
<resolver:PrincipalConnector xsi:type="Transient" xmlns="urn:mace:shibboleth:2.0:resolver:pc" id="shibTransient"
nameIDFormat="urn:mace:shibboleth:1.0:nameIdentifier" />
<resolver:PrincipalConnector xsi:type="Transient" xmlns="urn:mace:shibboleth:2.0:resolver:pc" id="saml1Unspec"
nameIDFormat="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" />
<resolver:PrincipalConnector xsi:type="Transient" xmlns="urn:mace:shibboleth:2.0:resolver:pc" id="saml2Transient"
nameIDFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" />
ttribútum