Módosítások

Shib2IdpInstall

5 952 bájt hozzáadva, 2013. március 14., 11:09
maxrefreshdelay HREF föderációs metadata beállítása az IdP-ben
== Előkészületek ==
=== entityID ===
Fontos, hogy az entityID '''egyedi''' és '''állandó''' legyen. Javasolt forma: '''<code>https://idp.serverneveintezmenyneve.hu/idp/shibboleth</code>'''.
=== Tűzfal ===
== JDK ==
Sajnos Etch Debian Lenny alatt a <code>sun-java6-jdk</code> csomag függ egy csomó X-es csomagtól, melyeket nem biztos, hogy szeretnénk telepíteni egy szerveren, csomagot kell feltelepíteni. Telepítés előtt érdemes lehet * feltenni a <code>sunaz aptitude-java6-jre</code> csomagot ÉS* kézzel telepíteni egy JDK-t, mondjuk a http://java.sunban kikapcsolni az opcionális függőségek telepítését.com oldalról letöltve
Ez igazából egy nagy ''hack'', ugyanis ahhoz, hogy a tomcat-et csomagból telepíteni tudjuk, kell a <code>java2-runtime</code> csomag, amelyet biztosít a JRE is, '''viszont''' a Tomcat-nek JDK kell, hogy JSP-t tudjon futtatni.:: <small>'''Megj.:''' Minden JSP-t első futtatáskor a konténer (Tomcat) lefordít Java kóddá, aztán byte aptitude install sun-kóddá, ezért tart jó sokáig az java6- újraindítás utáni - első request. Ezután az eredményt elcache-eli, így csak akkor kell újrafordítania, ha a JSP megváltozik.</small> A JDK telepítés elég egyszerű, letöltjük a java.sun.com oldalról a nekünk tetsző verziót, aztán kicsomagoljuk, mondjuk a <code>/usr/lib</code> alá, aztán csinálunk egy szimbolikus linket, hogy a <code>/usr/jdk</code> mindig a "jó" JDK-ra mutasson.
Állítsuk be, a <code>JAVA_HOME</code> környezeti változót!
export JAVA_HOME=/usr/jdklib/jvm/java-6-sun
{{UNCERTAINATTENTION| Ez nem biztosAz <code>openjdk-6-jdk</code> csomag használata esetén ne felejtsük feltenni a <code>ca-certificates-java</code> csomagot, hogy kell (security provider, bouncy castle) anélkül ugyanis hibát fogunk kapni az IdP indításakor!}}
=== Shibboleth security provider ===
{{INFO|A Shibboleth Security Provider csak akkor szükséges, ha a Java alkalmazásszerver (Tomcat) önállóan fog kéréseket feldolgozni és nem kerül elé proxy (Apache)}}
=== Shibboleth security provider ===
Be kell másolni a <code>lib/shib-jce-1.0.jar</code> állományt a <code>$JAVA_HOME/jre/lib/ext</code> könyvtárba. Ha az <code>ext/</code> könyvtár nem létezik, akkor hozzuk létre.
cp lib/shib-jce-1.0.jar $JAVA_HOME/jre/lib/ext
security.provider.<b>7</b>=edu.internet2.middleware.shibboleth.DelegateToApplicationProvider
: '''Megj.:''' a "security.provider." után következő szám mindig a megelőzőnél legyen eggyel nagyobb!
 
=== Bouncy Castle JCE ===
{{UNCERTAIN|Az alábbi leírás az 5-ös JVM-hez készült, 6-os JVM esetén erre nem biztos hogy szükség van.}}
 
A JVM-mel jövő Java Cryptography Engine (JCE) nem támogatja az összes kriptográfiai algoritmust, amelyre az Identity Providernek szüksége lehet (pl. XML Digital Signature, XML Encryption). A Bouncy Castle JCE ezek mellett még olyan algoritmusokat is tartalmaz (általában hatékonyabb és szabványosabb formában), amelyek benne vannak a Java JCE-ben.
== Tomcat 6 ==
A 2.1.3 és újabb IdP megköveteli a Tomcat6 használatát (Tomcat5.5 -tel bizonyos böngészők esetén nem működik rendesen). A Debian Lenny nem tartalmazza a Tomcat6-ot, ezért a testing ágból kell feltelepíteni.
 
