Mod auth mellon diegimas ir konfigūravimas
mod_auth_mellon
Tai Apache modulis, autentifikuojantis vartotoją pas SAML 2.0 IdP ir suteikiantis vartotojui prieigos teises į webserverio katalogus, priklausomai nuo iš IdP gautų atributų reikšmių.
Modulio diegimas:
apt-get install libapache2-mod-auth-mellon
Šiam moduliui reikalingi tam tikri kiti paketai, kuriuos jis pats pasiūlys įsidiegti.
Modulio globali konfigūracija yra čia:
/etc/apache2/mods-available/auth_mellon.conf
Paprastai čia nieko keisti nereikia, tinka default nustatymai.
Prieš konfigūruojant apache, reikia turėti raktą ir xml failus, kuriuos padėsime į /etc/apache2/mellon katalogą.
- SP.key:
openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out SP.crt -keyout SP.key
- metadataIdP.xml:
wget https://login.domenas.lt/simplesaml/saml2/idp/metadata.php
- metadataSP.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <EntityDescriptor entityID="https://paslauga.domenas.lt" xmlns="urn:oasis:names:tc:SAML:2.0:metadata"> <SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://paslauga.domenas.lt/mellon/logout" /> <NameIDFormat> urn:oasis:names:tc:SAML:2.0:nameid-format:transient </NameIDFormat> <AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://paslauga.domenas.lt/mellon/postResponse" /> </SPSSODescriptor> </EntityDescriptor>
Šiame faile svarbu, kad EntityID sutaptų su IdP konfigūracijoje naudojamu ID, bei abu Location parametrai turi rodyti į atitinkamus mod_auth_mellon endpoint URL.
Šių failų sugeneravimui galima naudoti skriptą:
wget https://raw.githubusercontent.com/UNINETT/mod_auth_mellon/master/mellon_create_metadata.sh chmod +x mellon_create_metadata.sh mellon_create_metadata.sh urn:someservice https://sp.example.org/mellon
Sugeneruotus failus padedame čia:
/etc/apache2/mellon
Sukonfigūruojame IdP. Tam .../simplesamlphp/metadata/saml20-sp-remote.php faile turi atsirasti eilutės:
$metadata['https://paslauga.domenas.lt'] = array ( 'consent.disable' => TRUE, 'AssertionConsumerService' => 'https://paslauga.domenas.lt/mellon/postResponse', 'SingleLogoutService' => 'https://paslauga.domenas.lt/mellon/logout', 'metadata-index' => 'https://paslauga.domenas.lt/mellon/metadata', 'metadata-set' => 'saml20-sp-remote', 'name' => array ( 'en' => 'Equipment monitoring system', 'lt' => 'Įrangos stebėjimo sistema', ), 'attributes' => array('uid', 'eduPersonAffiliation'), 'contacts' => array ( 'surName' => 'Pavardė', 'givenName' => 'Vardas', 'emailAddress' => 'vardas.pavarde@domenas.lt', 'contactType' => 'technical', ), 'authproc' => array( // Convert LDAP names to oids. 100 => array('class' => 'core:AttributeMap', 'oid2name'), ), );
Aišku konfigūraciją reikia adaptuoti pagal savo poreikius.
Apache vhost'o konfigūracija:
# Vieta, kurioje sukonfigūruotas mellon endpoint'as <Location /mellon> MellonEnable "info" MellonSPPrivateKeyFile "/etc/apache2/mellon/SP.key" MellonSPMetadataFile "/etc/apache2/mellon/metadataSP.xml" MellonIdPMetadataFile "/etc/apache2/mellon/metadataIdP.xml" </Location> # Vieta, kurią norime leisti tik autorizuotiems vartotojams <Location /> MellonEnable "auth" MellonIdPMetadataFile "/etc/apache2/mellon/metadataIdP.xml" MellonRequire "eduPersonAffiliation" "employee" MellonUser "uid" MellonSecureCookie On MellonCookiePath / </Location>
Debug'inimui galima susikurti php failą, kuris parodytų apache kintamųjų reikšmes po autentifikacijos:
<?php header('Content-Type: text/plain'); foreach($_SERVER as $key=>$value) { if(substr($key, 0, 7) == 'MELLON_') { echo($key . '=' . $value . "\r\n"); } } foreach($_SERVER as $key=>$value) { echo($key . '=' . $value . "\r\n"); } ?>
Pastaba: rekomenduojama naudoti ir sertifikatus, tam turėtų atsirasti informacija apie naudojamą sertifikatą xml failuose bei apache config'e.
Modulio dokumentacija:
https://github.com/UNINETT/mod_auth_mellon