Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Konfiguration för shibboleth 2.x IdP för SWAMID SAML WebSSO.

Info

Konfigurationerna under denna sida fungerar endast för Shibboleth 2 3 eller senare. För simpleSAMLphp och ADFS2 ADFS kan konfigurationsexemplen endast användas som inspiration.

relying-party.xml

...

SWAMID är en en multilateral identitetsfederation där alla identitetsutgivare pratar direkt med alla tjänster. Detta innebär att en identitetsutgivare måste ha tillgång till tjänsternas metadata när en användare vill logga in i tjänsten. I princip finns två sätt att göra detta, dels genom att med jämna mellanrum hämta metadata för alla tjänster och dels genom att dynamiskt hämta metadata vid behov. Traditionellt har SWAMID endast tillhandahållit den fulla nedladdningen men från och med våren 2023 går det även använda den dynamiska metoden.

När identitetsutgivaren hämtar hem metadata från SWAMID ska den verifiera att det är metadata signerat av SWAMID som hämtas hem och används. För denna signering använder SWAMID en PKI-baserad krypteringsnyckel. För att genomföra denna kontroll behöver SWAMIDs signeringscertfikat laddas ner, installeras och konfigureras i identitetsutgivaren. 

Hämta och spara certifikatet från SAML Metadata and Trust

Hämta certifkatsfilen md-signer2.crt från https://mds.swamid.se/md i filen /opt/shibboleth-idp/credentials/md-signersigner2.crt.

Definera att det nedladdade certifikatet ska användas för kontroll av signatur av Swamids metadata:

och verifiera att det är rätt nyckel genom att kontrollera fingerprint. Spara sedan certfikatsfilen på den plats i filsystemet som anges nedan om du gjort standardinstallation av Shibboleth IdP.

Code Block
titleLinux
Code Block

<!-- SWAMID-METADATA-Trustengine and SWAMID-TESTING-METADATA-Trustengine -->
<security:TrustEngine id="swamid-metadata-signer" xsi:type="security:StaticExplicitKeySignature">
   <security:Credential id="MyFederation1Credentials" xsi:type="security:X509Filesystem">
      <security:Certificate>/opt/shibboleth-idp/credentials/md-signer.crt</security:Certificate>
   </security:Credential>
</security:TrustEngine>

Hämta metadata för SWAMID 1.0 och SWAMID 2.0 med följande konfiguration:

signer2.crt


Code Block
titleWindows
C:/Program Files (x86)/Shibboleth/IdP/credentials/md-signer2.crt

Konfigurera hur metadata hämtas och sparas av Shibboleth IdP

Om du väljer att hämta full eller dynamisk metadata från SWAMID är en riskbedömning. Fördelen med att automatiskt hämta det fulla metadatat är att du alltid har en färsk kopia av SWAMIDs metadata men det betyder också att tjänsten förbrukar mycket mer ramminne eftersom IdPn håller allt metadata i primärminnet. En annan effekt av att hämta och använda det fulla metadatat från SWAMID är att det tar mycket längre tid att starta IdP-tjänsten. För att minska minnesåtgången har SWAMID stöd för att IdPn dynamiskt hämta metadata  när en användare ska logga in i tjänsten. För att detta ska vara snabbt cachar IdP använd metadata under en period så att den inte behöver hämtas varje gång. Nackdelen med den dynamiska hämtningen av metadata är att SWAMIDs metadata tjänst alltid måste vara tillgänglig och detta har löst via en feltollerant teknisk lösning.

Dynamiskt hämta metadata från SWAMID

Stoppa in följande block XML på relevant plats i metadata-providers.xml dynamiskt hämta SWAMIDs metadata inklusive SP:s från eduGAIN.

Code Block
languagexml
Code Block

<!-- SWAMID 1.0MDQ METADATA PROVIDER -->
<MetadataProvider id="Swamid1MDDynamicEntityMetadata" xsi:type="FileBackedHTTPMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadataDynamicHTTPMetadataProvider"
         connectionRequestTimeout="PT2S"
         metadataURLconnectionTimeout="http://md.swamid.se/md/swamid-1.0.xmlPT2S"
                  backingFile="/opt/shibboleth-idp/metadata/swamid-1.0.xmlsocketTimeout="PT4S">
     <MetadataFilter xsi:type="ChainingFilterSignatureValidation" xmlnsrequireSignedRoot="urn:mace:shibboleth:2.0:metadata">true"
        <MetadataFilter xsi:type="SignatureValidation" xmlns="urn:mace:shibboleth:2.0:metadata"	 certificateFile="%{idp.home}/credentials/md-signer2.crt" />
                      trustEngineRef="swamid-metadata-signer"
                      requireSignedMetadata="true" <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P14D"/>
   	 <MetadataQueryProtocol>https://mds.swamid.se/</MetadataFilter>MetadataQueryProtocol>
</MetadataProvider>
 

Hämta metadata aggregat över alla registrerade tjänster automatiskt från SWAMID

Stoppa in följande block XML på relevant plats i metadata-providers.xml för att hämta SWAMIDs metadata över alla registrerade tjänster i SWAMID och från interfederationssamarbeten.

Hämta metadata för SWAMID 2.0 med följande konfiguration:

Code Block
languagexml
<!-- SWAMID 2.0 METADATA PROVIDER -->
<MetadataProvider id="Swamid2MD" xsi:type="FileBackedHTTPMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata"
                  		metadataURL="http://mdmds.swamid.se/entities/md/swamid-2.0.xml"
                  		backingFile="/opt/shibboleth-idp%{idp.home}/metadata/swamid-2.0.xml">
   	<MetadataFilter xsi:type="ChainingFilterSignatureValidation" xmlns="urn:mace:shibboleth:2.0:metadata">
      requireSignedMetadata="true"
			certificateFile="%{idp.home}/credentials/md-signer2.crt" />
	<MetadataFilter xsi:type="SignatureValidation" xmlns="urn:mace:shibboleth:2.0:metadata"
                      trustEngineRef="swamid-metadata-signer"
                      requireSignedMetadata="true" />
   EntityRoleWhiteList">
		<RetainedRole>md:SPSSODescriptor</RetainedRole>
	</MetadataFilter>
</MetadataProvider>

Hämta och använda metadata från SWAMIDs testfederation

Info

Använd endast denna konfiguration om du planerar att registrera din IdP i SWAMIDs testfederation.


Vid behov så kan även Ni behöver även hämta metadata för SWAMIDs testfederation läggas till för att tillåta realistiska tester för ej driftsatta tjänsteleverantörer (SP):

Code Block
languagexml

<!-- SWAMID TEST METADATA PROVIDER -->
<MetadataProvider id="SwamidTestMDSwamid2MD" xsi:type="FileBackedHTTPMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata"
                  		metadataURL="http://md.swamid.se/md/swamid-testing-1.0.xml"
                  		backingFile="/opt/shibboleth-idp%{idp.home}/metadata/swamid-testing-1.0.xml">
   	<MetadataFilter xsi:type="ChainingFilter" xmlns="urn:mace:shibboleth:2.0:metadata">
      <MetadataFilter xsi:type="SignatureValidation" xmlns="urn:mace:shibboleth:2.0:metadata"
                      trustEngineRef="swamid-metadata-signer"
                      requireSignedMetadata="true" />
   </MetadataFilter>
</MetadataProvider>

attribute-filter.xml

Följande AttributeFilterPolicy är den rekommenderade för SWAMID SAML WebSSO. Den ger tillgång till grundläggande personinformation för alla SP i federationen, inkl. testfederationen. Glöm inte lägga in tillägg för Rekommenderade ändringar i attribute-resolver.xml och Rekommenderad release av statisk organisationsinformation i attribute-resolver.xml och attribute-release.xml.

Förutom denna konfiguration måste normalt ett antal attribut enablas som är utkommenterade per default i Shibboleth. Ett komplett exempel (för scope/domän example.com) finns här: attribute-resolver.xml.

Code Block

<!-- recommended initial attribute filter policy for swamid.se -->
    <AttributeFilterPolicy id="swamid">
        <PolicyRequirementRule xsi:type="basic:OR">
            <basic:Rule xsi:type="saml:AttributeRequesterInEntityGroup"
                        groupID="http://md.swamid.se/md/swamid-1.0.xml" />
            <basic:Rule xsi:type="saml:AttributeRequesterInEntityGroup"
                        groupID="http://md.swamid.se/md/swamid-2.0.xml" />
            <basic:Rule xsi:type="saml:AttributeRequesterInEntityGroup"
                        groupID="http://md.swamid.se/md/swamid-testing-1.0.xml" />
        </PolicyRequirementRule>
        <AttributeRule attributeID="givenName">
            <PermitValueRule xsi:type="basic:ANY" />
        </AttributeRule>
        <AttributeRule attributeID="surname">
            <PermitValueRule xsi:type="basic:ANY" />
        </AttributeRule>
        <AttributeRule attributeID="displayName">
            <PermitValueRule xsi:type="basic:ANY" />
        </AttributeRule>
        <AttributeRule attributeID="commonName">
            <PermitValueRule xsi:type="basic:ANY" />
        </AttributeRule>
        <AttributeRule attributeID="eduPersonPrincipalName">
            <PermitValueRule xsi:type="basic:ANY" />
        </AttributeRule>
        <AttributeRule attributeID="email">
            <PermitValueRule xsi:type="basic:ANY" />
        </AttributeRule>
        <AttributeRule attributeID="eduPersonScopedAffiliation">
            <PermitValueRule xsi:type="basic:OR">
                <basic:Rule xsi:type="basic:AttributeValueString" value="faculty" ignoreCase="true" />
                <basic:Rule xsi:type="basic:AttributeValueString" value="student" ignoreCase="true" />
                <basic:Rule xsi:type="basic:AttributeValueString" value="staff" ignoreCase="true" />
                <basic:Rule xsi:type="basic:AttributeValueString" value="alum" ignoreCase="true" />
                <basic:Rule xsi:type="basic:AttributeValueString" value="member" ignoreCase="true" />
                <basic:Rule xsi:type="basic:AttributeValueString" value="affiliate" ignoreCase="true" />
                <basic:Rule xsi:type="basic:AttributeValueString" value="employee" ignoreCase="true" />
                <basic:Rule xsi:type="basic:AttributeValueString" value="library-walk-in" ignoreCase="true" />
            </PermitValueRule>
        </AttributeRule>
    </AttributeFilterPolicy>
			certificateFile="%{idp.home}/credentials/md-signer2.crt" />
	<MetadataFilter xsi:type="EntityRoleWhiteList">
		<RetainedRole>md:SPSSODescriptor</RetainedRole>
	</MetadataFilter>
</MetadataProvider>