Ponudnik storitve - SP (IIS)

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


Namestitev Shibboleth Service Provider

  • Prenesite najnovejšo različico Shibboleth SP za Windows (.msi) z uradne spletne strani: https://shibboleth.net/downloads/service-provider/latest/win64/.
  • Zaženite preneseno .msi datoteko in sledite navodilom čarovnika. Vse nastavitve lahko pustite na privzetih vrednostih. Če boste spremenili mapo namestitve, bodite pozorni – v nadaljnjih korakih boste morali ustrezno prilagoditi poti, saj so navodila pripravljena za privzeto lokacijo namestitve.
  • Preverite, da je storitev Shibboleth Service Provider zagnana v Windows Services.
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

Samopodpisani certifikati za podpisovanje zahtevkov SAML

Za generiranje ključev in certifikatov bomo uporabili OpenSSL, ki je del Shibboleth SP namestitve (nahaja se v mapi C:\Program Files\Shibboleth\SP\lib\openssl.exe).

Ustvarite ključe in certifikate s katerimi bo SP podpisoval zahtevke:

cd "C:\Program Files\Shibboleth\SP\etc\shibboleth"

& "C:\Program Files\Shibboleth\SP\lib\openssl.exe" req -newkey rsa:2048 -nodes -keyout sp-signing-key.pem -out sp-signing.csr -subj "/CN=iis.sp.test-arnes.si"
& "C:\Program Files\Shibboleth\SP\lib\openssl.exe" x509 -req -in sp-signing.csr -signkey sp-signing-key.pem -days 720 -out sp-signing-cert.pem -set_serial 0x202505221011

& "C:\Program Files\Shibboleth\SP\lib\openssl.exe" req -newkey rsa:2048 -nodes -keyout sp-encrypt-key.pem -out sp-encrypt.csr -subj "/CN=iis.sp.test-arnes.si"
& "C:\Program Files\Shibboleth\SP\lib\openssl.exe" x509 -req -in sp-encrypt.csr -signkey sp-encrypt-key.pem -days 720 -out sp-encrypt-cert.pem -set_serial 0x202505221011

Konfiguracija IIS

Če je bila namestitev Shibboleth uspešna, mora vaš Windows strežnik prikazovati naslednje nastavitve v IIS:

  • Odprite IIS Manager in preverite, ali je nameščen ISAPI filter Shibboleth.
    • Kliknite ime strežnika in odprite ISAPI Filters.
    • Nastavitve morajo biti:
      • Name = Shibboleth
      • Executable = C:\opt\shibboleth-sp\lib64\shibboleth\isapi_shib.dll (za 64-bitno namestitev)
    • Če filter manjka, ga je treba ročno dodati.
  • Še vedno v IIS Manager, preverite, ali je ISAPI filter Shibboleth pravilno povezan s končnico .sso.
    • Kliknite ime strežnika in odprite Handler Mappings.
    • Nastavitve morajo biti:
      • Path = *.sso
      • State = Enabled
      • Path Type = Unspecified
      • Handler = IsapiModule
      • Entry Type = Local
    • Če vnos manjka, ga ročno dodajte tako, da kliknete Add Script Map v desnem meniju (Action pane) in izpolnite obrazec:
      • Request path = *.sso
      • Executable = C:\opt\shibboleth-sp\lib64\shibboleth\isapi_shib.dll
      • Name = poljubno ime (npr. Shibboleth)
  • Še vedno v IIS Manager, preverite, ali se preslikava handlerja (*.sso) pravilno deduje na nivo spletnega mesta.
    • Kliknite ime spletnega mesta pod Sites, nato odprite Handler Mappings.
    • Nastavitve morajo biti:
      • Path = *.sso
      • State = Enabled
      • Path Type = Unspecified
      • Handler = IsapiModule
      • Entry Type = Inherited
    • Če vnos manjka, ga je treba ročno ustvariti kot opisano zgoraj.

Nastavite Shibboleth

Nastavitve, ki niso posebej omenjene v spodnjih primerih, lahko ostanejo nespremenjene. Vse spremembe bomo izvajali v datoteki shibboleth2.xml, ki se privzeto nahaja v mapi C:\opt\shibboleth-sp\etc\shibboleth. Priporočamo, da pred vsakršnim urejanjem ustvarite varnostno kopijo obstoječe datoteke shibboleth2.xml.

Definicijo Site uredimo tako, da ustreza konfiguraciji IIS strežnika: določimo pravilen ID, ime gostitelja ter protokol in vrata.

<Site id="3" name="iis.sp.test-arnes.si" scheme="https" port="443"/>

Pomembno je da ID, odraža ID spletnega mesta v IIS-u, ki ga želite zaščititi.


Nastavitmo hostname in lokacije zaščite spremenite

<RequestMapper type="Native">
    <RequestMap>
        <Host name="iis.sp.test-arnes.si" authType="shibboleth" requireSession="false">
            <Path name="Login" authType="shibboleth" requireSession="true"/>
        </Host>
    </RequestMap>
</RequestMapper>

Za podporo globalnega izpisa iz aplikacij in zaključek seje enotne prijave na domačem strežniku IdP moramo urediti razdelek Sessions. Če imate pri prijavi oziroma odjavi težave s preusmerjanjem, preučite in implementirajte eno od možnosti, ki so na voljo za parameter redirectLimit.

<Sessions lifetime="28800" timeout="3600" relayState="cookie"
    checkAddress="false" handlerSSL="false" cookieProps="http"
    redirectLimit="exact">

Nastavimo kje je federacijski DS/WAYF. Za produkcijski SP uporabimo discovery URL https://ds.aai.arnes.si/simplesaml/saml2/sp/idpdisco.php.

<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" url="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 C:\opt\shibboleth-sp\etc\shibboleth) - datoteka z metapodatki federacije

Datoteko in certifikat prenesete s spletnih strani federacije:

Invoke-WebRequest -Uri "https://ds.test-fed.arnes.si/metadata/test-fed.arnes.si.signed.xml" -OutFile "C:\opt\shibboleth-sp\etc\shibboleth\partner-metadata.xml"
Invoke-WebRequest -Uri "https://ds.test-fed.arnes.si/metadata/test-fed.arnes.si.crt" -OutFile "C:\opt\shibboleth-sp\etc\shibboleth\test-fed.arnes.si.crt"
Nastavitev preslikave atributov

V mapi C:\opt\shibboleth-sp\etc\shibboleth\ najprej odstranite obstoječo datoteko z definicijami preslikav atributov: attribute-map.xml.

Nato ustvarite novo datoteko z enakim imenom in vanjo vstavite spodnje definicije.

<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 C:\opt\shibboleth-sp\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 C:\opt\shibboleth-sp\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.

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)