Ponudnik storitve - SP

SP (angl. SP - Service Provider) je v splošnem spletna storitev, ki na poseben način "ščiti" dostop do spletne aplikacije oz. dostop omejuje zgolj na AAI avtenticirane oz. avtorizirane uporabnike. Zato SP uporabniki pogosto enačijo kar z (AAI) spletno aplikacijo. Tehnični vidik SP in AAI podprto spletno aplikacijo sicer ločuje na dva samostojna dela.

Komponente:

SP sestavljajo naslednje komponente:

Navodila za namestitev Shibboleth

1. Namestitev z uporabo Arnes Shibboleth repozitorija

Z Arnesovega strežnika prenesite datoteko z definicijami repozitorija in javni GPG ključ, s katerimi so podpisani RPM paketi.
Opozorilo: Nadgradnja preko repozitorija je možna zgolj v primeru, ko je bila tudi namestitev Shibboleth izvedena s pomočjo orodja yum iz omenjenega repozitorija. V nasprotnem primeru vam svetujemo, da shranite obstoječe konfiguracijske datoteke, odstranite nameščene Shibboleth in povezane rpm pakete, nato Shibboleth namestite iz repozitorija ter uporabite prej shranjene konfiguracijske datoteke.
# cd /etc/yum.repos.d/
# wget http://ftp.arnes.si/software/Shibboleth/CentOS_6/arnes_shibboleth.repo
# rpm --import http://ftp.arnes.si/software/Shibboleth/CentOS_6/repodata/RPM-GPG-KEY-CentOS-6
Nato namestite Shibboleth z ukazom:
# yum install shibboleth.x86_64
S tem boste na sistemu ustvarili naslednje mape oz. datoteke:
  • Shibboleth SP nastavitvene datoteke se namestijo v mapo /etc/shibboleth/
  • nastavitvena datoteka SP znotraj spletnega strežnika /etc/httpd/conf.d/shib.conf
  • shibd se namesti v mapo /usr/sbin in se ga lahko uporabi s /sbin/service in /sbin/chkconfig
  • mod_shib se namesti v mapo /usr/lib/shibboleth/ ali /usr/lib64/shibboleth/ (odvisno ali gre za 32 ali 64 bitni OS)
  • dnevniški zapisi se nahajajo v mapi /var/log/shibboleth/
Nato v nastavitveni datoteki (/etc/httpd/conf/httpd.conf) spletnega strežnika nastavite naslednje:
  1. Direktivo UseCanonicalName nastavite na "On"
  2. Ustrezno nastavite ime strežnika (ServerName) in omogočite SSL
  3. Ponovno zaženite spletni strežnik Apache. (service httpd restart)
  4. Zaženite Shibboleth SP (service shibd start)
  5. Shibboleth modul privzeto zapisuje dnevniške zapise v datoteko /var/log/httpd/native.log. V primeru, da želite to spremeniti, ustrezno popravite datoteko native.logger. Pazite, da so pravice dnevniških datotek nastavljene tako, da ima spletni strežnik dovoljene za pisanje vanje.
  6. shibd piše v ločeno dnevniško datoteko /var/log/shibboleth/shibd.log, tudi v tem primeru morajo biti pravice za dostop do datoteke ustrezne.
Naslednji korak: Izbira metapodatkov in DS

Izbira Metapodatkov

Arnes vzdržuje sledeče vire metapodatkov, glede na to v katero federacijo boste vključili vaš SP morate tudi izbrati, katere metapodatke boste uporabili. Posamezen SP je lahko vključen v več federacij in posledično mora osveževati več virov metapodatkov.

Metapodatki in certifikati s katerimi so le-ti podpisani, ki jih vzdržuje Arnes, so na vojo na naslednji povezavi: metapodatki.

Vir metapodatkov SHA-1 Prstni odtis certifikata ArnesAAI eduGAIN TestFed
https://ds.aai.arnes.si/metadata/arnesaai-edugain.signed.xml 51:CC:76:0A:07:F1:A2:CC:01:98:68:F2:02:93:04:4E:AC:7C:08:22
https://ds.aai.arnes.si/metadata/aai.arnes.si.sha256.xml 28:7B:9A:AA:FF:5A:6E:F1:02:AD:7D:BA:E3:3C:40:59:17:4F:1E:89
https://ds.aai.arnes.si/metadata/test-fed.arnes.si.signed.xml 49:64:E4:3D:2C:5B:83:E1:D9:EB:35:90:23:67:A7:E0:0A:CD:6E:B9

