Konfigurace SP 1.3 (czTestFed)

Konfigurace popsaná v tomto návodě je specifická pro systém Debian (především konfigurace Apache), ale s mírnými úpravami lze použít i pro jiné systémy.

Shibboleth SP

Konfigurace Shibboleth SP je rozdělena do dvou souboru:

  • shibboleth.xml - hlavní konfigurační soubor, jak pro modul mod_shib, tak i pro daemon shibd
  • AAP.xml - nastavení AAP (Attribute Acceptance Policy) - jaké atributy a za jakých podmínek přijíma SP k zpracování

Konfigurační soubory jsou ve formátu XML a nabízí pokročilé a flexibilní možnosti nastavení. Pro začatek však doporučujeme stáhnout si zjednodušené a okomentované verze z našeho repozitáře a použít je jako šablony pro vlastní konfiguraci:

V tomto návodě jsou popsané minimální potřebné úpravy konfiguračních souborů pro úspěšné nasazení SP v rámci czTestFed. Podrobné informace o konfiguraci lze získat na stránkách Shibboleth wiki:

Poznámka: Cesty k souborům v přiložených konfiguračních souborech odpovídají baličkové instalaci z Debian Etch. Pokud máte jinou instalaci, budou se tyto cesty pravděpodobně lišit.

shibboleth.xml

Jako základ konfigurace použijeme šablonu z repozitáře:

# cd /etc/shibboleth
# mv shibboleth.xml shibboleth.xml.dist
# wget https://cztestfed.feld.cvut.cz/doc/shibboleth.xml

Do šablony je potřeba zanést následující změny:

  • v elementu <Local> najdeme podelement <Host>, do jehož atributu name vyplníme hostname serveru provozující SP
  • v elementu <Applications> nastavíme následující atributy:
    • providerID - identifikační řetězec vašeho SP, získává se při registraci
    • homeURL - celé URL, na kterém sídlí aplikace
  • v elementu <CredentialsProvider> nastavit cesty ke klíči a certifikátu


shibboleth.xml

