Pseudoidentifikátor, který obsahuje „scope“ organizace (scoped), není očividně svázán s konkrétním uživatelem (opaque), je nepřenositelný na jiného uživatele (not reassignable) a není cílený na jednu službu (non-targeted).
Popis vlastností naleznete na wiki Shibbolethu.
2f0df90d9fed5683b6e6420415a04f7f13df87bbf3d7222cc7179ca953b5eade@example.org
Určený jako náhrada za zastaralé identifikátory jako eduPersonUniqueId a potenciálně i za eduPersonPrincipalName, čili tam, kde zobrazení hodnoty tohoto identifikátoru není důležité.
Hodnotu doporučuji získat jako hash z atributu unstructuredName kombinovaným se solí (idp.persistentId.salt
v souboru credentials/secrets.properties) pro persistentní NameID a následně přidat „scope“.
<AttributeDefinition xsi:type="ScriptedAttribute" id="samlSubjectHash" dependencyOnly="true"> <InputAttributeDefinition ref="unstructuredName"/> <Script> <![CDATA[ if (typeof unstructuredName != "undefined" && unstructuredName != "null" && unstructuredName.getValues().size()) { var digestUtils = Java.type("org.apache.commons.codec.digest.DigestUtils"); var saltedHash = digestUtils.sha256Hex(unstructuredName.getValues().get(0) + "%{idp.persistentId.salt}"); samlSubjectHash.addValue(saltedHash); } ]]> </Script> </AttributeDefinition> <AttributeDefinition xsi:type="Scoped" id="samlSubjectID" scope="%{idp.scope}"> <InputAttributeDefinition ref="samlSubjectHash"/> </AttributeDefinition>