Izbira Discovery servisa

Ob kliku na prijavo uporabnika preusmeri na DS. V nastavitvah izberite ustreznega, glede na to, katere metapodatke bo vaš SP osveževal, in v katero federacijo ga boste registrirali. Če želite, da zna vaš SP uporabljati več DS-jev si oglejte navodila za napredno vzpostavitev.

Naslov izbirnika domače organizacije ArnesAAI eduGAIN TestFed
https://ds-edugain.aai.arnes.si/simplesaml/saml2/sp/idpdisco.php
https://ds.aai.arnes.si/simplesaml/saml2/sp/idpdisco.php
https://ds.test-fed.arnes.si/simplesaml/saml2/sp/idpdisco.php

V spodnjih navodilih so vse nastavitve prilagojene pridružitvi ponudnika storitev v testno federacijo TestFed. Pri nastavljanju ustrezno popravite vir metapodatkov in naslov izbirnika domače organizacije na federacijo, kateri se želite pridružiti.

Naslednji korak: Navodila za nastavitev Shibboletha in vzpostavitev aplikacije

Ustvarite samopodpisan certifikat za podpisovanje zahtevkov SAML

Ustvarite certifikat s katerim bo SP podpisoval zahtevke:
# openssl genrsa -out /etc/shibboleth/sp-key.pem 4096
Generating RSA private key, 4096 bit long modulus
...........................................................................................................................++
......................................................................++
e is 65537 (0x10001)

