ElsevierSP
Speciális eduPersonTargetedID kiadásának beállítása
Shibboleth IdP alatt
vim [/path/to]/shibboleth-idp/conf/attribute-resolver.xml
Szúrjuk be az alábbi attribútumdefiníciót, ahol
- a
scope
értéke az intézményi scope (ugyanaz, amit pl. az eduPersonPrincipalName attribútum előállításakor is használ) - a
sourceAttributeID
értéke a persistent nameID-t előállító attribútum id-je
<!-- Buggy edupersonTargetedId required for Elsevier: -->
<resolver:AttributeDefinition id="elsevierId" xsi:type="Scoped" scope="niif.hu" sourceAttributeID="persistentId"
xmlns="urn:mace:shibboleth:2.0:resolver:ad" >
<resolver:Dependency ref="storedIdConnector" />
<resolver:AttributeEncoder xsi:type="enc:SAML2ScopedString"
name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="buggy-eduPersonTargetedID"
xmlns="urn:mace:shibboleth:2.0:attribute:encoder" />
</resolver:AttributeDefinition>
vim [/path/to]/shibboleth-idp/conf/attribute-filter.xml
Fontos, hogy amennyiben az ajánlásnak megfelelően a Resource Registry által előállított attribute filtert használjuk, akkor ne ezt a dinamikusan frissülő fájlt szerkesszük, hanem az attribute-filter-local.xml-t, és ebben a fájlban végezzük el az alábbi módosításokat.
1. Szúrjuk be az alábbi részletet, amely megmondja, hogy az Elsevier SP számára mely attribútumok adandók ki:
<AttributeFilterPolicy id="buggy-eptid">
<PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://sdauth.sciencedirect.com" />
<AttributeRule attributeID="elsevierId">
<PermitValueRule xsi:type="basic:ANY" />
</AttributeRule>
<AttributeRule attributeID="eduPersonScopedAffiliation">
<PermitValueRule xsi:type="basic:ANY" />
</AttributeRule>
</AttributeFilterPolicy>
2. A releaseIDsToAnyone
alapértelmezett szabályt módosítsuk az alábbiakra:
<!-- Release IDs to anyone -->
<AttributeFilterPolicy id="releaseIDsToAnyone">
<PolicyRequirementRule xsi:type="basic:NOT">
<basic:Rule xsi:type="basic:AttributeRequesterString" value="https://sdauth.sciencedirect.com/" />
</PolicyRequirementRule>
<AttributeRule attributeID="transientId">
<PermitValueRule xsi:type="basic:ANY" />
</AttributeRule>
<AttributeRule attributeID="persistentId">
<PermitValueRule xsi:type="basic:ANY" />
</AttributeRule>
</AttributeFilterPolicy>
Ez utóbbi módosításra azért van szükség, hogy a mindenki számára kiadható szabványos persistentID ne csapja felül ez Elsevier számára kiadandót.
SimpleSAMLphp alatt
vim [/path/to]/simplesaml/metadata/saml20-sp-remote.php
Beállítjuk, hogy csak az elsevier SP-je esetén az attribútum előállítás és kiadás folyamatát toldja meg még egy lépéssel. Ehhez szükséges, hogy a fenti fájlba vegyük fel állandó elemként az Elsevire SP metadatájának kiegészítéseként az alábbi PHP tömböt. Fontos, hogy a tömb egyes elemei előtt szereplő számok magasabbak legyenek, mint az IdP általános feloldási szabályainál megadott számok, de alacsonyabbak, mint a jellemzően a folyamat végén beállított 'name2oid' mappelések.
$metadata['https://sdauth.sciencedirect.com/']['authproc'] = array (
96 => array(
'class' => 'core:TargetedID'
),
97 => array(
'class' => 'core:AttributeAlter',
'subject' => 'eduPersonTargetedID',
'pattern' => '/^.*$/',
'replacement' => '${0}@intezmenyiScope.hu',
),
);
A fenti kódrészlet annyit teszi, hogy újragenerálja az alapértelmezett eduPersonTargetedID-t egyszerű formában (csak a stringet, a NameID-s xml struktúra nélkül), majd mögé teszi az intézményi scope-ot. Fontos, hogy a megoldás feltételezi azt, hogy az Elsevier SP metadatájának további részei betöltésre kerülnek pl. a metarefresh modul által.