Módosítások

Shib2SP

10 930 bájt hozzáadva, 2023. augusztus 15., 16:16
új működő példa config
Az SP-t a '''<code>shibbolethshibboleth2.xml</code>''' állományon keresztül konfigurálhatjuk. Ebben a leírásban feltételezzük, hogy az SP konfigurációja a '''<code>/etc/shibboleth</code>''' könyvtárban van.
= Előkészületek =* [[Shibboleth2_SP|Telepítsük a shibbolethet]]* Válasszunk egy egyedi azonosítót, ún. <code>entityID</code>-t az SP számára. Ez az azonosító URL formájú, létező hosztnév, egy - alapértelmezés szerint - /shibboleth path-szal. Pl: <code>https://lipton.aai.niif.hu/shibboleth</code>. Megfelelő konfiguráció után az entityID-t meghívva válaszul az adott entitás metaadatát kapjuk válaszul. = Működő példa konfiguráció 1 = <source lang="xml"><SPConfig xmlns="urn:mace:shibboleth:2.0:native:sp:config" xmlns:conf="urn:mace:shibboleth:2.0:native:sp:config" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" clockSkew="180">  <!-- By default, in-memory StorageService, ReplayCache, ArtifactMap, and SessionCache are used. See example-shibboleth2.xml for samples of explicitly configuring them. -->  <!-- To customize behavior for specific resources on Apache, and to link vhosts or resources to ApplicationOverride settings below, use web server options/commands. See https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPConfigurationElements for help.  For examples with the RequestMap XML syntax instead, see the example-shibboleth2.xml file, and the https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPRequestMapHowTo topic. -->  <!-- The ApplicationDefaults element is where most of Shibboleth's SAML bits are defined. --> <ApplicationDefaults entityID="https://events.prace-ri.eu/shibboleth" REMOTE_USER="eppn" cipherSuites="ECDHE+AESGCM:ECDHE:!aNULL:!eNULL:!LOW:!EXPORT:!RC4:!SHA:!SSLv2">  <!-- Controls session lifetimes, address checks, cookie handling, and the protocol handlers. You MUST supply an effectively unique handlerURL value for each of your applications. The value defaults to /Shibboleth.sso, and should be a relative path, with the SP computing a relative value based on the virtual host. Using handlerSSL="true", the default, will force the protocol to be https. You should also set cookieProps to "https" for SSL-only sites. Note that while we default checkAddress to "false", this has a negative impact on the security of your site. Stealing sessions via cookie theft is much easier with this disabled. --> <Sessions lifetime="28800" timeout="3600" relayState="ss:mem" checkAddress="false" handlerSSL="false" cookieProps="http">  <!-- Configures SSO for a default IdP. To allow for >1 IdP, remove entityID property and adjust discoveryURL to point to discovery service. (Set discoveryProtocol to "WAYF" for legacy Shibboleth WAYF support.) You can also override entityID on /Login query string, or in RequestMap/htaccess. -->  <SSO discoveryProtocol="SAMLDS" discoveryURL="https://mdx.eduid.hu/role/idp.ds"> SAML2 SAML1 </SSO>   <!-- SAML and local-only logout. --> <Logout>SAML2 Local</Logout>  <!-- Extension service that generates "approximate" metadata based on SP configuration. --> <Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>  <!-- Status reporting service. --> <Handler type="Status" Location="/Status" acl="127.0.0.1 ::1"/>  <!-- Session diagnostic service. --> <Handler type="Session" Location="/Session" showAttributeValues="false"/>  <!-- JSON feed of discovery information. --> <Handler type="DiscoveryFeed" Location="/DiscoFeed"/>  </Sessions>  <!-- Allows overriding of error template information/filenames. You can also add attributes with values that can be plugged into the templates. --> <Errors supportContact="prace-indico-admin@niif.hu" helpLocation="/about.html" styleSheet="/shibboleth-sp/main.css"/>  <MetadataProvider type="Dynamic" ignoreTransport="true"> <Subst>https://mdx.eduid.hu/entities/$entityID</Subst> <MetadataFilter type="Signature" certificate="href-metadata-signer-2020.crt"/> </MetadataProvider>  <!-- Example of remotely supplied batch of signed metadata. --> <!-- <MetadataProvider type="XML" validate="true" uri="http://example.org/federation-metadata.xml" backingFilePath="federation-metadata.xml" reloadInterval="7200"> <MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/> <MetadataFilter type="Signature" certificate="fedsigner.pem"/> <DiscoveryFilter type="Blacklist" matcher="EntityAttributes" trimTags="true" attributeName="http://macedir.org/entity-category" attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" attributeValue="http://refeds.org/category/hide-from-discovery" /> </MetadataProvider> -->  <!-- Example of locally maintained metadata. --> <!-- <MetadataProvider type="XML" validate="true" file="partner-metadata.xml"/> -->  <!-- Map to extract attributes from SAML assertions. --> <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>  <!-- Use a SAML query if no attributes are supplied during SSO. --> <AttributeResolver type="Query" subjectMatch="true"/>  <!-- Default filtering policy for recognized attributes, lets other data pass. --> <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>  <!-- Simple file-based resolver for using a single keypair. --> <CredentialResolver type="File" key="events-shib.key" certificate="events-shib.cert"/>  <!-- The default settings can be overridden by creating ApplicationOverride elements (see the https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApplicationOverride topic). Resource requests are mapped by web server commands, or the RequestMapper, to an applicationId setting.  Example of a second application (for a second vhost) that has a different entityID. Resources on the vhost would map to an applicationId of "admin": --> <!-- <ApplicationOverride id="admin" entityID="https://admin.example.org/shibboleth"/> --> </ApplicationDefaults>  <!-- Policies that determine how to process and authenticate runtime messages. --> <SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>  <!-- Low-level configuration about protocols and bindings available for use. --> <ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/> </SPConfig> </source> = Működő példa konfiguráció 2 =
<source lang="xml">
<!-- Chains together all your metadata sources. -->
<MetadataProvider type="Chaining">
<MetadataProvider type="XML" uri="httphttps://idpmetadata.niifeduid.hu/current/href-idp-metadata.xml" backingFilePath="href-idp-metadata.xml" reloadInterval="7200"> <SignatureMetadataFilter certificate="href_signerhref-metadata-signer-2010.crt"/> </MetadataProvider> <!-- Just for eduGAIN-ized services --> <MetadataProvider type="XML" uri="httphttps://idpmetadata.niifeduid.hu/href-test-idp-metadatacurrent/niifi.xml" backingFilePath="href-test-idp-metadataniifi.xml" reloadInterval="7200"> <SignatureMetadataFilter certificate="href_signer.crt"/> </MetadataProvider> <MetadataProvider type="XML" uri="http://idp.niif.hu/href-vho-metadata.xml" backingFilePath="href-vhosigner-metadata.xml" reloadInterval="7200"> <SignatureMetadataFilter certificate="href_signer2010.crt"/> </MetadataProvider>
</MetadataProvider>
<!-- Example of a second application (using a second vhost) that has a different entityID. -->
<!-- <ApplicationOverride id="admin" entityID="https://admin.example.org/shibboleth"/> -->
<ApplicationOverride id="wiki.aai" entityID="https://wiki.aai.niif.hu/shibboleth" > <CredentialResolver type="File" key="wiki.aai.niif.hu.key" certificate="wiki.aai.niif.hu.crt"/> </ApplicationOverride> <ApplicationOverride id="www.aai" entityID="https://www.aai.niif.hu/shibboleth" > <CredentialResolver type="File" key="www.aai.niif.hu.key" certificate="www.aai.niif.hu.crt"/> </ApplicationOverride>
</ApplicationDefaults>
<!-- Each policy defines a set of rules to use to secure messages. -->
<SecurityPolicies>
<!-- The predefined policy enforces replay/freshness , standard condition processing, and permits signing and client TLS. -->
<Policy id="default" validate="false">
<Rule PolicyRule type="MessageFlow" checkReplay="true" expires="60"/> <Rule PolicyRule type="Conditions"> <PolicyRule type="Audience"/> <!-- Enable Delegation rule to permit delegated access. --> <!-- <PolicyRule type="Delegation"/> --> </PolicyRule> <PolicyRule type="ClientCertAuth" errorFatal="true"/> <Rule PolicyRule type="XMLSigning" errorFatal="true"/> <Rule PolicyRule type="SimpleSigning" errorFatal="true"/>
</Policy>
</SecurityPolicies>
 