# chmod 0440 /etc/shibboleth/sp-key.pem
# chgrp shibd /etc/shibboleth/sp-key.pem
# openssl req -new -sha1 -x509 -key /etc/shibboleth/sp-key.pem -out /etc/shibboleth/sp-cert.pem -set_serial 201401202359 -days 720 -subj "/C=SI/L=Novo Mesto/CN=Osnovna sola Janeza Novaka, ponudnik storitve XYZ"
# openssl x509 -in sp-cert.pem -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 201401202359 (0x2ee47276b7)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=SI, L=Novo Mesto, CN=Osnovna sola Janeza Novaka, ponudnik storitve XYZ
        Validity
            Not Before: Jan 20 13:02:23 2014 GMT
            Not After : Jan 10 13:02:23 2016 GMT
        Subject: C=SI, L=Novo Mesto, CN=Osnovna sola Janeza Novaka, ponudnik storitve XYZ
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:d8:a9:8f:b9:42:f9:e2:d0:38:87:07:4d:ad:0f:
                    b7:f5:d4:97:a1:5e:31:28:74:63:b8:47:a9:f6:c0:
                    5b:62:7b:20:12:f8:5b:1c:f7:22:f4:a8:be:9c:61:
                    85:50:a9:e2:07:a9:ff:bd:5a:04:3b:e5:2c:9f:d7:
                    27:ce:65:8f:23:c7:23:b3:18:09:da:3b:7b:35:ab:
                    57:1d:4d:f8:c9:1c:e3:d9:ac:e0:0e:a4:25:5a:3b:
                    80:cb:4a:a7:3f:e2:39:48:a7:61:3d:46:95:5f:87:
                    71:b4:cc:5a:95:81:89:da:27:a9:9a:a6:2c:ec:9f:
                    f5:0a:f1:b3:64:6a:a4:9c:c4:78:b7:03:fe:cf:99:
                    17:c7:13:ca:54:f6:ca:b0:65:cc:29:d2:66:c2:95:
                    fe:65:7e:71:92:5c:be:0a:4e:d7:d2:46:b1:6a:09:
                    83:8f:a5:06:6e:31:a0:f4:a9:99:98:41:49:87:9b:
                    0d:5d:cf:10:6b:7e:8d:a2:ca:79:e7:e1:f5:60:90:
                    2b:21:92:fe:74:87:78:eb:8c:b0:dd:4d:30:d0:c9:
                    01:82:a5:ef:32:be:85:0f:61:83:68:94:8d:5d:25:
                    98:52:b8:46:cd:cc:64:4a:91:53:dd:15:38:7a:bb:
                    e7:16:30:e4:63:1f:ed:00:e0:7b:39:23:1f:56:e7:
                    43:83:ee:a2:6c:1e:b5:a9:9f:25:af:de:27:68:ba:
                    67:4a:42:56:29:00:1a:1d:d7:f5:3b:72:95:76:cc:
                    c0:78:28:c0:65:ff:df:a8:d5:5e:4a:31:4c:07:7d:
                    0a:6d:e6:42:c4:5e:cd:e5:ca:4a:0b:a1:62:b6:b4:
                    cf:b5:9e:bb:c6:50:1b:5d:df:85:cb:37:7b:f0:00:
                    a8:a2:90:95:10:f8:84:98:9d:b5:0a:23:23:6a:9b:
                    4d:b9:51:a3:29:8e:b0:2a:bf:e1:41:ee:c0:72:b9:
                    b9:26:53:42:d6:29:f5:cb:03:04:a2:4c:bb:75:eb:
                    06:97:6e:4b:f4:3f:4a:c0:fe:f9:e3:25:7b:d7:5d:
                    af:22:fc:5a:b1:82:de:12:eb:74:8a:6d:4e:c3:c7:
                    72:fb:ed:05:30:65:5a:ea:38:ae:a4:e8:c8:50:48:
                    c4:3f:21:18:03:3b:cd:ef:59:57:bf:7e:8b:d9:82:
                    da:c1:53:51:25:c6:59:72:b6:36:70:fb:4e:3e:2d:
                    36:e2:75:1b:0c:b3:58:b7:a7:04:f5:cb:a4:3c:3d:
                    3f:cd:f8:7b:7d:4b:f1:0d:b8:c7:48:26:d7:72:d4:
                    c7:68:2c:89:3d:c5:98:d1:59:64:71:b3:ad:33:62:
                    c6:a8:01:95:a7:ed:f0:05:d7:ef:04:11:fd:56:9a:
                    0a:31:55
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                7E:6D:84:18:47:71:C4:78:A0:0C:8B:6A:42:B0:86:0C:B2:D3:7A:70
            X509v3 Authority Key Identifier:
                keyid:7E:6D:84:18:47:71:C4:78:A0:0C:8B:6A:42:B0:86:0C:B2:D3:7A:70

            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: sha1WithRSAEncryption
         c7:ca:44:50:ed:ed:3a:a0:05:e2:8b:dd:ee:19:90:43:df:f0:
         62:90:54:95:39:a3:f9:c4:67:b4:93:33:e3:3f:9f:2c:4c:f2:
         09:2a:3f:4c:26:7e:f4:1b:70:23:3a:08:00:12:28:15:fb:5c:
         d3:b6:40:a6:9c:33:91:45:92:b4:d6:d3:19:97:37:ef:ef:82:
         6c:41:ff:4a:94:3b:f2:02:82:54:de:17:82:b0:fb:c5:1a:3a:
         cb:c7:cb:b8:0e:cf:76:34:2a:88:21:e1:00:54:d4:6b:44:8a:
         c4:af:82:ad:38:d1:c8:1d:0b:e4:b9:bb:f3:cc:a0:0a:05:52:
         6b:aa:95:a5:af:92:b1:66:b4:cc:64:7f:fa:72:25:82:fd:71:
         02:4c:f5:a7:5a:ed:e0:0a:c4:10:b0:03:6b:3d:ad:3d:09:db:
         cf:36:fa:05:ed:1c:b0:29:59:42:94:80:41:b5:e5:58:1a:cb:
         f2:6a:9b:07:e9:0b:38:94:ce:e5:78:6d:b9:ad:51:94:71:0b:
         d9:e1:2d:27:99:60:49:a9:5d:58:8d:d1:13:1f:b0:84:dd:50:
         ca:af:bd:84:3b:c9:4e:c8:87:dc:82:e5:52:fb:10:2b:c8:71:
         83:05:d8:ee:83:81:ec:ec:a7:6b:95:d4:78:6e:37:94:21:23:
         bb:33:48:a4:62:16:8f:20:4f:d9:82:dd:c8:17:13:29:bb:5b:
         9a:9f:dd:c8:8c:13:6a:bf:7c:59:91:83:a8:c5:2c:2a:7a:60:
         59:ee:69:46:6b:3f:bd:c8:ab:21:a8:ec:f7:09:3f:8b:cd:60:
         0d:d6:a2:04:c0:de:d8:37:c5:c2:4d:2d:c7:2e:36:3a:df:8e:
         8e:44:78:86:99:09:64:87:48:0a:75:e6:91:f4:31:c8:3f:df:
         85:cc:94:b7:f2:07:f3:fc:b4:e2:de:e4:a3:a3:a3:cf:42:e9:
         36:54:9b:cc:69:b2:c2:b7:0a:03:c8:1d:cc:c2:c8:42:cd:44:
         54:0c:26:a7:11:7c:9f:2f:9a:0d:f7:44:9c:46:bb:6c:75:e3:
         16:59:60:ac:c6:01:cb:b9:ff:51:d7:1c:6c:2e:37:e1:5d:f2:
         99:9f:b4:dc:7e:f4:94:4f:60:42:e0:a7:88:73:6a:bc:88:de:
         53:39:e3:45:20:2e:93:04:4b:c1:90:f5:fc:98:4a:36:34:02:
         ab:83:5a:31:05:0d:b9:1b:7d:24:d7:6b:83:12:91:61:07:72:
         d7:8e:61:f6:32:17:63:6f:84:ae:d7:a4:60:90:ba:54:5b:79:
         22:cb:5a:e3:cc:ed:09:3e:75:5e:67:68:98:8e:e0:29:56:34:
         27:a5:b0:db:48:71:45:91

