Konfigurace SP 2.0 (czTestFed)

(Dokud nebude návod kompletní, inspirujte se návodem pro migraci konfigurace po upgrade ze stránky Upgrade SP z 1.3.1 na 2.0 )

Předpokládejme, že následující věci jsou splněny:

  • máte nainstalovaného a fungujícího Apache 2.x
  • v Apache funguje SSL (poslouchá na portu 443, používá na něm SSL, má nakonfigurovaný certifikát od SureServer EDU)
  • máte vydaný serverový certifikát od CESNET CA a příslušný tajný klíč, řekněme v souborech /etc/apache2/ssl/klic.pem a /etc/apache2/ssl/cert.pem.
  • máte nainstalovaný Shibboleth SP 2.0

Pak v adresáři /etc/shibboleth jsou konfigurační soubory pro SP, zejména hlavní konfigurační soubor shibboleth2.xml, a někde, např. v adresáři /etc/apache2 jsou konfigurační soubory Apache.

Konfigurace Apache

Apache musí načíst modul pro Shibboleth. Pokud jste instalovali z RPM, v adresáři /etc/apache2/conf.d by měl být soubor shib.conf. Pokud tam není, zkopírujte soubor /etc/shibboleth/apache22.config na jeho místo, nebo jinak zajistěte, že Apache bude číst direktivy v něm umístěné. V podstatě nejdůležitější je v něm direktiva vypadající nějak takto

LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_22.so

která zajistí natažení modulu pro Shibboleth.

Soubor obsahuje i ukázku jak nastavit ochranu Shibbolethem pro všechna URL začínající na /secure:

<Location /secure>
  AuthType shibboleth
  ShibRequireSession On
  require valid-user
</Location>

Pro vyzkoušení to stačí, podrobnosti viz Použití SP z hlediska vývojáře.

Modul v Apache potřebuje komunikovat s démonem shibd, který je v /usr/sbin/shibd. Vytvořte proto pro něj startovací dávku, můžete využít dávky v /etc/shibboleth pro Debian, RedHat a OS-X. V podstatě stačí při startu Apache spustit příkaz

/usr/sbin/shibd -fc /etc/shibboleth.shibboleth2.xml

Ale ještě ho nespouštějte, je třeba nakonfigurovat shibd.

Konfigurace Shibd

Pro konfiguraci potřěbujete znát následující věci:

Otevřete ve svém oblíbeném editoru soubor /etc/shibboleth/shibboleth2.xml a udělejte následující změny.

Nastavení entityId a homeURL

V tagu <ApplicationDefaults> nastavte atributy entityID a homeURL na hodnoty výše zmíněné hodnoty:

     <ApplicationDefaults id="default" policyId="default"
        entityID="https://www.moje.cz/shibboleth/cztestfed/sp"
        homeURL="http://www.moje.cz/"

Nastavení RequestMapper

V části RequestMapper nastavte jméno webserveru. Položky <Path> není nutné uvádět, stejnou konfiguraci můžete provést v konfiguraci Apache pomocí direktiv.

<RequestMapper type="Native">
        <RequestMap applicationId="default">
            <Host name="www.moje.cz" >
                <Path name="secure" authType="shibboleth" requireSession="true"/>
            </Host>
        </RequestMap>
</RequestMapper>

Nastavení zdroje metadat

Nastavte zdroj metadat. Shibboleth 2.0 podporuje jejich stahování z URL a ukládání do lokálního souboru. Interval je v sekundách. Uvedené nastavení nekontroluje XML-podpisy v metadatech, ale v tomto okamžiku v metadatech stejně žádné nejsou. Více viz dokumentace Shibboleth 2.0.

   <MetadataProvider type="XML" uri="http://www.eduid.cz/docs/cztestfed/metadata/cztestfed-metadata.xml"
       backingFilePath="/etc/shibboleth/cztestfed-metadata.xml" reloadInterval="7200">
   </MetadataProvider>

Případné další elementy MetadataProvider, které nepoužíváte, raději zakomentujte.

Nastavení cest k certifikátu a klíči

Nastavte cestu ke klíči a certifikátu:

<CredentialResolver type="File" key="/etc/apache2/ssl/key.pem" certificate="/etc/apache2/ssl/cert.pem"/>

Nastavení zahájení autentizace

A ještě je potřeba upravit část konfigurující vyvolání autentizace. Je potřeba

  • zakomentovat první <SessionInitiator> protože jinak se bud používat on
  • nastavit URL pro WAYF server federace

takže konfigurace bude vypadat nějak takto:

<!--
  <SessionInitiator type="Chaining" Location="/Login" isDefault="true" id="Intranet"
                    relayState="cookie" entityID="https://idp.example.org/shibboleth">
    <SessionInitiator type="SAML2" defaultACSIndex="1" template="bindingTemplate.html"/>
    <SessionInitiator type="Shib1" defaultACSIndex="5"/>
  </SessionInitiator>
-->
  <SessionInitiator type="Chaining" Location="/WAYF" id="WAYF" relayState="cookie">
    <SessionInitiator type="SAML2" defaultACSIndex="1" template="bindingTemplate.html"/>
    <SessionInitiator type="Shib1" defaultACSIndex="5"/>
    <SessionInitiator type="WAYF" defaultACSIndex="5" URL="https://www.eduid.cz/cztestfed/wayf/"/>
  </SessionInitiator>