<SPConfig xmlns="urn:mace:shibboleth:target:config:1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:mace:shibboleth:target:config:1.0 /usr/share/xml/shibboleth/shibboleth-targetconfig-1.0.xsd"
    logger="/etc/shibboleth/shibboleth.logger"
    clockSkew="180">
 
  <!--
  Univerzalni moduly, pouzivane vsemi procesy Shibbolethu. Netreba nic
  menit.
  -->
  <Extensions>
    <Library path="/usr/lib/shibboleth/xmlproviders.so" fatal="true"/>
  </Extensions>
 
 
  <!--
  Globalni nastaveni, sdilene vsemi procesy Shibbolethu.
  -->
  <Global logger="/etc/shibboleth/shibd.logger">
 
    <!--
    Zpusob komunikace mezi modulem a daemonem
    - UnixListener - unix socket
    - TCPListener - TCP port
    -->
    <UnixListener address="/var/run/shib-shar.sock"/>
 
    <!--
    MemorySessionCache
      * cacheTimeout - za jak dlouho po expiraci je vymazana session
      * AATimeout - jak dlouho cekat na odpoved od AA (Attribute Authority)
      * AAConnectTimeout - jakou prodlevu tolerovat behem pripojeni k AA
      * defaultLifetime - zakladni zivotnost atributu, pokud atribut sebou nenese
      informaci o expiraci
      * strictValidity - ma se i nadale pouzivat atribut, pokud expiroval, ale
      nelze ho znovu ziskat?
      * propagateErrors - ukazovat uzivateli chyby nastale behem prenosu
      atributu
      * retryInterval - pokud je propagateErrors 'false' a dotaz se nepodari,
      za jak dlouho to zkusit znovu?
    -->
    <MemorySessionCache cleanupInterval="10" cacheTimeout="3600"
        AATimeout="30" AAConnectTimeout="15"
        defaultLifetime="1800" retryInterval="300"
        strictValidity="true" propagateErrors="false"/>
 
  </Global>
 
 
  <!--
  Tato sekce nese informaci o integraci Shibboleth sluzeb do prostredi web
  serveru. Prostrednictvim elementu "Host" a "Path", lze nastavit urcite
  parametry pro server jako celek nebo i pro jednotlive podadresare.
  -->
  <Local logger="/etc/shibboleth/native.logger" localRelayState="true">
 
    <RequestMapProvider type="edu.internet2.middleware.shibboleth.sp.provider.NativeRequestMapProvider">
      <RequestMap applicationId="default">
        <Host name="sp.domena.cz" requireSession="true" exportAssertion="true" >
        <!--
          <Path name="test" requireSession="false" />
          <Path name="info" requireSession="false" />
        -->
        </Host>
      </RequestMap>
    </RequestMapProvider>
 
  </Local>
 
 
  <!--
  Applications - sekce obsahuje defaultni konfiguraci pro dany SP. V pripade
  potreby muze obsahovat jeden nebo vice "Application" elementu,
  odpovidajici aplikacim, pro ktere chceme nastavit odlisne parametry.
 
    * providerID - identifikacni retezec aplikace/SP v ramci federace,
      ziskava se pri registraci
    * homeURL - URL aplikace, vyuziva se pro presmerovani
  -->
  <Applications id="default" providerId="https://sp.domena.cz/shibboleth/cztestfed/sp"
      homeURL="https://sp.domena.cz/"
      xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
      xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
 
    <!--
    Sessions - nastaveni lokalni session
      * lifetime - maximalni zivotnost
      * timeout - zivotnost v pripade necinnosti
      * checkAddress - overuje, zda se klientska IP adresa nezmenila
      * consistentAddress - overuje, zda klientska IP adresa nepochazi z
      jine site
      * handlerURL - URL, na kterem spociva handler, zodpovedny za vytvareni
      sessions
      * handlerSSL - vynutit pouziti SSL
      * cookieProps - nastaveni session cookie
    -->
    <Sessions lifetime="7200" timeout="3600" checkAddress="true" consistentAddress="true"
        handlerURL="/Shibboleth.sso" handlerSSL="true" idpHistory="true" idpHistoryDays="7"
        cookieProps="; path=/; secure">
 
      <!--
      SessionInitiator - definuje, jak se zpracovavaji zadosti o session
      (tj. povoleni pristupu ke zdroji). Zadosti lze presmerovat WAYF sluzbe
      nebo samotnemu IdP.
        * Location - URL, na kterem handler posloucha
        * wayfURL - URL WAYF sluzby
      -->
      <SessionInitiator isDefault="true" id="czTestFed" Location="/WAYF/czTestFed"
          Binding="urn:mace:shibboleth:sp:1.3:SessionInit"
          wayfURL="https://cztestfed.feld.cvut.cz/wayf/"
          wayfBinding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"/>
 
      <!--
      AssertionConsumerService - handler zpracovavajici SAML odpovedi nebo
      artefakty od IdP
      -->
      <md:AssertionConsumerService Location="/SAML/POST" isDefault="true" index="1"
          Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post"/>
 
      <md:AssertionConsumerService Location="/SAML/Artifact" index="2"
          Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01"/>
 
      <!--
      SingleLogoutService - definuje URL, na kterem sidli "logout" handler,
      provadejici lokalni logout (vymazani relevantnich cookies)
      -->
      <md:SingleLogoutService Location="/Logout" Binding="urn:mace:shibboleth:sp:1.3:Logout"/>
 
    </Sessions>
 
    <!--
    Errors - nastaveni chybovych hlaseni - sablony, styly, kontaktni adresa
    -->
    <Errors session="/etc/shibboleth/sessionError.html"
        metadata="/etc/shibboleth/metadataError.html"
        rm="/etc/shibboleth/rmError.html"
        access="/etc/shibboleth/accessError.html"
        ssl="/etc/shibboleth/sslError.html"
        supportContact="root@localhost"
        logoLocation="/shibboleth-sp/logo.jpg"
        styleSheet="/shibboleth-sp/main.css"/>
 
    <!--
    CredentialUse - odkazuje na element v sekci "CredentialProvider", ktery
    definuje, jake klice a certifikaty pouzivat pri komunikaci a pri
    podepisovani SAML zprav
    -->
    <CredentialUse TLS="cztestfed" Signing="cztestfed" />
 
    <!--
    AAPProvider - definice AAP v separatnim souboru
    -->
    <AAPProvider type="edu.internet2.middleware.shibboleth.aap.provider.XMLAAP"
        uri="/etc/shibboleth/AAP.cztestfed.xml"/>
 
    <!--
    MetadataProvider - metadata v separatnim souboru
    -->
    <MetadataProvider type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata"
        uri="/etc/shibboleth/cztestfed-metadata.xml"/>
 
    <TrustProvider type="edu.internet2.middleware.shibboleth.common.provider.ShibbolethTrust"/>
 
    <!--
    Audience - identifikacni retezec federace nebo jednotliveho IdP
    -->
    <saml:Audience>urn:mace:cesnet.cz:cztestfed</saml:Audience>
 
  </Applications>
 
  <!--
  CredentialsProvider - definice certifikatu a klicu
  -->
  <CredentialsProvider type="edu.internet2.middleware.shibboleth.common.Credentials">
    <Credentials xmlns="urn:mace:shibboleth:credentials:1.0">
      <FileResolver Id="cztestfed">
        <Key>
          <Path>/etc/ssl/private/sp.domena.cz.pem.key</Path>
        </Key>
        <Certificate>
          <Path>/etc/ssl/certs/sp.domena.cz.pem.crt</Path>
        </Certificate>
      </FileResolver>
    </Credentials>
  </CredentialsProvider>
 
</SPConfig>

AAP.cztestfed.xml

Vzorový konfigurační soubor AAP.cztestfed.xml obsahuje jen základní sadu atributů. Pro detailní popis syntaxe a možnosti nastavení si přečtěte návod na stránách Shibboleth wiki.


AAP.cztestfed.xml