A Tomcat6-ra való frissítésről további - vázlatos - információkkal ez az [[Tomcat55_to_Tomcat6|oldal szolgál]].
=== Telepítés ===
Ha minden rendben meg, és a squeeze source beállításra került, akkor elegendő egy apt-get aptitude install tomcat6parancs kiadása. Ez felpakolja a tomcat különböző függőségeit is- az ajánlott függőségek (tomcat6-admin, ám nem biztos-docs, hogy a debian stabil kiadásában már szerepelstb.  Ahhoz, hogy a Tomcat rendben elinduljon, ) feltelepítése nem szükséges neki megmondani, hogy hol találja a JDK-t. Ezért tegyük a <code>/etc/default/tomcat6</code> fájlba a következőt: JAVA_HOME=/usr/jdk
Ne felejtsük el, hogy a Tomcat szerver "tomcat6" user nevében fog futni! Mivel a Shibboleth servletnek szüksége van arra, hogy hozzáférjen a filerendszerhez, a Java Security Manager-t ki kell kapcsolni a <code>/etc/default/tomcat6</code> fájlban:
A <code>/etc/tomcat6/server.xml</code> fájlt kell szerkesztenünk
==== Ha a Tomcat Apache mögött fut ====
A 8009-es porton figyelő Connector elem konfigurációjához hozzá kell adni, hogy a <code>tomcatAuthentication</code> értéke "false" legyen, ezen kívül a hozzáférést korlátozhatjuk a localhost-ra is (hiszen a Connector-t csak a helyben futó Apache mod_proxy_ajp konnektora érheti el).
<source lang="xml">
</source>
==== Ha a Tomcat önállóan, Apache nélkül fut ====
Ha a Tomcat Apache nélkül fut, akkor be kell állítani, hogy az SP-vel való kommunikációra fenntartott 8443-as porton egyből a Tomcat figyeljen.
<source lang="xml">
Ahol az <code>IDP_HOME</code> az IdP alapkönyvtára, a <code>PASSWORD</code> pedig az [[#Shibboleth 2.0 IdP telepítés|IdP telepítésekor]] megadandó jelszó lesz.
{{INFO_ENINFO|Amennyiben a Tomcat önállóan fut, szükség van a Shibboleth Security Provider telepítésére!}}
[https://spaceswiki.internet2shibboleth.edunet/confluence/display/SHIB2/IdPApacheTomcatPrepare További információ angolul]
== Apache beállítás ==
Tanusítványok Tanúsítványok beszerzése és bemásolása <code>/etc/ssl</code> vonatkozó alkönyvtárai alá.
Meg kell adni, hogy az apache Apache figylejen a 443-as és 8443-as portokon. Az alábbiak kerüljenek a <code>/etc/apache2/ports.conf</code> fájlba
Listen 443
Listen 8443
=== SSO URL (443-as port) ===
Be kell állítani a virtuális hosztot, amelyhez az IdP-t rendeltük. Először a 443-as portot konfiguráljuk.
<source lang="apache"> <VirtualHost _default_:443> ServerName aai-logon.example.org :443
SSLEngine On
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /etc/ssl/certs/aai-logon.example.org.crt SSLCertificateKeyFile /etc/ssl/private/aai-logon.example.org.key SSLCertificateChainFile /etc/ssl/certs/aai-logon.example.org.crt ProxyRequests Off <Proxy ajp://localhost:8009> Allow from all </Proxy> ProxyPass /idp ajp://localhost:8009/idp retry=5 </VirtualHost> </source>Ezen a porton valamilyen széles körben ismert tanúsítványt kell használni, mivel a felhasználók böngészőjének ismerniük kell(ene) a kibocsátót.
=== AA ill. Artifact (8443-as port) ===
Ezen keresztül az SP és az IdP közvetlenül kommunikálnak egymással. Ide arra a tanúsítványra van szükség, amely a föderációs metadatában szerepel - az aláírója nem érdekes.
Majd a 8443-as portot A csatorna felépítésekor az IdP és az SP is beállítjuk'''Megjegyzés''': a 8443autentikálja magát. Az SP autentikációját az Apache végzi, ami nem végez kibocsátó-as port beállítása csak akkor kellellenőrzést (<code>optional_no_ca</code>). Ez utóbbit az IdP alkalmazás végzi el, ezért nagyon fontos, ha Artifactot szeretnénk használnihogy a kliens tanúsítványát az Apache továbbadja az alkalmazásnak (<code>ExportCertData</code>). Ha megelégszünk {{ATTENTION_EN|Az Apache a HTTPtanúsítvány-Post kínálta lehetőségekkelellenőrzésnél ellenőrzi a tanúsítvány típusát. Ezért az SP tanúsítványának vagy kliens tanúsítványnak kell lennie, akkor elég a 443-as portot beállítanivagy nem lehet benne típus információ.}}<source lang="apache"> <VirtualHost _default_:8443> ServerName aai-logon.example.org :8443
SSLEngine On
SSLCipherSuite ALL:!ADH:!EXPORT56:!EXPORT40:RC4+RSA:!SSLv2:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/ssl/certs/aai-aa.example.org.crt
SSLCertificateKeyFile /etc/ssl/private/aai-aa.example.org.key
SSLCertificateChainFile /etc/ssl/certs/aai-aa.example.org.crt
SSLCACertificateFile /etc/ssl/ca-bundle.switchaai.crt
SSLVerifyDepth 10
SSLVerifyClient optional_no_ca
ProxyRequests Off
<Proxy ajp://localhost:8009>
Allow from all
</Proxy>
ProxyPass /idp ajp://localhost:8009/idp retry=5
</VirtualHost>   Ezek után engedélyezni kell a virtuális hosztokat  a2ensite aai-logon a2ensite aai-aa apache2ctl -t <font color="#999999">Syntax OK</fontsourceMajd az ssl modult
a2enmod ssl A virtuális hoszt engedélyezése után be kell tölteni az <font color="#999999"code>Module ssl installed; run /etc/init.d/apache2 force-reload to enable.</fontcodeVégül a proxy_ajp modult  a2enmod proxy_ajp és <font color="#999999"code>Enabling proxy as a dependency Module proxy installed; run /etc/init.d/apache2 force-reload to enable. Module proxy_ajp installed; run /etc/init.d/apache2 force-reload to enable. </fontcodeVégezetül modulokat, majd újra kell indítani az apache-ot  apache2ctl -k restart.
== Shibboleth 2.x IdP servlet telepítés ==
====Letöltés====
A hivatalos IdP kiadás innen [http://shibboleth.internet2.edu/downloads/shibboleth/idp/latest/|innen tölthető le]
Alternatívaként az NIIF által patchelt, ezáltal SLO képes IdP kiadást ajánljuk, ami a [httpshttp://www.aaisoftware.niif.hu/sites/aai.niif.hu/files/shibboleth-identityprovider-2.1NIIF AAI oldalról] érhető el.3A Single Logout-slo3képes IdP-bin.tar_.gz|IdP letöltése innen] (ajánljuk :) ) További ről további [[Single_Logout_in_Shibboleth_IdP|információ itt]].
====Kicsomagolás====
==== Endorsed jar állományok ====
Sajnos - legalábbis a cikk írásakor - a "kincstári" Sun-os Tomcat (Java?) JAXP parser egy ismert memóriaszivárgást tartalmaz, ezért a disztribúcióban az <code>endorsed/</code> könyvtárban található .jar file-okat kézzel be kell másolni a Tomcat <code>endorsed/</code> könyvtárába.
: <small>A Debian alatti tomcat6 csomag használatakor a <code>/usr/share/tomcat6/common/endorsed </code> könyvtárba kell tenni a jar file-okat(ezt a könyvtárt létre is kell hozni).</small> rm /usr/share/tomcat6/endorsed/xercesImpl.jar rm /usr/share/tomcat6/endorsed/xml-apis
mkdir /usr/share/tomcat6/endorsed
cp endorsed/*.jar /usr/share/tomcat6/endorsed/
export JAVA_HOME=/usr/jdk
cd /usr/local/shibboleth-idp
chmod 755 antinstall.sh ./antinstall.sh
A telepítés során az alábbi kérdésekre kell választ adnunk:
mv $IDP_HOME/logs /var/log/`basename $IDP_HOME`
ln -s /var/log/`basename $IDP_HOME` $IDP_HOME/logs
mkdir /var/runlib/`basename $IDP_HOME` mv $IDP_HOME/metadata /var/runlib/`basename $IDP_HOME`/metadata ln -s /var/runlib/`basename $IDP_HOME`/metadata $IDP_HOME/metadata
'''Jogosultságok beállítása''' - hogy a <code>tomcat6</code> felhasználó hozzáférhessen az alábbi könyvtárakhoz
chown -R tomcatt6 tomcat6 /var/log/`basename $IDP_HOME` /var/runlib/`basename $IDP_HOME`
'''További, már telepített IdP-től függő tomcat beállítás''' (mi ez magyarul???)
cd /var/lib/tomcat6/
mkdir -p conf/Catalina/localhost
unpackWAR="false" />
</source>
 
==== Naplófájlok rotálása ====
Az alapértelmezett logging.xml nem törli a régi állományokat, ezért ezek egy idő után megtöltik a diszket.
 
Erre a korrekt megoldás az (lenne), ha a Logback alrendszert utasítjuk, hogy az N (a példában 90) napnál régebbi fájlokat rotálja ki. Ehhez a <code>logging.xml</code>-ben adjuk meg a <code>maxHistory</code> paramétert az ''összes'' <code>rollingPolic</code>y-nál, valahogy így:
<source lang="xml">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>/usr/local/shibboleth-idp/logs/idp-access-%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>4</maxHistory>
</rollingPolicy>
</source>
 
 
Sajnos azonban jelenleg a logback [http://jira.qos.ch/browse/LBCORE-147 csak egy állományt töröl], a régi file-okat megtartja (pl. akkor is, ha több, mint egy napig nem futott az IdP. Amíg ez nincs megoldva, addig kerülő megoldás lehet cron-ból törölni a régi file-okat
sudo crontab -u tomcat6 -e
MAILTO=mail@example.com
#m h dom mon dow command
52 18 * * * find /var/log/shibboleth-idp/ -mtime +90 -delete
== Teszt ==
== Shibboleth 2.0 IdP beállítás ==
=== Metadaták Metadata beállítása ==={{ambox==== Metadata aláírás ellenőrzés beállítása ====Az IdP-be beállított metaadat(ok) valódiságának ellenőrzéséhez szükséges egy ún. <code>TrustEngine</code> beállítása. Ezt a <code>relying-party.xml</code> -ben kell megtenni a <code>Security Configurations</code> részben:  <security:TrustEngine id="shibboleth.MetadataTrustEngine" xsi:type="security:StaticExplicitKeySignature"> <security:Credential id="HREFSigner" xsi:type="security:X509Filesystem"> <security:Certificate>/path/to/idp/credentials/href-metadata-signer-2011.crt</security:Certificate> </security:Credential> </security:TrustEngine> A konfigurációban hivatkozott <code>href-metadata-signer-2011.crt</code> elérhető innen: https://metadata.eduid.hu/href-metadata-signer-2011.crt, SHA-1 lenyomata a következő: <code>FE:AE:0B:E8:FB:59:ED:F7:CB:7F:69:DF:19:4F:8B:6D:C7:F6:96:66</code> ==== HREF föderációs metadata beállítása az IdP-ben ====A HREF metadata állomány elérhetősége:* http://metadata.eduid.hu/current/href.xml A Shibboleth IdP <code>relying-party.xml</code> konfigurációban a következőképpen lehet beállítani a HREF metaadatot (fontos hogy az előző pontban leírt <code>TrustEngine</code> is be legyen állítva):  <MetadataProvider id="HREF-Metadata" xsi:type="FileBackedHTTPMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata" metadataURL="http://metadata.eduid.hu/current/href.xml" backingFile="/path/to/idp/metadata/href.xml" maxRefreshDelay="PT1H">| <MetadataFilter xsi:type = todo"SignatureValidation" trustEngineRef="shibboleth.MetadataTrustEngine" />| image </MetadataProvider> ====Tovább a föderációba==== Amennyiben a telepítendő IdP-t szeretnénk a HREF-be integrálni, úgy ennél a pontnál küldjünk egy levelet az [mailto:aai@niif.hu aai@niif.hu] címre, amely nyomán, ha minden rendben van, az IdP regisztrálásra kerül a [[Resource_Registry]]-ben, s a válasz e-mail tartalmaz majd két hivatkozást, melyekről letölthetők az <code>attribute-filter.xml</code> és <code>attribute-resolver.xml</code> fájlok. Ezek már testreszabva tartalmazzák az IdP igényeit, az első fájlt elég csak bemásolni, a másodikban pedig - értelemszerűen - az egyes, a helyi erőforrásokra vonatkozó felhasználóineveket és jelszavakat kell kicserélni a megfelelőre. [[Image:UnderConstructionResource_Registry#IdP_regisztr.C3.A1ci.C3.pngB3|40pxTovábbi információk a Resource Registry-be történő felvételről]]| text ;Attribútum filter automatikus frissítéseA Resource Registry automatikusan generálja minden egyes föderációban szereplő IdP számára a saját, testre szabott attribútum filterét, így célszerű úgy beállítani az IdP-t, hogy ezt a fájlt automatikusan töltse le. Ehhez hozzunk létre egy <code>confcache</code> nevű könyvtárat, adjunk rá írásjogot a <code>tomcat6</code> felhasználónak, majd szerkesszük a <code>conf/service.xml</code>fájlt. Az XML felső harmadában kerül megadásra az <code>AttributeFilterEngine</code>, melyet az alábbiak alapján kell átírni.  <Service id="shibboleth.AttributeFilterEngine" xsi:type="attribute-afp:ShibbolethAttributeFilteringEngine" configurationResourcePollingFrequency="3600000" configurationResourcePollingRetryAttempts="128"> <ConfigurationResource url="https://rr.aai.niif.hu/gen_attribute-filter.php/href/IDP_NEVE_AZ_RRBEN/attribute-filter.xml" file="/path/to/shibboleth-idp/confcache/attribute-filter.xml" xsi:type= "resource:FileBackedHttpResource" /> </Service> ;Több attribútum filter használataHasznos lehet, ha a föderációs szűrőkön kívül további irányokba kívánunk IdP-nkből attribútumokat kiadni. Elterjedt, hogy pl. különböző google szolgáltatásokhoz lehet az intézményen keresztül autentikálni, amely beállítási részleteket értelemszerűen a Resource Registry nem tartalmazza, így a letöltött friss, és a régi, helyi adatokat is tartalmazó fájlok egyesítése bosszantó plusz munka lehet. Ezt elkerülendd dolgozhatunk több attribútum filterfájlból. Ehhez ismét a <bigcode>'''A metadatákkal kapcsolatos rész még hiányzik'''conf/service.xml</bigcode>fájlt kell szerkeszteni. Alább a fenti kódrészlet kiegészítése.  <Service id="shibboleth.AttributeFilterEngine" xsi:type="attribute-afp:ShibbolethAttributeFilteringEngine" configurationResourcePollingFrequency="3600000" configurationResourcePollingRetryAttempts="128"> <ConfigurationResource url="https://rr.aai.niif.hu/gen_attribute-filter.php/href/IDP_NEVE_AZ_RRBEN/attribute-filter.xml" file="/path/to/shibboleth-idp/confcache/attribute-filter.xml" xsi:type="resource:FileBackedHttpResource" />{{#if <ConfigurationResource file="/path/to/shibboleth-idp/conf/attribute-filter-local.xml" xsi:type="resource:{{{1|}}} | {{{1}}} | Ha ki tudod egészíteniFilesystemResource" /> </Service> Ezek a lépések természetesen kihagyhatók, ha nincs szándékunkban a föderáció tagjaivá válni, megköszönjük!ekkor érdemes az alább részletezett attribútumokhoz kapcsolódó tudnivalókkal folytatni.}}}};[[EduidFedStats|Statisztika küldés]]
=== [[Shib2IdpAuth | Autentikáció beállítása]] ===

Navigációs menü