Tento návod navazuje na návod Instalace Shibboleth IdP 2.0 (Linux) - Tomcat + Apache frontend
V conf/relying-party.xml definujeme zvláštní element RelyingParty (třeba hned za elementem DefaultRelyingParty):
<RelyingParty id="urn:mace:cesnet.cz:cztestfed" provider="https://idp2.cesnet.cz/idp/shibboleth" defaultSigningCredentialRef="testshib" defaultAuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"> <ProfileConfiguration xsi:type="saml:ShibbolethSSOProfile" /> <ProfileConfiguration xsi:type="saml:SAML1AttributeQueryProfile" /> <ProfileConfiguration xsi:type="saml:SAML1ArtifactResolutionProfile" /> <ProfileConfiguration xsi:type="saml:SAML2SSOProfile" /> <ProfileConfiguration xsi:type="saml:SAML2AttributeQueryProfile" /> <ProfileConfiguration xsi:type="saml:SAML2ArtifactResolutionProfile" /> </RelyingParty>
Význam atributů:
Name v root elementu EntitiesDescriptor v metadatechCredential element, kde jsou uvedeny cesty k certifikátům a klíčům (viz dále)conf/handler.xml (Login handlers)Dostupné způsoby autentizace jsou popsány v dokumentaci.
V elementu MetadataProvider nastavíme způsob získávání metadat. Je několik možnosti, nejjednodušší z nich je lokálně uložený soubor:
<MetadataProvider id="ShibbolethMetadata" xsi:type="ChainingMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata"> <MetadataProvider id="cztestfed" xsi:type="FilesystemMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata" metadataFile="/opt/shibboleth-idp/metadata/cztestfed-metadata.xml" maintainExpiredMetadata="true" /> </MetadataProvider>
Další možnosti jsou podrobně popsány v dokumentaci.
<security:Credential id="testshib" xsi:type="security:X509Filesystem"> <security:PrivateKey>/opt/shibboleth-idp/credentials/testshib.key</security:PrivateKey> <security:Certificate>/opt/shibboleth-idp/credentials/testshib.crt</security:Certificate> </security:Credential>
Kompletní přehled možností nastavení najdete v dokumentaci.
Pro každou skupinu (relying party) lze definovat typ autentizace (viz výše). Pro LDAP autentizaci je potřeba použít typ UserPassword. Je definován v souboru conf/handler.xml. Definice je implicitně zakomentována, takže je potřeba ji odkomentovat:
<!-- Username/password login handler --> <LoginHandler xsi:type="UsernamePassword" jaasConfigurationLocation="file:///opt/shibboleth-idp/conf/login.config"> <AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthenticationMe </LoginHandler>
Řetězec obsažený v elementu AuthenticationMethod se uvadi v atributu defaultAuthenticationMethod elementu RelyingParty (konfigurační soubor relying-party.xml, viz výše).
LDAP autentizace u Shibboleth IdP se provádí pomocí JAAS. Konfiguraci zapíšeme do souboru conf/login.config:
ShibUserPassAuth {
edu.vt.middleware.ldap.jaas.LdapLoginModule required
host="ldap1.example.org ldap2.example.org ldap3.example.org"
base="ou=people,dc=example,dc=org"
ssl="true"
userField="uid";
};
Tato sekce neni nezbytná pro funkci IdP. Pro testování stačí implicitní přihlašovací stránka, proto můžete tu část přeskočit a vrátit se k ní později.
Pro zadání přihlašovacích údajů Shibboleth IdP disponuje standardní přihlašovací stránkou s formulářem. Vzhled přihlašovací stránky lze upravit dvojím způsobem - přímou editací anebo nastavením alternativní stránky.
Pro přímou editaci změňte obsah souboru resources/webpages/login.jsp (a případně i další jako např. error.jsp apod.) v adresáři, kde máte rozbalenou distribuci Shibboleth IdP 2 (/opt/tmp/identityprovider).
Jiná možnost je v nastavení uvést alternativní soubory. Například, když umístíte svůj login.jsp do resources/webpages/myfed/login.jsp, v konfiguraci resources/WEB-INF/web.xml nastavte u příslušného handleru parametr loginPage:
<servlet> <servlet-name>UsernamePasswordAuthHandler</servlet-name> <servlet-class>edu.internet2.middleware.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet</servlet-class> <init-param> <param-name>loginPage</param-name> <param-value>myfed/login.jsp</param-value> </init-param> </servlet>
Podobným způsobem můžete změnit i cesty k chybovým stránkám error.jsp a error-404.jsp (viz stejný konfigurační soubor). U nich je ale potřeba uvést absolutní cestu, jinak aplikace zahlásí chybu.
Pravděpodobně bude potřeba nastavit jiné kodování stránky než standardní ISO-8859-1. Stačí když na začátku dané stránky připíšeme (viz Tomcat Wiki):
<%@ page contentType="text/html; charset=UTF-8" %>
Pro uvedení změn do provozu je potřeba znovu spustit instalační skript ant.sh (na otázku odpověďte no, abyste si nepřepsali konfiguraci) a poté restartovat tomcat:
idp2:/opt/tmp/identityprovider# sh ./ant.sh Buildfile: build.xml install: Is this a new installation? Answering yes will overwrite your current configuration. [yes|no] no Copying 1 file to /opt/tmp/identityprovider/build/WEB-INF JARs are never empty, they contain at least a manifest file Building jar: /opt/shibboleth-idp/war/idp.war BUILD SUCCESSFUL Total time: 4 seconds idp2:/opt/tmp/identityprovider# /etc/init.d/tomcat5.5 restart Stopping Tomcat servlet engine: tomcat5.5 .. Starting Tomcat servlet engine: tomcat5.5.
Nastavení atributů u Shibboleth IdP 2.0 se podobá nastavení z verze 1.3. V konfiguračním souboru attribute-resolver.xml se nastavuje získávání atributů z různých datových zdrojů a v souboru attribute-map.xml se definuji pravidla pro jejich uvolňování.
Na základě uvedených udajů během instalace jsou pro daný IdP vygenerovaná metadata, která jsou uložena v souboru metadata/idp-metadata.xml. Před použitím je potřeba pozměnit a případně doplnit v nich některé údaje, především entityID, scope a případně i certifikáty tak, aby odpovídaly aktuální konfiguraci.