<AttributeAcceptancePolicy xmlns="urn:mace:shibboleth:1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:mace:shibboleth:1.0 /usr/share/xml/shibboleth/shibboleth.xsd">
 
 
  <!-- eduPersonScopedAffiliation -->
  <AttributeRule Name="urn:mace:dir:attribute-def:eduPersonScopedAffiliation"
      Scoped="true" CaseSensitive="false" Header="Shib-EP-Affiliation" Alias="affiliation">
    <!-- Filtering rule to limit values to eduPerson-defined enumeration. -->
    <AnySite>
      <Value>MEMBER</Value>
      <Value>FACULTY</Value>
      <Value>STUDENT</Value>
      <Value>STAFF</Value>
      <Value>ALUM</Value>
      <Value>AFFILIATE</Value>
      <Value>EMPLOYEE</Value>
    </AnySite>
  </AttributeRule>
 
 
  <!-- eduPersonAffiliation -->
  <AttributeRule Name="urn:mace:dir:attribute-def:eduPersonAffiliation"
      CaseSensitive="false" Header="Shib-EP-UnscopedAffiliation" Alias="unscoped-affiliation">
 
    <AnySite>
      <Value>MEMBER</Value>
      <Value>FACULTY</Value>
      <Value>STUDENT</Value>
      <Value>STAFF</Value>
      <Value>ALUM</Value>
      <Value>AFFILIATE</Value>
      <Value>EMPLOYEE</Value>
    </AnySite>
  </AttributeRule>
 
 
  <!-- eduPersonPrincipalName -->
  <AttributeRule Name="urn:mace:dir:attribute-def:eduPersonPrincipalName"
      Scoped="true" Header="REMOTE_USER" Alias="user">
    <!-- Basic rule to pass through any value. -->
    <AnySite>
      <Value Type="regexp">^[^@]+$</Value>
    </AnySite>
  </AttributeRule>
 
 
  <!-- eduPersonEntitlement -->
  <AttributeRule Name="urn:mace:dir:attribute-def:eduPersonEntitlement"
      Header="Shib-EP-Entitlement" Alias="entitlement">
        <AnySite>
            <AnyValue/>
        </AnySite>
  </AttributeRule>
 
 
  <!-- cn -->
  <AttributeRule Name="urn:mace:dir:attribute-def:cn" Header="Shib-Person-commonName">
    <AnySite>
      <AnyValue/>
    </AnySite>
  </AttributeRule>
 
 
  <!-- mail -->
  <AttributeRule Name="urn:mace:dir:attribute-def:mail" Header="Shib-InetOrgPerson-mail">
    <AnySite>
      <AnyValue/>
    </AnySite>
  </AttributeRule>
 
</AttributeAcceptancePolicy>

Metadata

Po registraci budou údaje o vašem SP zaneseny do metadat, což je základní předpoklad pro to, aby se stal součástí federace. Stáhněte si aktuální metadata, umístěte je na vhodném místě (/etc/shibboleth) a ujistěte se, že máte k nim správně nastavenou cestu v konfiguračním souboru shibboleth.xml.

Je žádoucí udržovat metadata aktuální. Shibboleth SP v sobě neobsahuje funkcionalitu pro distribuci metadat. Tu je potřeba zajistit externími nástroji.

Startovací skript pro shibd

Jak zprovoznit startovací skript pro daemona shibd je popsáno v tomto návodě.

Apache

Spouštění

V případě, že máte knihovny Shibboleth na nestandardním místě (např. v /opt) musíte před startem Apache nastavit proměnnou LD_LIBRARY_PATH. V Debianu to lze nastavit v souboru /etc/apache2/envvars:

SHIB_HOME=/opt/shibboleth-sp
LD_LIBRARY_PATH=${SHIB_HOME}/libexec:${SHIB_HOME}/lib
export LD_LIBRARY_PATH

mod_shib

Pro zavedení modulu musíme vytvořit příslušné soubory shib.load a shib.conf v adresáři /etc/apache2/mods-available.

shib.load (Apache 2.0)

LoadModule mod_shib /opt/shibboleth-sp/libexec/mod_shib_20.so

shib.load (Apache 2.2)

LoadModule mod_shib /opt/shibboleth-sp/libexec/mod_shib_22.so

shib.conf

# Shibboleth SP 1.3 config
ShibConfig /etc/shibboleth/shibboleth.xml
ShibSchemaDir /opt/shibboleth-sp/share/xml/shibboleth

<Files *.sso>
    SetHandler shib-handler
</Files>

Modul aktivujeme:

# a2enmod shib

Zabezpečení aplikací

Nastavení zabezpečení zdrojů se vždy vztahuje k danému adresáři. Parametry lze umístit do direktivy <Directory> v hlavní konfiguraci Apache (pro daný <VirtualHost>) nebo do příslušného souboru .htaccess.

Příklad jednoduchého nastavení:

AuthType shibboleth
ShibRequireSession On
require valid-user

Příklad autorizace na základě atributu:

AuthType shibboleth
ShibRequireSession On
require affiliation member

Závěr

Nezapomeňte restartovat Apache po každé úpravě v jeho konfiguraci. Ujištěte se, že shibd daemon běží.

cztestfed/howto/sp/config/default/index.txt · Poslední úprava: 2008-05-19 17:27 (upraveno mimo DokuWiki)
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