Geneerinen kuvaus toimenpiteistä
Jari Järvinen, HAMK
jari.jarvinen@hamk.fi
Yleistä
Tässä dokumentissa kuvataan muutokset jotka tehtiin korkeakoulun sisäisen IdP:n asennuksessa.
Tausta
Sisäinen IdP (myöhemmin ”HAMK_IdP”) tarvitaan, jotta ”ei-HAKA-kelpoiset” tunnuksia varten (=kevyttunnus), jotka ovat liiketoimintaprosesseista johtuen luovutettu siten, että tunnistusta ei ole tehty riittävän vahvasti HAKA-fedraation sopimuksen mukaisesti. Tunnuksien pitää kuitenkin päästä tiettyihin shibboloituihin sisäisiin palveluihin.
Lähteet
- Ohjerunkoa tarvittaviin askeliin: http://shibboleth.1660669.n2.nabble.com/Different-IDPs-on-same-Machine-td2472707.html
- Shibbolet-wiki (ohje login jaas confiin): https://wiki.shibboleth.net/confluence/display/SHIB2/IdpAuthUserPass
- Shibboleth-ohjeita: https://wiki.shibboleth.net/confluence/display/SHIB2/Home
- CSC:n HAKA-ohjeet: Ylläpitäjän ohjeet
Muutokset
HAMK_IdP:n konfiuguraatiotiedostot on kopioitu/muokattu olemassa olevasta IdP:stä.
LDAP-hakemistoon tehdyt muutokset
- Lisätty uusi attribuutti HEPPN. Sisältö sama kuin funetEduPerson-skeeman EPPN attribuutissa, mutta tämä asetetaan myös kevyttynnuksille.
Shibboleth
- Hakemiston /opt/shibboleth-idp sisältö kopioitiin hakemistoon /opt/shibboleth-idp-hamk
- Käytettiin ”etsikorvaa”-työkalua jolla muutettiin hakemiston /opt/shibboleth-idp-hamk/conf kaikissa *.xml tiedostoissa olevat polkuviittaukset polusta /opt/shibboleth-idp HAMK_IdP:n polkuun /opt/shibboleth-idp-hamk
- Poistettu /opt/shibboleth-idp-hamk/conf/login.config
- Vaihdettu tiedostossa /opt/shibboleth-idp-hamk/conf/handler.xml oleva Username/password login handler osoittamaan /opt/shibboleth-idp hakemistossa olevaa konfiguraatiota. Tämä siksi että voi olla vain yksi login.config .
<LoginHandler xsi:type="UsernamePassword" jaasConfigurationLocation="/opt/shibboleth-idp/conf/login.config" authenticationServletURL="/Authn/UserPassword"> <AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthenticationMethod> </LoginHandler>
- Muokattu tiedostoa /opt/shibboleth-idp/conf/login.config lisäämällä uusi JAAS määrite ja ohjattu LDAP-kyselyt Metaan
ShibUserPassAuthHAMK { edu.vt.middleware.ldap.jaas.LdapLoginModule required host="000.000.000.000" port="000" ssl="true" base="o=organisaatio" subtreeSearch="true" userField="cn" serviceUser="cn=yhteystunnus,O=organisaatio" serviceCredential="salainensana"; }; ShibUserPassAuth { edu.vt.middleware.ldap.jaas.LdapLoginModule required host="000.000.000.000" port="000" ssl="true" base="o=organisaatio" subtreeSearch="true" userField="cn" serviceUser=" cn=yhteystunnus,O=organisaatio " serviceCredential="salainensana"; };
- Muokattu tiedostoa /opt/shibboleth-idp-hamk/conf/attribute-resolver.xml josta kommentoitu pois tarpeettomia attrbuutteja ja vaihdettu LDAPin EPPN attrbutti HEPPN:ksi. Huomaa että attribuutin mappauksen lisäksi pitä muistaa vaihtaa LDAPin attrbiuuttilistalle EPPNn sijaan HEPPN.
Tomcat
- Tiedosto /srv/tomcat6/webapps/shibboleth-idp.war kopiotiin uuteen sijaintiin /srv/tomcat6/webapps/shibboleth-idp/shibboleth-idp.war
- Hakemiston /srv/tomcat6/webapps/shibboleth-idp sisältö kopioitiin hakemistoon /srv/tomcat6/webapps/shibboleth-idp-hamk
- Tiedoston /srv/tomcat6/webapps/shibboleth-idp-hamk/shibboleth-idp.war nimi muutettiin nimelle /srv/tomcat6/webapps/shibboleth-idp-hamk/shibboleth-idp-hamk.war
- Tiedostoon /srv/tomcat6/webapps/shibboleth-idp-hamk/WEB-INF/web.xml lisätty JaasConfigName jotta IdP autentikoinnit voidaan erottaa
<!-- Servlet for doing Username/Password authentication --> <servlet> <servlet-name>UsernamePasswordAuthHandler</servlet-name> <servlet-class> edu.internet2.middleware.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet </servlet-class> <init-param> <param-name>jaasConfigName</param-name> <param-value>ShibUserPassAuthHAMK</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet>
- Tiedostoon /srv/tomcat6/webapps/shibboleth-idp/WEB-INF/web.xml lisätty JaasConfigName
<!-- Servlet for doing Username/Password authentication --> <servlet> <servlet-name>UsernamePasswordAuthHandler</servlet-name> <servlet-class> edu.internet2.middleware.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet </servlet-class> <init-param> <param-name>jaasConfigName</param-name> <param-value>ShibUserPassAuth</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet>
- Kustomoitu login-käyttöliiittymää /srv/tomcat6/webapps/shibboleth-idp-hamk/login.jsp
- Käynnistetty Tomcat uudelleen
Apache
- Muokattu vhost-ssl.conf tiedostoa jonne lisätty uusi IdP
<Location /shibboleth-idp-hamk/> ProxyPass ajp://127.0.0.1:8009/shibboleth-idp-hamk/ <!-- OPTIOTA (kuten nromaaliIdP:ssäkin) --> </Location>
- Käynnistetty Apache uudelleen.
Metadata
- Kopioitu HAKA-metadatasta sinne julkaistu IdP-palvelimen EntityDescriptor ja muokattu siitä sisäinen metadata (tiedostonimi hamk-metadata.xml). Sertifikaatti on luonnollisesti sama.
- Seuraavat muutokset tehty:
<!-- Vanha kommentin sisällä, uusi kommentoimatta --> <!-- <EntityDescriptor entityID="https://shibboleth.hamk.fi/shibboleth"> --> <EntityDescriptor entityID="https://shibboleth.hamk.fi/shibboleth-hamk"> <!-- <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://shibboleth.hamk.fi/shibboleth-idp/profile/SAML2/Redirect/SSO" /> --> <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://shibboleth.hamk.fi/shibboleth-idp-hamk/profile/SAML2/Redirect/SSO" /> <!-- <SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://shibboleth.hamk.fi/shibboleth-idp/profile/Shibboleth/SSO" /> --> <SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://shibboleth.hamk.fi/shibboleth-idp-hamk/profile/Shibboleth/SSO" /> <!-- <AttributeService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://shibboleth.hamk.fi/shibboleth-idp/profile/SAML2/SOAP/AttributeQuery" /> --> <AttributeService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://shibboleth.hamk.fi/shibboleth-idp-hamk/profile/SAML2/SOAP/AttributeQuery"/> <!-- <AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://shibboleth.hamk.fi/shibboleth-idp/profile/SAML1/SOAP/AttributeQuery" /> --> <AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://shibboleth.hamk.fi/shibboleth-idp-hamk/profile/SAML1/SOAP/AttributeQuery" />
- Metadatan alkuun ”keksitty” nimi HAMKin ”omalle fedraatiolle”
<EntitiesDescriptor Name=https://hamk.fi/metadata/hamk-federation.xml xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds=http://www.w3.org/2000/09/xmldsig# xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
SP
- Edellä luotu metadata viety SPlle (testipalveluna Moodle) ja muutettu shibboleth2.xml tiedostossa olevaa metadata-määritystä tekemällä ketjutus HAKAn ja paikallisen kesken (lisätyt/muutetut rivit merkitty kommentilla)
<MetadataProvider type="Chaining"> <!-- lisätty ylätason Chaining-elementti --> <MetadataProvider type="XML" uri="https://haka.funet.fi/metadata/haka-metadata.xml" backingFilePath="federation-metadata.xml" reloadInterval="7200"> <MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/> <MetadataFilter type="Signature" certificate="haka-sign-v2.pem"/> </MetadataProvider> <!-- lisätty MetadataProvider --> <MetadataProvider type="XML" file="/etc/shibboleth/hamk-metadata.xml" /> </MetadataProvider>
- Testattu suoralla linkillä (alla) ja tuotantoa varten lisätty oma kirjautumispainike jossa suora ohjaus IdP:lle (eli ei DS:ää välissä koska ei tietoinen HAMK_IdP:stä)
- Esim Moodlessa: https://moodle.hamk.fi/Shibboleth.sso/Login?entityID=https://shibboleth.hamk.fi/shibboleth-hamk&target=http://moodle.hamk.fi/auth/shibboleth/index.php