Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze |
cs:tech:attributes:pairwiseid [2020/02/12 11:50] – [Poznámka] 9ec128d6c1ed31e124c9d0343d1175613f20f405@einfra.cesnet.cz | cs:tech:attributes:pairwiseid [2022/03/02 09:39] (aktuální) – [Definice] Jan Oppolzer |
---|
<WRAP important> | |
**Toto je pouze návrh na zavedení atributu //pairwise-id// ze dne 11. 2. 2020. Atribut zatím není povinný a o jeho zavedení budu informovat prostřednictvím poštovních konferencí [[eduid@eduid.cz]] a [[cifer@cesnet.cz]].** | |
</WRAP> | |
| |
====== pairwise-id ====== | ====== pairwise-id ====== |
| |
===== Definice ===== | ===== Definice ===== |
| |
Pseudoidentifikátor, který obsahuje "scope" organizace (scoped), není očividně svázán se konkrétním uživatelem (opaque), je nepřenositelný na jiného uživatele (not reassignable) a cílený na jednu službu (targeted). | 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 je cílený na jednu službu (targeted). |
| |
Popis vlastností naleznete na [[https://wiki.shibboleth.net/confluence/display/CONCEPT/NameIdentifiers|wiki Shibbolethu]]. | Popis vlastností naleznete na [[https://wiki.shibboleth.net/confluence/display/CONCEPT/NameIdentifiers|wiki Shibbolethu]]. |
Určený jako náhrada za zastaralé identifikátory jako [[edupersontargetedid]] a SAML 2.0 persistentní NameID z důvodu jejich problémů s velikostí písmen a také implementační komplexitou. | Určený jako náhrada za zastaralé identifikátory jako [[edupersontargetedid]] a SAML 2.0 persistentní NameID z důvodu jejich problémů s velikostí písmen a také implementační komplexitou. |
| |
Hodnotu doporučuji získat jako pro současný atribut [[edupersontargetedid]] / SAML 2.0 persistentní NameID. Pokud jste hodnoty ukládali do databáze (měli jste to tak dělat, protože nyní nebudete mít problémy), můžete snadno migrovat na BASE32 enkódování i jiný algoritmus. Nejprve se v databázi zjistí, jestli identifikátor existuje. Pokud ano, použije se. Pokud ne, vygeneruje se nový, uloží se do databáze a pak se použije. | Hodnoty atributů //algorithm// a //encoding// v elementu ''<DataConnector>'' se berou z //conf/saml-nameid.properties//, hodnota //salt// se bere z //credentials/secrets.properties//. |
| |
Hodnoty //salt//, //algorithm//, //encoding// a "zdrojový atribut" v elementu ''<DataConnector>'' se berou z //conf/saml-nameid.properties//. | S výhodou zde využíváme atributu [[unstructuredname]] jako vstupní hodnotu pro výpočet atributu **pairwise-id**. |
| |
| <WRAP info> |
| Bylo by možné (podobně jako v případě eduPersonTargetedID/persistentního NameID) ukládat vypočítané hodnoty do databáze. S databází vypočítaných identifikátorů je pak možné dělat užitečné ale i nevhodné věci, jako např. recyklovat atribut, který se recyklovat nesmí. |
| |
| Doporučujeme tedy identifikátory spíše počítat při každém přihlášení uživatele a být tak nucen neměnitelné atributy opravdu nikdy neměnit. |
| </WRAP> |
| |
<code xml> | <code xml> |
<AttributeDefinition xsi:type="Scoped" id="samlPairwiseID" scope="%{idp.scope}"> | <AttributeDefinition xsi:type="Scoped" id="samlPairwiseID" scope="%{idp.scope}"> |
<InputDataConnector ref="myStoredId" attributeNames="storedId"/> | <InputDataConnector ref="computed" attributeNames="computedId"/> |
</AttributeDefinition> | </AttributeDefinition> |
| |
<DataConnector id="myStoredId" | <DataConnector id="computed" |
xsi:type="StoredId" | xsi:type="ComputedId" |
generatedAttributeID="storedId" | excludeResolutionPhases="c14n/attribute" |
| generatedAttributeID="computedId" |
salt="%{idp.persistentId.salt}" | salt="%{idp.persistentId.salt}" |
algorithm="%{idp.persistentId.algorithm:SHA}" | algorithm="%{idp.persistentId.algorithm:SHA}" |
encoding="%{idp.persistentId.encoding:BASE32}" | encoding="%{idp.persistentId.encoding:BASE32}"> |
queryTimeout="0"> | <InputAttributeDefinition ref="unstructuredName"/> |
<InputAttributeDefinition ref="%{idp.persistentId.sourceAttribute}"/> | |
<BeanManagedConnection>shibboleth.MySQLDataSource</BeanManagedConnection> | |
</DataConnector> | </DataConnector> |
</code> | </code> |
| |