</SPConfig>
</source>
 
= Minimális beállítások =
 
== Környezeti beállítások ==
 
A konfigurációs fájl első negyedében lévő szekciókban elsősorban a Shibboleth futásával kapcsolatos beállítások találhatók, amelyek alapértelmezett értékei legtöbbször megfelelőek az általunk elvárt működéshez.
* <code>OutOfProcess</code>
* <code>ReplayCache</code>
* <code>ArtifactMap</code>
 
== RequestMap ==
 
A RequestMap megadja azokat a címeket (Host és Path), amelyeket a Shibboleth SP kezelni fog. Szerkezete:
<source lang="xml">
</RequestMap>
</source>
 
A RequestMap több Host elemet is tartalmazhat, a Host elem 0 vagy több Path elemet tartalmazhat.
{{ATTENTION|Ha 1-nél nagyobb mélységű könyvtárat (pl. a <code>/shibtest/shibreq</code> nevűt) szeretnénk védeni, akkor '''nem''' adhatjuk meg a ''name'' paraméterben a "shibtest/shibreq" értéket, hanem egymásba ágyazott Path elemeket kell használni. A ''name'' paraméter nem tartalmazhat '/' karaktert.}}
Ennél a szekciónál kerülnek beállításra azok a paraméterek, melyek meghatározzák, hogy az SP kihez-mihez irányítsa a felhasználót, mikor az érvényes session nélkül (tehát autentikáció előtt) próbálja elérni a Shibboleth által védett tartalmat.
 
