Rozdiely

Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verziou danej stránky.

Odkaz na tento prehľad zmien

Obojstranná predošlá revízia Predchádzajúca revízia
Nasledujúca revízia
Predchádzajúca revízia
install-sp-shibboleth [23. 07. 2019 22:45]
jsilaci@umb.sk
install-sp-shibboleth [25. 07. 2019 10:21]
jsilaci@umb.sk
Riadok 1: Riadok 1:
 ====== Inštalácia Shibboleth SP ====== ====== Inštalácia Shibboleth SP ======
 +
 +> Návod je písaný tak, že služba(web), ktorá má využívať overovanie cez Shibboleth beží na doméne MOJA_DOMENA. Vy si túto doménu zamente za doménu Vašej služby.
  
 Pridať repoziár Shiboleth. Obsah konfiguráku sa dá vygenerovať na stránke: https://shibboleth.net/downloads/service-provider/RPMS/ Pridať repoziár Shiboleth. Obsah konfiguráku sa dá vygenerovať na stránke: https://shibboleth.net/downloads/service-provider/RPMS/
Riadok 20: Riadok 22:
 <code> <code>
 yum install shibboleth.x86_64 yum install shibboleth.x86_64
 +</code>
 +
 +Keďže Centos obsahuje Curl skompilované s NSS a nie OpenSSl (viac tu https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxRH6) je nutné pred spustením nasledovného príkazu doinštalovať potrebné knižnice a nastaviť ku nim cestu aby sme mohli používať dodané nástroje z CLI:
 +
 +<code>
 +cd /etc/yum.repos.d/
 +wget https://download.opensuse.org/repositories/security:shibboleth/CentOS_7/security:shibboleth.repo
 +yum install curl-openssl
 +</code>
 +
 +<code>
 +export LD_LIBRARY_PATH=/opt/shibboleth/lib64
 </code> </code>
  
Riadok 34: Riadok 48:
 Modul ''mod_shib.so'' bude nainštalovaný do ''/usr/lib64/shibboleth''. Modul ''mod_shib.so'' bude nainštalovaný do ''/usr/lib64/shibboleth''.
  
-Pre službu je potrebné zvoliť jednoznačný identifikátor. Odporúčaný postup je taký, že ak sa služba nachádza napríklad na doméne https://www.safeid.sk tak identifikátor bude https://www.safeid.sk/shibboleth.+Pre službu je potrebné zvoliť jednoznačný identifikátor. Odporúčaný postup je taký, že ak sa služba nachádza napríklad na doméne https://www.mojweb.sk tak identifikátor bude https://www.mojweb.sk/shibboleth. Pre účely tohto návodu sa bude používať názov domény MOJA_DOMENA aby bolo ľahko identifikovateľné, čo treba nahradiť. 
 + 
 +> Je možné, že certifikát vygeneroval inšalátor, tak to len skontrolujeme.
  
-Keď máme zvolený identifkátor, vygenerujeme SSL certifikát, ktorý bude využívať Shibboleth pre komunikáciu s IdP. Odporúča sa vytvoriť nový certifikát a nepoužíť SSL certifikát webu aj za cenu, že vytvorené certifikát bude self signed:+Keď máme zvolený identifkátor, vygenerujeme SSL certifikát, ktorý bude využívať Shibboleth pre komunikáciu s IdP. Odporúča sa vytvoriť nový certifikát a nepoužíť SSL certifikát webu pretože ten má krátku dobu platnosti. Nevadí ak bude vytvorený certifikát self signed:
  
 Certifikát vytvoríme pomocou nástroja, ktorý sa nainštaloval spolu so Shibboleth SP: Certifikát vytvoríme pomocou nástroja, ktorý sa nainštaloval spolu so Shibboleth SP:
  
 <code> <code>
-/etc/shibboleth/keygen.sh -h www.safeid.sk -e https://www.safeid.sk/shibboleth -f -y 10+/etc/shibboleth/keygen.sh -h MOJA_DOMENA -e https://MOJA_DOMENA/shibboleth -f -y 10
 </code> </code>
  
Riadok 48: Riadok 64:
 Vygenerovanné súbory budú uložené v adresári /etc/shibboleth a ich názvy budú ''sp-encrypt-cert.pem'', ''sp-encrypt-key.pem'', ''sp-signing-cert.pem'', ''sp-signing-key.pem''. Vygenerovanné súbory budú uložené v adresári /etc/shibboleth a ich názvy budú ''sp-encrypt-cert.pem'', ''sp-encrypt-key.pem'', ''sp-signing-cert.pem'', ''sp-signing-key.pem''.
  
