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

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>
  • No labels