Versions Compared

Key

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

...

Code Block
# apt-get install mysql-server

.. under installationen sätts ett root-lösenord ..

persistentIdSkapa databas och tabell

Skapa en databas...

Code Block
# mysql -p
... använd lösenordet från installationen
mysql> SET NAMES 'utf8';
SET CHARACTER SET utf8;
CHARSET utf8;
CREATE DATABASE IF NOT EXISTS shibboleth CHARACTER SET=utf8;
USE shibboleth;
Query OK, 0 rows affected (0.00 sec)

...

Code Block
<resolver:DataConnector id="StoredId"
            xsi:type="StoredId"
            xmlns="urn:mace:shibboleth:2.0:resolver:dc"
            generatedAttributeID="persistentId"
            sourceAttributeID="uid"
            salt="large random salt value">
       	<resolver:Dependency ref="uid" />
        <dc:BeanManagedConnection>MyGlobalDataSource</dc:BeanManagedConnection>
</resolver:DataConnector>

Ersätt "large random salt value" med ett stort (mellan 16 och 48 tecken) långt slumpmässigt lösenord. Ett sätt att generera ett sådant är programmet apg eller följande kommando:

Code Block
# openssl rand -base64 36 2>/dev/null

Detta lösenord är mycket viktigt att spara - om det går förlorat eller behöver ändras kommer alla pseudonymer att ändras vilket betyder att alla SPer kommer att uppfatta inloggningar som "nya".

Skapa följande bean i conf/global.xml

Code Block
languagexml
<!-- A Global DataSource for use in the attribute-resolver.xml for DB connectivity -->
<bean id="MyGlobalDataSource" class="org.apache.commons.dbcp2.BasicDataSource"
    p:driverClassName="com.mysql.jdbc.Driver"
    p:url="jdbc:mysql://127.0.0.1:3306/shibboleth?autoReconnect=true&amp;localSocketAddress=127.0.0.1&amp;connectTimeout=1800&amp;initialTimeout=2&amp;logSlowQueries=true&amp;autoReconnectForPools=true"
    p:username="shibboleth"
    p:password="hemligt123"
    p:maxIdle="5"
    p:maxWaitMillis="15000"
    p:testOnBorrow="true"
    p:validationQuery="select 1"
    p:validationQueryTimeout="5" />
</beans>

Ersätt "large random salt value" med ett stort (mellan 16 och 48 tecken) långt slumpmässigt lösenord. Ett sätt att generera ett sådant är programmet apg eller följande kommando:

Code Block
# openssl rand -base64 36 2>/dev/null

Detta lösenord är mycket viktigt att spara - om det går förlorat eller behöver ändras kommer alla pseudonymer att ändras vilket betyder att alla SPer kommer att uppfatta inloggningar som "nya".

Skapa slutligen en PrincipalConnector i attribute-resolver.xml enligt:

code
<resolver:PrincipalConnector xsi:type="StoredId" xmlns="urn:mace:shibboleth:2.0:resolver:pc" id="saml2Persistent"
        nameIDFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
        storedIdDataConnectorRef="StoredId" />

Attribut-definitioner

Börja med att se till att definitionen av attributet uid finns i attribute-resolver.xml och inte är utkommenterat. Om du använder AD så kan detta vara baserat på sAMAccountName istället men attributet kan fortfarande heta uid.

Skapa nu följande två attribut-definitioner i attribute-resolver.xml. Det första är legacy-attributet eduPersonPrincipalName och det andra den nya definitionen baserat på SAML 2.0 NameIDattributet eduPersonTargetedID. SWAMID rekommenderar att båda detta görs tillgängliga till alla SPer.

Code Block
<resolver:AttributeDefinition id="eduPersonTargetedID" xsi:type="SAML2NameID"
        xmlnsad:SAML2NameID" id="eduPersonTargetedID"                                  nameIdFormat="urn:mace:shibbolethoasis:names:tc:SAML:2.0:resolvernameid-format:ad"
        sourceAttributeIDpersistent" sourceAttributeID="persistentId">

   <resolver>        <resolver:Dependency ref="StoredId" />

   <resolver />        <resolver:AttributeEncoder xsi:type="enc:SAML1XMLObject" xmlns name="urn:mace:shibboleth:2.0:attribute:encoder"
             name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />

   <resolver />        <resolver:AttributeEncoder xsi:type="enc:SAML2XMLObject" xmlns name="urn:mace:shibboleth:2.0:attribute:encoder"
             name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName friendlyName="eduPersonTargetedID" />
</resolver:AttributeDefinition>

<resolver:AttributeDefinition id="persistentId" xsi:type="ad:PrincipalName"
                              xmlns="urn:mace:shibboleth:2.0:resolver:ad"
                              sourceAttributeID="persistentId">

   <resolver:Dependency ref="StoredId"/>

   <resolver:AttributeEncoder xsi:type="SAML1StringNameIdentifier"
                               xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
                               nameFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" />

   <resolver:AttributeEncoder xsi:type="SAML2StringNameID"
                               xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
                               nameFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" />
</resolver:AttributeDefinition>
 /></resolver:AttributeDefinition>

Attribute-release

Note

Detta kommer att göra pseudonymer tillgängliga för alla SP:er vilket är SWAMIDs rekommendation. Om du inte vill lämna ut pseudonyer till alla så måste du ändra PolicyRequirementRule nedan

SWAMID rekommenderar att dessa detta attribut releasas till alla SP:er. Detta gör man enklast genom följande entry i attribute-filter.xml:

Code Block
<AttributeFilterPolicy id="releasePermanentIdToAnyone">
   	<PolicyRequirementRule xsi:type="basic:ANY" />
	<!-- Jan 2016: as of <AttributeRule attributeID="persistentId">
      <PermitValueRule xsi:type="basic:ANY" />
   </AttributeRule>
   Shib3.2.1 persistentId is automatically released and processed in saml-nameid.xml -->
	
	<AttributeRule attributeID="eduPersonTargetedID">
      		<PermitValueRule xsi:type="basic:ANY" />
   	</AttributeRule>
</AttributeFilterPolicyAttributeFilterPolicy>

Test

Så här ska en persistent_id ser ut:

Code Block
https://idp-test.kau.se/idp/shibboleth!https://sp.swamid.se/shibboleth!mbz5i2+tqo7PT4hlmeNrHpYCBdo=

 

<resolver:AttributeDefinition xsi:type="ad:SAML2NameID" id="eduPersonTargetedID"                                  nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" sourceAttributeID="persistentId">        <resolver:Dependency ref="StoredId" />        <resolver:AttributeEncoder xsi:type="enc:SAML1XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />        <resolver:AttributeEncoder xsi:type="enc:SAML2XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="eduPersonTargetedID" />    </resolver:AttributeDefinition>