-Súborom treba zmeniť vlastníka na používateľa, pod ktorým beží služba shibd:+Vygenerovaným súborom treba zmeniť vlastníka na používateľa, pod ktorým beží služba shibd:
  
 <code> <code>
Riadok 71: Riadok 87:
     <md:Extensions>     <md:Extensions>
       <mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">       <mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
-        <mdui:DisplayName xml:lang="en">safeID Wiki</mdui:DisplayName> +        <mdui:DisplayName xml:lang="en">Nazov mojej sluzby</mdui:DisplayName> 
-        <mdui:DisplayName xml:lang="sk">safeID Wiki</mdui:DisplayName> +        <mdui:DisplayName xml:lang="sk">My service name</mdui:DisplayName> 
-        <mdui:Description xml:lang="en">Slovak Academic Federation of Identities Wiki.</mdui:Description> +        <mdui:Description xml:lang="en">Opis mojej sluzby.</mdui:Description> 
-        <mdui:Description xml:lang="sk">Wiki stránky Slovenskej akademickej federácie identít.</mdui:Description> +        <mdui:Description xml:lang="sk">My service description.</mdui:Description> 
-        <mdui:InformationURL xml:lang="en">https://www.safeid.sk/</mdui:InformationURL> +        <mdui:InformationURL xml:lang="en">https://MOJA_DOMENA/</mdui:InformationURL> 
-        <mdui:InformationURL xml:lang="sk">https://www.safeid.sk/</mdui:InformationURL> +        <mdui:InformationURL xml:lang="sk">https://MOJA_DOMENA/</mdui:InformationURL> 
-        <mdui:Logo height="81" width="99">https://www.safeid.sk/lib/tpl/arctic/images/sanetsmall_sk.gif</mdui:Logo>+        <mdui:Logo height="81" width="99">https://MOJA_DOMENA/images/mojelogo.gif</mdui:Logo>
       </mdui:UIInfo>       </mdui:UIInfo>
     </md:Extensions>     </md:Extensions>
 +    <!-- V prípade, že požadujete od IdP ďalšie atribúty používateľa, špecifikujete ich v tejto sekcii (nepovinné) -->
 +    <md:AttributeConsumingService index="0">
 +      <md:ServiceName xml:lang="en">Nazov mojej sluzby</md:ServiceName>
 +      <md:ServiceName xml:lang="sk">My service name</md:ServiceName>
 +      <md:ServiceDescription xml:lang="en">Opis mojej sluzby.</md:ServiceDescription>
 +      <md:ServiceDescription xml:lang="sk">My service description.</md:ServiceDescription>
 +      <md:RequestedAttribute FriendlyName="eppn" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/>
 +      <md:RequestedAttribute FriendlyName="givenName" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/>
 +      <md:RequestedAttribute FriendlyName="mail" Name="urn:oid:0.9.2342.19200300.100.1.3" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/>
 +      <md:RequestedAttribute FriendlyName="sn" Name="urn:oid:2.5.4.4" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/>
 +    </md:AttributeConsumingService>
 +
 +    
   </md:SPSSODescriptor>   </md:SPSSODescriptor>
   <md:Organization>   <md:Organization>
-    <md:OrganizationName xml:lang="en">The Association of the Users of the Slovak Academic Network SANET</md:OrganizationName> +    <md:OrganizationName xml:lang="en">My organisation name</md:OrganizationName> 
-    <md:OrganizationName xml:lang="sk">Združenie používateľov slovenskej akademickej dátovej siete SANET</md:OrganizationName> +    <md:OrganizationName xml:lang="sk">Nazov mojej organizacie</md:OrganizationName> 
-    <md:OrganizationDisplayName xml:lang="en">SANET</md:OrganizationDisplayName> +    <md:OrganizationDisplayName xml:lang="en">MOJAORG</md:OrganizationDisplayName> 
-    <md:OrganizationDisplayName xml:lang="sk">SANET</md:OrganizationDisplayName> +    <md:OrganizationDisplayName xml:lang="sk">MOJAORG</md:OrganizationDisplayName> 
-    <md:OrganizationURL xml:lang="en">http://www.sanet.sk/en</md:OrganizationURL> +    <md:OrganizationURL xml:lang="en">http://WEB_MOJEJ_ORG/en</md:OrganizationURL> 
-    <md:OrganizationURL xml:lang="sk">http://www.sanet.sk/</md:OrganizationURL>+    <md:OrganizationURL xml:lang="sk">http://WEB_MOJEJ_ORG/</md:OrganizationURL>
   </md:Organization>   </md:Organization>
   <md:ContactPerson contactType="technical">   <md:ContactPerson contactType="technical">
