Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » Identity » Tehnična referenca

Tehnična referenca

Priročnik za wkidentity: shranjevanje na datotečnem sistemu, skrbniška plošča, nastavitve in razredi. Zakaj so stvari tako zgrajene, piše v Konceptih; kaj želite narediti, na Identity.

Paket: wkidentity · Različica: 1.0.0 · Mesto: lib/plugins/wkidentity/
Vrsta: vtičnik action in helper — brez authtype, brez oznake syntax
Avtor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs) · Licenca: GPL 2

Slovenska referenca je krajša in starejša od nemške; pogodba, vstopne točke enkratnih kod in pet od devetih razredov obstajajo samo v nemščini: Technische Referenz (de).
Stanje izvedbe vodi Stanje izvedbe.

Shranjevanje: izključno datotečno, brez baze podatkov

Ne obstaja nikakršna integracija SQLite/DB. Natanko ena datoteka na uporabnika:

data/meta/wkidentity/<login>.secret

  • Vsebina: majhna ovojnica JSON — {„method“:„totp“,„secret“:„BASE32…“} ali

{„method“:„email“} — kot celota šifrirana AES z lastnima funkcijama jedra

  ''auth_encrypt()''/''auth_decrypt()'' (''inc/auth.php''), enak mehanizem, kot ga jedro
  uporablja za piškotek "ostani prijavljen". Ovojnica (namesto golega niza skrivnosti) je to,
  kar sploh omogoča identifikator metode po uporabniku.
* Izpeljava ključa: ''hash_hmac('sha256', 'wkidentity-secret-at-rest-v1', auth_cookiesalt())'' —
  ista namestitvena sol piškotka kot pri jedrnem piškotku, vendar s fiksno kontekstno oznako,
  tako da se isto ključno gradivo kot pri funkciji piškotka nikoli ne ponovno uporabi.
* ''isEnrolled()'' preveri le ''file_exists()'' — brez indeksa, brez predpomnilnika, brez datoteke registra.
* Čakajoča skrivnost TOTP med potrditvijo je izključno v seji PHP (glejte potek dela zgoraj),
  nikoli v tej datoteki. Koda za potrditev po e-pošti je shranjena zgoščena (SHA-256, nikoli v
  golem besedilu) v lastni, kratkotrajni datoteki ''data/meta/wkidentity/<login>.emailcode''.
* Skrbniška politika (kateri uporabniki/imenski prostori zahtevajo TOTP) je **ločeno** v
  ''conf/wkidentity-policy.json'' (glejte skrbniško ploščo spodaj) — brez mešanja podatkov o
  vpisu in pravil uveljavljanja.

Skrbniška plošča

Odprite do=admin&page=wkidentity (le nadskrbnik). Vzorec zavihkov Fluent kot pri wvdsentra (ARIA tablist, vsi paneli ostanejo vidni brez JavaScript):

Zavihek Vsebina
Pregled Števci: vpisani po metodi, „zahtevano, a manjka“, število obveznih imenskih prostorov
Uporabniki Seznam vpisanih z gumbom za ponastavitev po vrstici, podpisana globoka povezava v predal za urejanje usermanager, vzdrževanje seznama „TOTP zahtevan“
Imenski prostori Textarea s predponami imenskih prostorov, ki zahtevajo vpis TOTP/e-pošte

Trajnost je ločena od Config Managerja DokuWiki, v conf/wkidentity-policy.json (PolicyStore.php, vzorec 1:1 po zgledu wvdsentra/MappingStore.php: varnostna kopija .bak pred vsakim prepisom, trdna normalizacija).

Barvna semantika gumbov (od 2026-07-11): Ponastavitev (po vrstici) in „ד za odstranitev vnosa s seznama „TOTP zahtevan“ sta rdeča (wt-btn–danger, destruktivni dejanji); „Shrani“ (zavihek Imenski prostori) je nevtralen/bel namesto prejšnjega modrega poudarka — noben gumb na tem panelu ni več samodejno poudarjen glavni CTA. Prejšnji lokalni blok vzdevkov žetonov –wt-* v admin.css je bil odstranjen; vsako pravilo zdaj neposredno referencira osrednjo pogodbo –wk-* (podrobnosti: Contract v3).

Cache-busting za admin.css (od 2026-07-12): action.php::injectAssets() je doslej povezoval admin.css brez kakršnega koli lomilca predpomnilnika (brez poizvedbenega niza ?t=… kot pri mehanizmu tseed na ravni celotnega mesta) — brskalnik, ki je ta URL že enkrat naložil, je po spremembi CSS še vedno prikazoval staro, predpomnjeno različico, dokler se ni vsililo trdo osveževanje. To je bil dejanski vzrok prijavljenega „spet modrega gumba namesto belega“ — sam popravek barve je bil že pravilen, le ni viden dosegel vsakega brskalnika. Popravek: povezava admin.css zdaj nosi poizvedbeni niz ?t=… na osnovi mtime, enako načelo kot pri tseed na ravni celotnega mesta.

