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 |
====== 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/ |
<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> |
| |
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> |
| |
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> |
<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> |
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> |
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> |
</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). |