-    <md:GivenName>Helpdesk</md:GivenName> +    <md:GivenName>Meno kontaktu</md:GivenName> 
-    <md:SurName>UMB</md:SurName> +    <md:SurName>Priezvisko kontaktu</md:SurName> 
-    <md:EmailAddress>mailto:helpdesk@umb.sk</md:EmailAddress>+    <md:EmailAddress>mailto:mailova_adresa_kontaktu</md:EmailAddress>
   </md:ContactPerson>   </md:ContactPerson>
 </md:EntityDescriptor> </md:EntityDescriptor>
 </code> </code>
  
-Úpravy urobíme aj v súbore ''shibboleth2.xml'':+Ak sme v metadatach služby definovali aj ďalšie atribúty musíme skontrolovať, či sú uvedené v mapovaní, teda v súbore ''attribute-map.xml''. Pri ich identifikácii sa riadime podľa OID. 
 + 
 +Napríklad: 
 + 
 +<code xml> 
 +    ... 
 +    <Attribute name="urn:oid:0.9.2342.19200300.100.1.3" id="mail"/> 
 +    <Attribute name="urn:oid:2.5.4.42" id="givenName"/> 
 +    <Attribute name="urn:oid:2.5.4.4" id="sn"/> 
 +    <Attribute name="urn:oid:2.5.4.3" id="cn"/> 
 +    <Attribute name="urn:oid:1.3.6.1.4.1.25178.1.2.9" id="schacHomeOrganization"/> 
 +    ... 
 +</code>  
 + 
 +Atribúty, ktoré IdP poslal službe si bude možné prezrieť na adrese: https://MOJA_DOMENA/Shibboleth.sso/Session 
 + 
 +Treba to ale nastaviť v konfigurácii Shibboleth service, ktorá teraz nasleduje. 
 + 
 +Konfiguráciu Shibboleth SP service urobíme v súbore ''shibboleth2.xml'':
  
 <code xml> <code xml>
Riadok 103: Riadok 150:
     xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config"     xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config"
     clockSkew="180">     clockSkew="180">
-    <OutOfProcess tranLogFormat="%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a" /> +    <OutOfProcess tranLogFormat="%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a" />   
-   +
     <!-- Doplníme ID služby -->     <!-- Doplníme ID služby -->
-    <ApplicationDefaults entityID="https://www.safeid.sk/shibboleth"+    <ApplicationDefaults entityID="https://MOJA_DOMENA/shibboleth"
         REMOTE_USER="eppn subject-id pairwise-id persistent-id"         REMOTE_USER="eppn subject-id pairwise-id persistent-id"
         cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">         cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">
-      +        <!-- Upravíme vlastnosti session -->
         <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"         <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
                   checkAddress="false" handlerSSL="true" cookieProps="https">                   checkAddress="false" handlerSSL="true" cookieProps="https">
- 
         <!-- Zadáme URL discovery servisu -->          <!-- Zadáme URL discovery servisu -->
             <SSO discoveryProtocol="SAMLDS" discoveryURL="https://wayf.safeid.sk/">             <SSO discoveryProtocol="SAMLDS" discoveryURL="https://wayf.safeid.sk/">
               SAML2               SAML2
             </SSO>             </SSO>
- +            <Logout>SAML2 Local</Logout>      
-            <Logout>SAML2 Local</Logout> +            <LogoutInitiator type="Admin" Location="/Logout/Admin" acl="127.0.0.1 194.160.39.60 194.160.44.13" />           
-          <!-- Nastavíme IP rozsahy, z ktorých môže ppristupovať administrátor k vybraným url (funkciám) --> +            <!-- "Približné" metadata bude vytvárať MetadataGenerator na základe súboru metadata-template.xml --> 
-            <LogoutInitiator type="Admin" Location="/Logout/Admin" acl="127.0.0.1 194.160.39.60 194.160.44.13" /> +            <Handler type="MetadataGenerator" Location="/Metadata" signing="false" template="metadata-template.xml"/> 
-           +     <!-- URL pre zobrazeni stavu klienta vratane ACL -->  
-          <!-- Metadata su ulozene v subore metadata-template.xml --> +            <Handler type="Status" Location="/Status" acl="127.0.0.1 194.160.39.60 194.160.44.13"/> 
-          <Handler type="MetadataGenerator" Location="/Metadata" signing="false" template="metadata-template.xml"/> +     <!-- URL pre zobraznie info o session (volitelne je mozne zobrazovat aj hodnoty atributov) -->  
- +            <Handler type="Session" Location="/Session" showAttributeValues="false"/>          
-          <Handler type="Status" Location="/Status" acl="127.0.0.1 194.160.39.60 194.160.44.13"/> +
- +
-            <Handler type="Session" Location="/Session" showAttributeValues="false"/> +
-          +
             <Handler type="DiscoveryFeed" Location="/DiscoFeed"/>             <Handler type="DiscoveryFeed" Location="/DiscoFeed"/>
         </Sessions>         </Sessions>
