„Shib2IdpAttrib” változatai közötti eltérés

Innen: KIFÜ Wiki
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.
  
== Attributum resolver alapbeállítások ==
+
 
 +
== 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:
  
  
== Attributumok definiálása ==
+
== 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 attributumokhoz 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.
+
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 attributumokkal
+
Ú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
  
''Attributumok, melyeket kötelező megadni''
+
''Attribútumok, melyeket kötelező megadni''
*'''id''' - egyedi azonosító, mellyel az attributum definicióknál elérhetjük a konnektort
+
*'''id''' - egyedi azonosító, mellyel az attribútum definicióknál elérhetjük a konnektort
  
  
''Attributumok, melyeket opcionálisan megadhatók''
+
''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ó) attributumokkal
+
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 attributumba szervezi a konnektor, melyet lehetőségünk van felüldefiniálni, ehhez a <code><Column></code> elemet használhatjuk az alábbi atttributumokkal
+
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 attributum azonosítója, melyhez hozzárendeljük az eredményt
+
*'''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.


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