# ll /etc/shibboleth/sp-*
-rw-r--r-- 1 root root  1968 Jan 20 14:20 /etc/shibboleth/sp-cert.pem
-r--r----- 1 root shibd 3243 Jan 20 13:30 /etc/shibboleth/sp-key.pem

Nastavite Shibboleth

Nastavitve, ki v spodnjih primerih niso omenjene lahko ostanejo nespremenjene. Med postopkom boste potrebovali t.i. "self-signed" certifikate, ki služijo podpisovanju SAML zahtevkov. V CN (Common Name) certifikata vpišite "ArnesAAI Federation - Organization SP: <sp_name> ", IP oz FQDN/VHOST spletnega strežnika pa navedite v "Subject Alternative".
Nastavitvena datoteka shibboleth2.xml
(v mapi /etc/shibboleth/) - osnovna datoteka z nastavitvami

Prepišemo datoteko shibboleth2.xml, ter uredimo nastavitve (prikazani so samo izseki vsebine, ki jih je potrebno ustrezno nastaviti)
/bin/cp /etc/shibboleth/shibboleth2.xml.dist /etc/shibboleth/shibboleth2.xml
Popravimo EntityID:
<ApplicationDefaults entityID="https://www.os-prva.si/sp/201401202359"
  REMOTE_USER="eppn persistent-id targeted-id">
Za podporo globalnega izpisa iz aplikacij in zaključek seje enotne prijave na domačem strežniku IdP moramo urediti razdelek Sessions.
<Sessions lifetime="28800" timeout="3600" relayState="cookie"
                  checkAddress="false" handlerSSL="false" cookieProps="http">
Nastavimo kje je federacijski DS/WAYF. Za produkcijski SP uporabimo discovery URL https://ds.aai.arnes.si/simplesaml/saml2/sp/idpdisco.php. Za delovanje brez DS in samo enim IdP nastavimo entityID="https://idp.os-prva.si/idp/201401212359"
<SSO discoveryProtocol="SAMLDS" discoveryURL="https://ds.test-fed.arnes.si/simplesaml/saml2/sp/idpdisco.php">
  SAML2
</SSO>
Popravimo kontaktne informacije:
<Errors supportContact="tooth.fairy@arnes.si"
    helpLocation="/about.html"
    styleSheet="/shibboleth-sp/main.css"/>