*'''<code lang="xml">'''id</code>: (opcionális) Az adott SessionInitiator-re lehet ezen id által hivatkozni egyéb beállításoknál
*'''<code lang="xml">'''entityID</code>: Az SP az itt megadott értékben szereplő IdP-hez irányítja az autentikálni kívánó felhasználót
*'''<code lang="xml">'''relayState</code>: meghatározza, hogy...
*'''<code lang="xml">'''acsByIndex</code>: igaz érték esetén él a lehetőség, hogy a megfelelő AssertionConsumerService-hez ne teljes URI-val forduljunk, hanem elég legyen csak annak indexét megadnunk.
*'''<code lang="xml">'''defaultACSIndex</code>: az <code lang="xml">acsByIndex="true"</code> esetén beállítható, hogy alapértelmezés szerint mely indexxel rendelkező AssertionConsumerService-t használjuk
====SessionInitiator főbb típusai====
Egy Chaining típusú SessionInitiator elem további SessionInitiator elemeket tartalmazhat, melyek felveszik a keret elem attribútumaiban meghatározott tulajdonságokat.
=== MetadataProvider === Ennél a szekciónál kell beállítani, hogy az SP milyen forrásokból jut hozzá a szükséges [[Metadata |metaadatokhoz]]. '''A források 3 fő típusa'''* XML MetadataProvider <code type="xml">type="XML"</code> SAML2 szabványos XML fájlt tölt be a rendszer. A fájl lehet lokális, vagy távoli, webszerveren keresztül elérhető. Leggyakrabban használt típus. Példa:  <MetadataProvider type="XML" uri="https://metadata.eduid.hu/current/href.xml" backingFilePath="href.xml" reloadInterval="7200"> <SignatureMetadataFilter certificate="href-metadata-signer-2020.crt"/> </MetadataProvider> A tanúsítvány innen szerezhető be: https://metadata.eduid.hu/certs/href-metadata-signer-2020.crt * Chaining MetadataProviderTovábbi <code lang="xml">MetadataProvider</code>-(eke)t tartalmazhat. * dinamikus, MDQ  <MetadataProvider type="MDQ" id="href-2020" ignoreTransport="true" baseUrl="https://mdx.eduid.hu/"> <MetadataFilter type="Signature" certificate="href-metadata-signer-2020.crt"/> <MetadataFilter type="RequireValidUntil" maxValidityInterval="864000"/> </MetadataProvider> A tanúsítvány innen szerezhető be: https://metadata.eduid.hu/certs/href-metadata-signer-2020.crt ===ApplicationOverride===Amennyiben az SP több alkalmazást kezel, és ezek között az alkalmazások között vannak olyanok, melyeknek valamely tulajdonsága nem egyezik az SP alapértelmezettként megadott tulajdonságaival (jellemzően ilyen lehet pl. az entityID), akkor ezeket ebben a szekcióban felül lehet definiálni.  =Kiegészítő beállítások===POST preservation==Ha legalább 2.2-es verziójú Shibboleth SP-t használunk, úgy lehetőségünk van egy olyan funkció beállítására, amely lehetővé teszi, hogy ha egy felhasználó valamilyen formba ír (pl. egy wikibe), akkor a küldés gomb megnyomásakor a shibboleth egy átmeneti helyen eltárolja a beírt adatokat. Ennek jelentősége, hogy ha írás közben lejárt volna a felhasználó sessionje, így alapértelmezés szerint a bejelentkező oldalra dobná a rendszer, ami által elveszne, amit begépelt, úgy bekapcsolt post preservation esetén ezek az adatok megmenekülnek, nem kell őket újra beírni. A funkció bekapcsolásához a <code><Sessions></code> elem attribútumaként kell megadni az alábbi két név-érték párt.* <code>postData="ss:mem"</code> , az érték mondja meg, hogy a form adatait az SP mely, a konfigurációs fájl elején definiált Storage Service-en keresztül tárolja. Alapértelmezés szerint a memóriában, de lehetőség van külső tároló megadására is. [https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPStorageService További információ a Storage Service-kről] * <code>postTemplate="/etc/shibboleth/postTemplate.html" </code> Hiányossága a funkciónak, hogy ha a form tartalmaz <code>file</code> típusú <code>input</code> mezőt, akkor nem fog működni. =HREF integráció=# Az SP-t regisztrálni kell a [[Resource_Registry#SP_regisztr.C3.A1ci.C3.B3|Resource Registry]]-ben# Le kell tölteni a metadatához tartozó tanúsítványt a [https://metadata.eduid.hu/current/ https://metadata.eduid.hu/current/] címről, és elmenteni a shibboleth kofigurációs fájljait tartalmazó könyvtárba# A [[#MetadataProvider|Metadata]] beállításoknál meg kell adni a HREF metadata elérhetőségét: [https://metadata.eduid.hu/current/href.xml https://metadata.eduid.hu/current/href.xml]# Az <code>attribute-map.xml</code> fájlban el kell távolítani a kommentjeleket azon [[HREFAttributeSpec|attribútumok]] elől, melyeket az SP használni kíván.# Újra kell indítani a shibboleth démont.

Navigációs menü