- +        <!-- Kontaktne informacie --> 
-         +        <Errors supportContact="mailova_adresa_kontaktu"
-      <Errors supportContact="helpdesk@umb.sk"+
             helpLocation="/about.html"             helpLocation="/about.html"
             styleSheet="/shibboleth-sp/main.css"/>             styleSheet="/shibboleth-sp/main.css"/>
         <!-- Informácia o umiestnení metadát federácie a jej podpisového certifikátu (súbor, ktorý sme stiahli) -->         <!-- Informácia o umiestnení metadát federácie a jej podpisového certifikátu (súbor, ktorý sme stiahli) -->
         <MetadataProvider type="XML" validate="true"         <MetadataProvider type="XML" validate="true"
-                    url="https://www.safeid.sk/metadata/metadata.safeid.sk.idp.xml"+              url="https://www.safeid.sk/metadata/metadata.safeid.sk.idp.xml"
               backingFilePath="safeid-idp.xml" maxRefreshDelay="600">               backingFilePath="safeid-idp.xml" maxRefreshDelay="600">
             <MetadataFilter type="Signature" certificate="SAFEID_metadata_signer.pem" verifyBackup="false"/>             <MetadataFilter type="Signature" certificate="SAFEID_metadata_signer.pem" verifyBackup="false"/>
         </MetadataProvider>         </MetadataProvider>
- 
         <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>         <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>
- +        <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>
-        <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/> +
- +
       <!-- Názvy súborov s vygenenerovanými certifikátmi -->       <!-- Názvy súborov s vygenenerovanými certifikátmi -->
-        <CredentialResolver type="File" use="signing" +        <CredentialResolver type="File" use="signing" key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/> 
-            key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/> +        <CredentialResolver type="File" use="encryption" key="sp-encrypt-key.pem" certificate="sp-encrypt-cert.pem"/>
-        <CredentialResolver type="File" use="encryption" +
-            key="sp-encrypt-key.pem" certificate="sp-encrypt-cert.pem"/> +
     </ApplicationDefaults>     </ApplicationDefaults>
- 
     <SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>     <SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>
- 
     <ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>     <ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>
 </SPConfig> </SPConfig>
 </code> </code>
  
-Mozno bude treba nainstalovat verziu curl z projektu Shibboleth (viac tu https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxRH6): +Konfiguráciu je možné skontrolovať nasledujúcim príkazom (pozor na nastavenie curl pre CLI):
- +
-<code> +
-cd /etc/yum.repos.d/ +
-wget https://download.opensuse.org/repositories/security:shibboleth/CentOS_7/security:shibboleth.repo +
-yum install curl-openssl +
-</code> +
- +
-Konfiguráciu je možné skontrolovať nasledujúcim príkazom:+
  
 <code> <code>
Riadok 177: Riadok 201:
 Spustíme Shibboleth service a reštartujeme Apache. Spustíme Shibboleth service a reštartujeme Apache.
  
-<code> +Následne je treba zabezpečiť aby požadovaný web vyžadoval zabezpečenie cez Shibboleth (v konfigurácii Apache):
-systemctl enable shibd +
-systemctl start shibd +
-</code> +
- +
-Následne je treba zabezpečiť aby požadovaný web vyžadoval zabezpečenie cez Shibboleth:+
  
 <code xml> <code xml>
Riadok 192: Riadok 211:
 </code> </code>
  
-Nakoniec reštartujeme webový server:+Ak je všetko v poriadku spustíme službu shibd a reštartujeme apache:
  
 <code> <code>
 +systemctl enable shibd
 +systemctl start shibd
 apachectl graceful apachectl graceful
 </code> </code>
 +
 +Pokiaľ všetko prebehlo správne na adrese https://MOJA_DOMENA/Shibboleth.sso/Metadata je možné vidieť vygenrované metadata služby podľa požiadaviek.
 +
 +Napriek tomu, že sa na začiatku píše, že sa jedná len o "example metadata" je ich po prekontrolovaní prípadne ich doplnení možné použiť pre registráciu služby.
 +
 +Súbor s metadatami je potrebné elektronicky podpísať a zaslať mailom na adresu safeid-admin@sanet.sk. Podis musí byť overitelný, napríklad od CA DigiCert. Alternatívne je možné podpísať odosielaný mail (potom nie je potrebné podpisovať metadata v prílohe).