Nastavimo lokacijo metapodatkov federacije. Za produkcijo uporabite URL https://ds.aai.arnes.si/metadata/aai.arnes.si.sha256.xml in certifikat https://ds.aai.arnes.si/metadata/arnesaai-metadata-signing.crt
<MetadataProvider type="XML" uri="https://ds.test-fed.arnes.si/metadata/test-fed.arnes.si.signed.xml"
  backingFilePath="federation-metadata.xml" reloadInterval="7200">
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
<MetadataFilter type="Signature" certificate="test-fed.arnes.si.crt"/>
</MetadataProvider>
Vklopimo tudi lokalno nastavljene metapodatke.
<MetadataProvider type="XML" file="partner-metadata.xml"/>
Pridobitev metapodatkov SP
Metapodatke vašega SP dobite na svojem strežniku: https://www.os-prva.si/Shibboleth.sso/Metadata. Prikazane metapodatke prenesite k sebi in shranite v datoteko sp.xml, saj jih boste potrebovali kasneje pri registraciji vaše storitve v federacijo ArnesAAI.
Nastavitev metapodatkov federacije

Metapodatke izberite glede na to, v katero federacijo se želite vključiti.

Test-fed partner-metadata.xml (v mapi /etc/shibboleth/) - datoteka z metapodatki federacije

Datoteko in certifikat prenesete s spletnih strani federacije:
curl https://ds.test-fed.arnes.si/metadata/test-fed.arnes.si.signed.xml -o /etc/shibboleth/partner-metadata.xml
curl https://ds.test-fed.arnes.si/metadata/test-fed.arnes.si.crt -o /etc/shibboleth/test-fed.arnes.si.crt
Nastavitev preslikave atributov

attribute-map.xml (v mapi /etc/shibboleth/) - datoteka z definicijami preslikav atributov
Odstranite obstoječo datoteko, ustvarite novo, ter ji dodajte definicije

rm /etc/shibboleth/attribute-map.xml
touch /etc/shibboleth/attribute-map.xml
<Attributes xmlns="urn:mace:shibboleth:2.0:attribute-map" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <!-- User interface display and contact -->
    <Attribute name="urn:oid:2.16.840.1.113730.3.1.241" id="displayName"/>
    <Attribute name="displayName" id="displayName"/>
    <Attribute name="urn:oid:2.5.4.3" id="cn"/>
    <Attribute name="cn" id="cn"/>
    <Attribute name="urn:oid:0.9.2342.19200300.100.1.3" id="mail"/>
    <Attribute name="mail" id="mail"/>
    <Attribute name="sn" id="sn"/>
    <Attribute name="givenName" id="givenName"/>

    <!-- User role affiliations and entitlements -->
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1" id="eduPersonAffiliation"/>
    <Attribute name="eduPersonAffiliation" id="eduPersonAffiliation"/>
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.5" id="eduPersonPrimaryAffiliation"/>
    <Attribute name="eduPersonPrimaryAffiliation" id="eduPersonPrimaryAffiliation"/>
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" id="eduPersonScopedAffiliation"/>
    <Attribute name="eduPersonScopedAffiliation" id="eduPersonScopedAffiliation"/>
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" id="eduPersonEntitlement"/>
    <Attribute name="eduPersonEntitlement" id="eduPersonEntitlement"/>

    <!-- Unique identifiers -->
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" id="eduPersonPrincipalName">
        <AttributeDecoder xsi:type="ScopedAttributeDecoder"/>
    </Attribute>
    <Attribute name="eduPersonPrincipalName" id="eduPersonPrincipalName">
       <AttributeDecoder xsi:type="ScopedAttributeDecoder"/>
    </Attribute>
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" id="eduPersonTargetedID"/>
    <Attribute name="eduPersonTargetedID" id="eduPersonTargetedID"/>
    <Attribute name="schacUUID" id="schacUUID"/>

    <!-- Organization information -->
    <Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.9" id="schacHomeOrganization"/>
    <Attribute name="schacHomeOrganization" id="schacHomeOrganization"/>
    <Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.10" id="schacHomeOrganizationType"/>
    <Attribute name="schacHomeOrganizationType" id="schacHomeOrganizationType"/>

    <!--Account expiry information -->
    <Attribute name="urn:oid:1.3.6.1.4.1.1466.115.121.1.24" id="schacExpiryDate"/>
    <Attribute name="schacExpiryDate" id="schacExpiryDate"/>

