LPS:IdM/midPoint/QSign
Info
QSign - systém na schvalování a podepisování dokumentů.
- Resource: Qsign
- Git: https://ipmil.civ.zcu.cz/midpoint/connector-qsign
- Hostname:
- test: https://podepisovani.zcu.cz
- produkce: https://podepisovani-test.zcu.cz
- Endpoint:
- test: https://stag-doc-test.zcu.cz/uni
- produkce: https://stag-doc.zcu.cz/uni
- REST API: system-api.yaml
- Dokumentace (zadání): IdAM-ng/2024/Qsign
- Správa: CIV/SIS, firma Marbes (kontakt P@ja)
QSign a REST API dodává firma Marbes.
IdM spravuje uživatele, role a organizační jednotky.
| kind | objectClass | intent | focus | význam |
|---|---|---|---|---|
| account | #User | user | UserType | osoba |
| entitlement | #Role | role | RoleType | QSign role |
| generic | #OrgUnit | - | OrgType | pracoviště |
Model a chování
User
Viz connector-qsign User.
Pouze zaměstnanci (kvuli technickému omezení i bývalí!), ostatní lze přiřadit ručně.
Korelace podle extId a hsmId.
Neznámé identity nechává, identita s loginem "admin" je protected.
Atributy:
- extId: CRO_ID
- hsmId: formát "{CRO_ID}@zcu.cz"
- orgUnitCode: primární kód pracoviště jinak "UNI" (vyžadováno)
- roles: viz #Roles
Mazání:
- může selhat
- před mazáním se provádí deaktivace
- před mazáním se mění login na CRO ID (nebo "{LOGIN}.delete{ROK}", pokud není CRO ID)
Role
Viz connector-qsign Role.
Role jako takové jsou jen ke čtení a bez automatického importu (je jich jen několik). Novou roli lze importovat z resourcu Qsign ručně.
Udržuje se přiřazení rolí uživatelům, neznámé role se uživatelům mažou.
Přiřazení Qsign role uživateli neznamená založení uživatele na Qsign, pouze se přidá, pokud již uživatel existuje. Cílem je, aby fungovala deaktivace i s ručně přiřazenými rolemi.
Speciální QSign role je role s názvem SIGNER. Řídí se tím další atributy - v IS/STAG učitelé LPS:IdM/midPoint/Stag#Stag učitelé.
OrgUnit
Posílá se kód a zkratka na základě číselníku z Magionu.
Atributy:
code: kód pracoviště, hodnota totožná s __UID__
name: zkratka pracoviště, může být duplicitní (Magion to nehlídá a QSign to povoluje)
==> tento atribut není použit jako secondaryIdentifier
==> midPoint povolí duplicitu a nepoužívá se pro discovery mechanizmus
Instalace
Zkontrolovat existující loginy a zarezervovat v IdM.
Postupy
Ruční založení uživatele
Přiřadit roli LR: Qsign User. Je vyžadováno CRO ID.
Role v QSign u každého uživatele
Trvalé role QSign, které mají přijít automaticky všem, je možné zařadit do inducement v roli LR: Qsign User.
Změna role QSign SIGNER
# konstanta (liší se pro každou instanci IdM) oidSigner="$(./query-role.py --oid identifier=SIGNER archetypeRef@=970ca15a-2b40-4b5d-bbc0-b8e391f5d6d4 2>/dev/null)"
# přiřazení (podle loginu) ./modify-user.py -q name=$LOGIN -a $oidSigner:role
# přiřazení (podle CRO ID) ./modify-user.py -q personalNumber=$CRO_ID -a $oidSigner:role
# vylistování ./query-user.py assignment/targetRef@=$oidSigner --csv name
# zrušení (podle loginu) ./modify-user.py -q name=$LOGIN --delete-assignment $oidSigner:role
REST API
#url=https://stag-doc-test.zcu.cz/uni/system/public/api/v1 url=https://stag-doc.zcu.cz/uni/system/public/api/v1 read -r qsignpass
Search user:
curl -i -u "idm:$qsignpass" -X POST -H 'Content-Type: application/json' $url/user/search -d"{\"login\": \"login3\"}"
Delete user:
curl -i -u "idm:$qsignpass" -X DELETE $url/user/INTERNI_CISLO
List orgs:
curl -i -u "idm:$qsignpass" -X GET $url/org | jq .
Delete org:
curl -i -u "idm:$qsignpass" -X DELETE $url/org/KOD
TODO
QSign a REST API
- často error 500, hlavně při větším zatížení
- hodilo by se nějaké jednoduché volání na stav služby (aktuálně děláme query s konfigurovatelným ID uživatele)
User
- nelze měnit login
- při hledání se nedělá oboustranný LIKE
- asi jen chyba v dokumentaci
- (v konektoru dodatečný filter, případné zapnutí by nevadilo)
- je potřeba zamezit živelnému vzniku loginů (jen s prefixem, aby nebylo v konfliktu, ...)
OrgUnit
- nejde změna active=false
- nejde create s active=false
QSign data
- test_dezo: konflikt se skutečnou osobou (nahodnu) => zrušit extId
- marbesco: konflikt s skutečnou osobou (správe QSign) => kontu marbesco přidělěno CRO ID a napojeno
- 38 UNMATCHED identit (fakespis, externista_login, icz, ...) - možná hrozí konflikt, i když QSign dovoluje duplicitní loginy
midPoint
- pouze zaměstnanci (tj. mimo doktorandů bez úvazku)
- divočina, co se týče existence
- buď přímé přiřazení role "LR: Qsign User"
- nebo zaměstnanec, ale musí být nějaké alespoň nepřímé přiřazení resourcu "Qsign" (prakticky je nepřímo přiřazena role "LR: Qsign User")
- podívat se ještě na ruční zařazování vs Orion stav
- pracovat s duplicitními loginy? (šlo by to, korelace se podle loginů nedělá)
- mazání pracovišť hned při deaktivaci? (není nutno)