cs:tech:attributes:edupersonuniqueid

eduPersonUniqueId

Atribut eduPersonUniqueId od 1. ledna 2017 patří mezi vyžadované atributy a některé služby ve federaci eduID.cz (např. datová úložiště CESNETu) tento atribut vyžadují a nebudou bez něj fungovat.


Definice

Jednoznačný, dlouhotrvající, neměnný a nikdy nerecyklovatelný identifikátor osoby v rámci federace. Použitelný jako hlavní identifikátor nebo jako unikátní externí klíč.

Má tvar “identifikátor@doména”. Doménou se rozumí administrativní doména domovské organizace osoby. Znak “@” tvoří oddělovač dvou částí identifikátoru. Část vlevo od oddělovače tvoří identifikátor v rámci domény, pravá část potom označuje doménu. Jedná se tedy o atribut, který smí mít pouze jednu hodnotu!

Jsou povoleny pouze alfanumerické znaky (a-z, A-Z, 0-9).

Podrobné informace na stránkách komunity Internet2.

Kódování

  • SAML2: urn:oid:1.3.6.1.4.1.5923.1.1.1.13

Příklad

89645@example.org

Implementace

Ideální je tento identifikátor:

  • generovat náhodně (sledovat však možné kolize!), nebo
  • automaticky inkrementovat z nějaké počáteční hodnoty

a ukládat do databáze, abyste zajistili jeho nerecyklovatelnost a jedinečnost. Dotyčnou databázi pečlivě zálohujte, abyste o identifikátory nepřišli.

V žádném případě nedoporučujeme tento identifikátor vypočítávat (např. MD5/SHA hash) na IdP bez následného uložení do databáze! Tím se v podstatě dostáváme do situace jako jsme nyní s eduPersonPrincipalName, které se na některých organizacích recykluje.

Identifikátor je nutné ukládat do databáze (ideálně jako další uživatelský atribut v LDAP/AD). Pokud máte ve svém IdM licenci podle počtu uživatelských záznamů, musíte vlastními silami zařídit, že jednou přiřazený identifikátor již nikdy nedostane nikdo jiný. Dále musíte implementovat mechanizmy, které zajistí, že se po případné změně uživatelského jména nezmění tento identifikátor.

Pokud pro tento atribut chcete použít např. číslo zaměstnance z organizační databáze, zvažte, zda nemůže dojít ke změně tohoto čísla. Úplně nový uživatelský atribut může při prvotní implementaci přinést spoustu práce, avšak bude-li to atribut, který budete moci ovládat pouze vy, vyhnete se v budoucnu potenciálním problémům.

Část před symbolem “@” smí mít maximálně 64 znaků.

Máte-li atribut unstructuredName

Využíváte-li službu TCS pro vydávání osobních certifikátů, máte v IdP podporu pro atribut unstructuredName, který lze s výhodou použít pro vytvoření atributu eduPersonUniqueId, pokud za jeho hodnotu přidáte ještě “scope” (doménu) organizace.

V /opt/shibboleth-idp/conf/attribute-resolver.xml je tedy nutno doplnit definici atributu:

<!-- eduPersonUniqueId -->
<resolver:AttributeDefinition id="eduPersonUniqueId" xsi:type="ad:Scoped" scope="%{idp.scope}" sourceAttributeID="unstructuredName">
    <resolver:Dependency ref="unstructuredName" />
    <resolver:DisplayName xml:lang="cs">Unikátní, neměnný identifikátor uživatele</resolver:DisplayName>
    <resolver:DisplayName xml:lang="en">Unique life-time persistent user identifier</resolver:DisplayName>
    <resolver:AttributeEncoder xsi:type="enc:SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.13" friendlyName="eduPersonUniqueId" encodeType="false" />
</resolver:AttributeDefinition>

Pak již jen zbývá v /opt/shibboleth-idp/conf/attribute-filter.xml doplnit uvolňování tohoto atributu pro entity z federace eduID.cz:

<!-- eduID.cz -->
<AttributeFilterPolicy id="eduidcz">
 
    <PolicyRequirementRule
        xsi:type="InEntityGroup"
        groupID="https://eduid.cz/metadata" />
 
    <AttributeRule attributeID="eduPersonUniqueId">
        <PermitValueRule xsi:type="ANY" />
    </AttributeRule>
 
    <!-- =========================== -->
    <!-- uvolňování dalších atributů -->
    <!-- =========================== -->
 
</AttributeFilterPolicy>

Máte-li atribut unstructuredName již "scopovaný"

Přidáváte-li scope organizace do hodnoty atributu unstructuredName (např. 4530@cesnet.cz, 9m97p2whJ@example.org, …), což je sice nevhodné, nicméně tolerovatelné, je nežádoucí, abyste scope přidávali ještě jednou do atributu eduPersonUniqueId. Hodnoty jako 4530@cesnet.cz@cesnet.cz nebo 9m97p2whJ@example.org@example.org by neodpovídaly požadavku na formát identifikátor@doména a působily by zmatečně.

Pokud jste již vydali větší množství osobních certifikátů TCS se scopovaným atributem unstructuredName a začali je aktivně používat, nedoporučujeme v atributu unstructuredName provádět změny a scope odebírat – může to způsobit zbytečné komplikace.

Nemáte-li atribut unstructuredName

Pokud nemáte atribut unstructuredName, zbývají dvě možnosti:

  • atribut implementovat, nebo
  • najít jiný atribut z organizace, který budete moci pro eduPersonUniqueId použít.

Získáte tím navíc technickou způsobilost pro žádání o osobní TCS certifikáty.

Poznámka

Hodnota před symbolem zavináč smí obsahovat pouze malá a velká písmena bez diakritiky a číslice!

Tento identifikátor slouží jako lepší náhrada za atribut eduPersonPrincipalName, který je sice jednoznačný v rámci federace, ale může (i když to nedoporučujeme) dojít k jeho recyklování a to zejména u organizací s velkým počtem uživatelů a jejich fluktuací (např. univerzity).

Poslední úprava:: 2022/02/17 14:42