</Attributes>
Vklop preverjanja scope atributa

Domenski del uporabniškega imena lahko Shibboleth samodejno preverja glede na registrirane parametre v metapodatkih. S tem se zagotovi, da s ponudnika identitet prihajajo le uporabniki za katere je skrbnik registriral scope v federacijo. Atribut v metapodatkih, ki to določa je: <shibmd:Scope regexp="false">primer.si</shibmd:Scope>.

V datoteki /etc/shibboleth/attribute-map.xml omogočimo izvoz domenskega dela uporabniškega imena za validiranje glede na organizacijski Scope. Spodnji izsek kode je že vstavljen v vzorčno datoteko zgoraj.

<AttributeDecoder xsi:type="ScopedAttributeDecoder"/>
V datoteki /etc/shibboleth/attribute-policy.xml omogočimo filter, ki preveri atribut Scope in prejet domenski del uporabniškega imena ter ga ustrezno filtrira:
<afp:AttributeRule attributeID="eduPersonPrincipalName">
    <afp:PermitValueRuleReference ref="ScopingRules"/>
</afp:AttributeRule>
<afp:AttributeRule attributeID="urn:oid:1.3.6.1.4.1.5923.1.1.1.6">
    <afp:PermitValueRuleReference ref="ScopingRules"/>
</afp:AttributeRule>
V primeru, da se parameter Scope in domenski del uporabniškega imena ne ujemata se storitvi posreduje prazen atribut. V kolikor zaznate prazen atribut eduPersonPrincipalName oz. urn:oid:1.3.6.1.4.1.5923.1.1.1.6 (ostali pa so vpisani) je verjetno prišlo do opisane izjeme. Če ponudnik identitet nima registiranega atributa Scope bodo filtrirane vse prijave.

Nastavitve Apache

Posamezne poglede v aplikaciji lahko zaščitimo z uporabo Shibboletha. Posamezno lokacijo zaščitimo znotraj direktive location.

VHOST: shib_app.conf-
(v mapi /etc/httpd/conf.d/) - datoteka s Shibboleth nastavitvami za spletni strežnik Apache
<VirtualHost *:443>
    ServerName www.os-prva.si
    ServerAdmin admin@primer.si
    DocumentRoot /var/www/html/moodle
    # Certificate settings
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    # Shibboleth settings
    <Location />
        ShibRedirectToSSL 443
        AuthType Shibboleth
        Require Shibboleth
    </Location>

    #Ščitenje prijavnega URL-ja s Shibbolethom
    <Location /avtentikacija/prijava/aai_prijava.php >
        AuthType Shibboleth
        ShibRequireSession On
        require valid-user
        ShibRedirectToSSL 443
    </Location>
</VirtualHost>
Naslednji korak: Registracija v ArnesAAI in eduGAIN

Registracija storitve

Storitev registrirate z uporabo spletnega vmesnika.

1 Poiščite organizacijo

Na pregledu vaše E-Identitete poiščite organizacijo, ki jo želite upravljati.

E-Identiteta

2 Registracija storitve

V meniju lahko najdete razdelek "Registracija storitev".

Izpolniti morate sledeče podatke:

  • Podatke o storitvi
  • Atribute, ki jih storitev potrebuje za svoje delovanje
  • Federacije, v katere bo vključena
  • Kontakte oseb, ki skrbijo za storitev in pomagajo uporabnikom
Naslednji korak: Preizkus delovanja

Preizkus delovanja

Po uspešni vzpostavitvi in registraciji storitve je potrebno preizkusiti delovanje in preveriti pravilnost delovanja.

Enotna prijava (SSO) in enotna odjava (SLO)

Kratica SSO (angl. Single Sign On) pomeni, da se aplikacija zaveda prijavljenega uporabnika ter ga avtomatično prijavi v kolikor je le-ta prijavljen v sistem enotne prijave. Kratica SLO (angl. Single Log Out) pa pomeni, da aplikacija, tako kot enotno prijavo, omogoča tudi enotno odjavo. Zaradi varnostnih razlogov se delovanja enotne odjave ne sme zanemariti!