Toto je nastavení pro required sessions, tedy pokud na stránky mohou jen autentizovaní uživatelé. Když prohlížeč požádá o stránku, pro kterou je v konfiguraci Apache nastaveno

AuthType shibboleth
ShibRequireSession On

prohlížeč bude přesměrován na URL WAYF serveru a v cookie se zapamatuje, kam se má po autentizaci vrátit.

V tomto okamžiku máte základní konfiguraci hotovou. Spusťte Apache a shibd, a navštivte URL https://www.moje.cz/Shibboleth.sso/Metadata. Výsledný soubor pošlete správci federace, aby ho zařadil do metadat federace. Až tak učiní, počkejte pár hodin, než se změna projeví u IdP, a můžete navštívit URL https://www.moje.cz/secure pro vyzkoušení funčnosti.

Následují pokročilá nastavení.

Lazy sessions

Vyžadování autentizace po všech uživatelích je vhodné například u intranetu, ale u veřejných webserverů je častější případ, že uživatelé si mohou stránky anonymně prohlížet, a přihlásit se až v okamžiku, kdy chtějí nějaká data zapsat. To také umožňuje, aby prohledávací roboti vyhledávacích serverů (Google, Seznam atd.) mohli stránky navštívit a indexovat.

Pro tento případ Shibboleth podporuje tzv. lazy sessions. Uživatelé mohou na stránky anonymně a aktivují autentizaci v případě potřeby kliknutím na speciální odkaz.

V konfiguraci je potřeba doplnit další SessionInitiator

<SessionInitiator type="WAYF" Location="/WAYF/czTestFed" id="WAYFcz" 
     relayState="cookie" URL="https://www.eduid.cz/cztestfed/wayf/" defaultACSIndex="5">
</SessionInitiator>

kde atributem Location volíme ten speciální odkaz, atributem URL volíme kam má být prohlížeč přesměrován (adresa WAYF serveru) a atribut defaultACSIndex=„5“ odkazuje na tag <AssertionConsumerService> níže, který určuje jakým způsobem má IdP předat informace na SP.

Při této konfiguraci bude autentizace vyvolána návštěvou URL https://www.moje.cz/Shibboleth.sso/WAYF/czTestFed.

Stále ale platí, že pokud aplikace sídlí na adrese https://www.moje.cz/aplikace/, musíte v konfiguraci Apache nastavit:

<Location /aplikace/>
  AuthType shibboleth
  require shibboleth
</Location>

Po autentizaci je uživatel přesměrován na výchozí URL pro danou aplikaci. Pokud chcete, aby byl uživatel přesměrován jinám, lze toto chování změnit pomocí GET parametru target u odkazu na SessionInitiator URL, například:

https://www.moje.cz/Shibboleth.sso/WAYF/czTestFed?target=https://www.moje.cz/aplikace/admin

Lze nastavit i další parametry, viz oficiální dokumentace.

Vynechání WAYF

Pro intranetové aplikace je zbytečné obtěžovat uživatele cestou přes WAYF, můžeme je poslat přímo na příslušný IdP. Toho dosáhneme tak, že v konfiguraci Apache uvedeme

     AuthType shibboleth
     ShibRequireSessionWith mujIdP

a v shibboleth2.xml vytvoříme další SessionInitiator s odpovídajícím identifikátorem:

<SessionInitiator id="mujIdP" Location="/WAYF/moje" type="Shib1" defaultACSIndex="5" relayState="cookie"
   URL="https://idp.moje.cz/shibboleth-idp/SSO" entityID="urn:mace:cesnet.cz:cztestfed:idp.moje.cz" />

kde atribut id musí odpovídat identifikátoru z direktivy ShibRequireSessionWith, atributem Location volíme speciální odkaz pro aktivaci pokud používáme lazy sessions, atributem URL volíme přímé přesměrování na vybraného IdP a v atributu entityID musí být příslušné entityID uvedé pro IdP v metadatech federace.

Více virtuálních serverů

Pokud potřebujete mít na jednom Apache více virtuálních webserverů a na nich používat Shibboleth, zaregistrujte každý zvlášt do federace, tj. mějte pro něj samostatný certifikát a přidejte ho do metadat federace.

V souboru shibboleth2.xml pak vytvořte další aplikaci. Nejdřív v RequestMap přidejte další server, např.:

        <RequestMap applicationId="default">
            <Host name="www.moje.cz">
            </Host>
            <Host name="www.druhy.cz" applicationId="druhy">
            </Host>
        </RequestMap>

a pak na konci tagu ApplicationDefaults vytvořte druhou aplikaci definováním rozdílů oproti první:

        <ApplicationOverride id="druhy" entityID="https://www.druhy.cz/shibboleth/cztestfed/sp" homeURL="http://www.druhy.cz/">
            <CredentialResolver type="File" key="/etc/apache2/ssl/druhykey.pem" certificate="/etc/apache2/ssl/druhycert.pem"/>
        </ApplicationOverride>
cztestfed/howto/sp2/config/default/index.txt · Poslední úprava: 2009-06-08 13:55 autor: novakoi@fel.cvut.cz
CESNET2 powered
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0