Konfiguracija

Skrbništvo → Nastavitve konfiguracije ($conf['plugin']['wkidentity'][…]):

Nastavitev Privzeto Opis
issuer '''' (prazno) Ime izdajatelja v aplikaciji authenticator; prazno = naslov wikija ($conf['title']), sicer povratek na „DokuWiki“
show_debug_link vklopljeno Prikaži povezavo do interne testne strani v profilu
digits 6 Dolžina kode (6/7/8)
period 30 Trajanje veljavnosti kode v sekundah (30/60)
window 1 Toleranca za odstopanje ure v ± časovnih korakih
allow_email_method izklopljeno Odkleni enkratno kodo po e-pošti kot alternativo aplikaciji authenticator — aktivirajte šele po preverjeni dostavi pošte
enforce_login izklopljeno Uveljavljanje ob prijavi za že vpisane uporabnike — stikalo za zasilni izklop, glejte „Uveljavljanje prijave“ zgoraj
login_max_attempts 5 Neuspeli poskusi na prijavo, preden se zavrže
login_attempt_window 600 Trajanje veljavnosti prijave, ki čaka na drugi faktor, v sekundah
Microsoft Authenticator in Google Authenticator prezreta digits/period iz URI otpauth:// in vedno računata s 6 števkami / 30 sekundami. Drugačne vrednosti delujejo le z aplikacijami, ki te parametre dejansko upoštevajo (npr. Aegis, FreeOTP, 2FAS, Bitwarden) — pri obeh velikih aplikacijah bi bila sicer vsaka koda zavrnjena.

Tehnična referenca

Razred: action_plugin_wkidentity

Datoteka: lib/plugins/wkidentity/action.php

Kljuka Namen
FORM_UPDATEPROFILE_OUTPUT Vstavi območje 2FA v obrazec profila (vpis prek aplikacije in e-pošte, stanje/onemogočitev)
ACTION_ACT_PREPROCESS Obdela wkidentity_action=start|confirm|email_start|email_confirm in wkidentity_disable; prevzame wkidentity_debug in (prek LoginGate) wkidentity_verify
TPL_ACT_UNKNOWN Izriše interno testno stran wkidentity_debug ter (prek LoginGate) wkidentity_verify
TPL_METAHEADER_OUTPUT Naloži knjižnico QR + pomožne skripte le na pogledih, ki jih potrebujejo
AUTH_ACL_CHECK Zavrne branje/pisanje v obveznih imenskih prostorih za nevpisane uporabnike
ACTION_DENIED_TPLCONTENT Razlagalno besedilo na strani zavrnitve, kadar blokada izvira iz tega vtičnika
TPL_CONTENT_DISPLAY Opozorilni pas na ravni celotnega mesta za „zahtevano, a ni vpisano“
AUTH_LOGIN_CHECK Prenese na LoginGate::gate()

Razred: helper_plugin_wkidentity

Datoteka: lib/plugins/wkidentity/helper.php

Metoda Opis
generateSecret() Nova naključna skrivnost (160 bitov, Base32)
getCode() / verifyCode() Izračun TOTP oziroma preverjanje s toleranco odstopanja
buildOtpAuthUri() URI otpauth:// za kodo QR
isEnrolled() / method() / loadSecret() / saveSecret() / saveEmailMethod() / removeSecret() Shranjevanje ovojnice JSON pod data/meta/wkidentity/
sendEmailChallenge() / verifyEmailChallenge() Enkratna koda po e-pošti: pošiljanje, zgoščeno shranjevanje z iztekom, enkratno preverjanje

Razred: PolicyStore

Datoteka: lib/plugins/wkidentity/PolicyStore.php (imenski prostor dokuwiki\plugin\wkidentity)

Metoda Opis
load() / save() Naloži/trajno shrani conf/wkidentity-policy.json (vzorec po zgledu wvdsentra/MappingStore.php)
isUserRequired() Ali je prijava označena kot „TOTP zahtevan“ (opozorilna opomba)
isNamespaceRequired() Ujemanje predpone s seznamom obveznih imenskih prostorov

Razred: LoginGate

Datoteka: lib/plugins/wkidentity/LoginGate.php (imenski prostor dokuwiki\plugin\wkidentity)

Metoda Opis
gate() Obravnavalec AUTH_LOGIN_CHECK: lastno preverjanje gesla, ustavi vpisane uporabnike pred dokončanjem seje
renderVerifyPage() Izriše/obdela do=wkidentity_verify (vnos kode, zahteva po e-pošti, števec neuspelih poskusov)

Sorodne teme

sl/wiki/dwe/wkidentity/reference.txt · Zadnja sprememba: uporabnika 0.0.0.0