Enotno prijavo preizkusimo po naslednjih korakih:

  1. Enotna prijava v poljubno aplikacijo iste federacije (primer: ArnesAAI)
  2. Prijava v vašo aplikacijo (vaša seja bi se morala avtomatično vzpostaviti, saj ste kot uporabnik že prijavljen v sistem enotne prijave).
Enotno odjavo pa preizkusimo na sledeči način:
  1. Prijava v vašo aplikacijo
  2. Odjava s poljubne aplikacije v isti federaciji (primer: ArnesAAI, klik na gumb "Zaključi preizkus")
  3. Vrnitev v vašo aplikacijo (vaša seja bi se morala zaključiti in kot uporabnik bi morali biti odjavljeni z vaše aplikacije)

Navodila za napredno vzpostavitev večih aplikacij na enem Shibbolethu

Nastavitev Shibboleth

Request mapper

Za delovanje večih aplikacij, je potrebno najprej nastaviti RequestMapper, ki ob zahtevi izbere, na kateri ApplicationOverride bo zahtevo poslal.

<RequestMapper type="Native">
        <RequestMap applicationId="default"/>
        <RequestMap applicationId="aplikacija1.primer.si">
                <Host name="aplikacija1.primer.si" applicationId="aplikacija1.primer.si" />
        </RequestMap>
        <RequestMap applicationId="aplikacija.primer.si">
                <Host name="aplikacija.primer.si" applicationId="aplikacija.primer.si" />
        </RequestMap>
</RequestMapper>
ApplicationOverride

ApplicationOverride omogoča nastavitev posebnih nastavitev za posamezno aplikacijo, ki smo jo v RequestMapu določili. Na voljo so enaki nastavitveni atributi, kot v ApplicationDefaults. ApplicationOverride-i se morajo v nastavitveni datoteki nahajati znotraj ApplicationDefaults.

Posamezna aplikacija mora imeti svoj entityID, certifikat, prav tako lahko ob prijavi preusmeri na različen Discovery service in osvežuje drugačne federativne metapodatke. V primeru, da specifičnih nastavitev nima, se podedujejo tiste iz ApplicationDefaults.

<ApplicationDefaults>
...
    <ApplicationOverride id="aplikacija.primer.si" entityID="https://aplikacija.primer.si/sp/20140707" REMOTE_USER="eppn persistent-id targeted-id">
        <CredentialResolver type="File" key="aplikacija.primer.si.key.pem" certificate="aplikacija.primer.sicert.pem"/>
    </ApplicationOverride>
...
<ApplicationDefaults>
Nastavitev Apache
<VirtualHost *:443>
    ServerName aplikacija.primer.si
    ServerAdmin helpdesk@arnes.si
    DocumentRoot /var/www/html/moodle
    # Certificate settings
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    # Shibboleth settings
    <Location />
        ShibRequestSetting applicationId aplikacija.primer.si
        ShibRedirectToSSL 443
        AuthType Shibboleth
        Require Shibboleth
    </Location>
    <Location /prijava/aai/ >
        ShibRequestSetting applicationId aplikacija.primer.si
        AuthType Shibboleth
        ShibRequireSession On
        require valid-user
        ShibRedirectToSSL 443
    </Location>
</VirtualHost>
Pridobitev metapodatkov

Metapodatke pridobimo tako, da brskalnik usmerimo na domeno ali poddomeno, na kateri teče aplikacija.

 https://aai.arnes.si/Shibboleth.sso/Metadata

Nastavitev Shibboleth

Navodila so narejena na primeru testa, ki preverja delovanje IdP-jev v ArnesAAI in interfederaciji eduGAIN, ki teče na spletni strani https://aai.arnes.si.

Request mapper

Za delovanje večih aplikacij, je potrebno najprej nastaviti RequestMapper, ki ob zahtevi izbere, na kateri ApplicationOverride bo zahtevo poslal.

Spodaj je prikazana nastavitev mapov za ArnesAAI spletno stran.

