...
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 | ||
---|---|---|
| ||
<!-- 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&localSocketAddress=127.0.0.1&connectTimeout=1800&initialTimeout=2&logSlowQueries=true&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:
<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 |
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>