<RequestMapper type="Native">

       <RequestMap applicationId="default">

            <Host name="aai.arnes.si" authType="shibboleth" requireSession="true">
                <Path name="default" applicationId="default"/>
            </Host>

        </RequestMap>

        <RequestMap applicationId="eduGAIN-test">

            <Host name="aai.arnes.si" authType="shibboleth" requireSession="true">
                <Path name="eduGAIN-test" applicationId="eduGAIN-test"/>
            </Host>

        </RequestMap>

        <RequestMap applicationId="ArnesAAI-test">

            <Host name="aai.arnes.si" authType="shibboleth" requireSession="true">
                <Path name="ArnesAAI-test" applicationId="ArnesAAI-test"/>
            </Host>

        </RequestMap>

</RequestMapper>
ApplicationOverride

ApplicationOverride omogoča nastavitev posebnih nastavitev za posamezno aplikacijo, ki smo jo v RequestMapu določili. Na voljo so enaki nastavitveni atributi, kot v ApplicationDefaults. ApplicationOverride-i se morajo v nastavitveni datoteki nahajati znotraj ApplicationDefaults.

Posamezna aplikacija mora imeti svoj entityID, certifikat, prav tako lahko ob prijavi preusmeri na različen Discovery service in osvežuje drugačne federativne metapodatke. V primeru, da specifičnih nastavitev nima, se podedujejo tiste iz ApplicationDefaults.

<ApplicationDefaults>
...
    <ApplicationOverride id="eduGAIN-test" entityID="https://aai.arnes.si/test/edugain" REMOTE_USER="eppn persistent-id targeted-id">

        <Sessions lifetime="28800" timeout="3600" checkAddress="false" handlerURL="/test/edugain/Shibboleth.sso" handlerSSL="false"/>

        <CredentialResolver type="File" key="eduGAIN-test.key.pem" certificate="eduGAIN-test.cert.pem"/>
        <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map-eduGAIN.xml"/>

        <MetadataProvider type="XML" uri="https://ds.aai.arnes.si/metadata/arnesaai-edugain.signed.xml" backingFilePath="eduGAIN-metadata.xml" reloadInterval="7200">
            <MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
            <MetadataFilter type="Signature" certificate="arnesaai-edugain-sign.crt"/>
        </MetadataProvider>

    </ApplicationOverride>
...
<ApplicationDefaults>
Nastavitev Apache
<VirtualHost *:443>

...
#Običajna prijava v spletno stran
<Location /SSO>
 AuthType shibboleth
 ShibRequireSession Off
 ShibUseHeaders On
 ShibRedirectToSSL 443
 ShibRequestSetting applicationId default
 </Location>

<Location /Shibboleth.sso>
  SetHandler shib
  ShibRequestSetting applicationId default
</Location>
...

#Test eduGAIN
<Location /test/edugain>
 ShibRequestSetting applicationId eduGAIN-test
 AuthType shibboleth
 ShibRequireSession On
 #ShibUseEnvironment On
 ShibUseHeaders On
 Require valid-user
</Location>

<Location /test/edugain/Shibboleth.sso>
  SetHandler shib
  ShibRequestSetting applicationId eduGAIN-test
</Location>
...

</VirtualHost>
Pridobitev metapodatkov

Metapodatke pridobimo tako, da brskalnik usmerimo na domeno ali poddomeno, na kateri teče aplikacija, ki mu dodamo specifični URL za posamezno aplikacijo, ki ima drugačne nastavitve. Primer prikazuje pridobitev metapodatkov za aplikacijo z ID-jem eduGAIN-test.

 https://aai.arnes.si/test/edugain/Shibboleth.sso/Metadata

Predstavitev delovanja sistema enotne prijave in odjave ter opis tehničnih podrobnosti.

V februarju 2016 smo imeli na Arnesu predstavitev delovanja sistema enotne prijave in opisali problematiko enotne odjave. V predstavitvi pa je tudi govora o tehničnih podrobnostih, ki jih potrebujemo pri razvoju aplikacij ali odpravljanju težav.

Posnetek predstavitve se nahaja na povezavi: MCU Arnes Prosojnice uporabljene pri predstavitvi pa so na voljo tukaj.