Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » Zamenjani paketi in stare oznake strani » Vtičnik WvdS.DokuWiki.Entra

Vtičnik WvdS.DokuWiki.Entra

Vtičnik: wvdsentra
Različica: 1.0.0 (faza 1)
Imenski prostor: lib/plugins/wvdsentra/
Vrsta: zaledje za overjanje (authtype)
Avtor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Licenca: GPL 2


Stanje: Faza 1 je izvedena in lokalno preverjena, vendar še ni vklopljena ($conf['authtype'] je še vedno authplain). Za vklop nastavite povezavo in preklopite authtype na wvdsentra — pred tem uporabite simulator prijave v skrbniškem vmesniku, da se izognete zaklepu dostopa.

Opis

Vtičnik wvdsentra overja uporabnike DokuWiki proti Entra ID / Azure AD v hibridnih okoljih (lokalni AD ali Azure AD DS z dosegljivim vmesnikom LDAP) in ohranja članstvo v skupinah iz ponudnika identitete usklajeno s skupinami DokuWiki ACL med izvajanjem.

Razširja priloženo zaledje authad in spreminja le dvoje:

  • Preslikava skupin — surove skupine AD se prek nastavljive tabele preslikajo v skupine

DokuWiki (@user/@wvds/@wvdse/@admin).

  • Zasilni dostop (break-glass) — nastavljeni lokalni računi se preverijo proti

conf/users.auth.php tudi ob nedosegljivem AD (zaščita pred popolnim zaklepom).

Celotna mehanika adLDAP/memberOf/SSO je nespremenjena prevzeta iz authad.

Način delovanja (razrešitev skupin ob prijavi)

  • Entra/AD je vir resnice za identiteto in članstvo v skupinah.
  • acl.auth.php ostaja ročno vzdrževani vir resnice za to, kaj sme posamezna skupina.
  • Ob vsaki prijavi vtičnik zapiše preslikane skupine DokuWiki v $USERINFO['grps']; ta enkratni

vnos usmerja jedrni ACL, <ifgroup> (wvdscond) in wkacmenu.

  • Nikoli ne piše v acl.auth.php ali users.auth.php — brez razhajanja, brez opravila cron.

Primeri uporabe

  • Osrednji nadzor dostopa — skupine AD določajo pravice v wikiju; novi zaposleni samodejno

dobijo dostop prek svojega članstva v AD.

  • Hibridni SSO — prijava prek obrazca proti AD, po želji pravi Windows SSO prek IIS Integrated

Windows Authentication (sso=1, REMOTE_USER) na gostitelju, včlanjenem v domeno/Azure AD DS.

  • Dodeljevanje pravic skladno s KRITIS/NIS2 — avtorizacija ostaja sledljiva v ročno

vzdrževanem ACL; identiteta prihaja iz osrednjega, utrjenega imenika.


Aktivacija

// conf/local.php
$conf['authtype'] = 'wvdsentra';
$conf['plugin']['wvdsentra']['base_dn']            = 'DC=corp,DC=example,DC=org';
$conf['plugin']['wvdsentra']['domain_controllers'] = 'dc01.corp.example.org';
$conf['plugin']['wvdsentra']['use_ssl']            = 1;      // LDAPS (priporočeno)
$conf['plugin']['wvdsentra']['account_suffix']     = '@corp.example.org';
$conf['plugin']['wvdsentra']['local_fallback_users'] = 'zpetrusic,wvdsverify'; // zasilni skrbniki
// Neobvezno pravi SSO Windows (gostitelj IIS, včlanjen v domeno):
// $conf['plugin']['wvdsentra']['sso'] = 1;

Preslikavo skupin upravljate v skrbniškem vmesniku (shranjeno v conf/wvdsentra.json), ne tukaj.


Preslikava skupin

Preslikava preslika surova imena skupin ponudnika identitete (neobčutljivo na velike/male črke) v skupine DokuWiki.

Način Obnašanje
Beli seznam vklopljen Prevzamejo se le izrecno preslikane skupine (šum se zavrže)
Beli seznam izklopljen Nepreslikane skupine se prevzamejo pod svojim normaliziranim surovim imenom
  • Privzeta skupina (privzeto: user) se vedno doda, tako da vsak overjeni uporabnik dobi

vsaj osnovno vlogo bralca.

  • Ključi GUID (čiste oblačne skupine Entra, faza 2) se obravnavajo kot navadni ključi.

Skrbniški vmesnik

Odprite do=admin&page=wvdsentra (samo za nadskrbnika). Štiri plošče:

Plošča Namen
Pregled Nadzorna plošča stanja: povezava (preizkus na zahtevo), način, pokritost preslikave, zasilni skrbniki, varovalo pred zaklepom
Preslikava skupin Urejevalnik ponudnik identitete → skupina DokuWiki, stikalo belega seznama, privzeta skupina, sprotno preverjanje, shranjevanje, zaščiteno s CSRF
Simulator prijave Le za branje: veriga surovo → preslikava → učinek ACL za uporabnika; ne spreminja seje
Varnost Zasilni računi, utrjevanje prenosa (LDAPS), navodila za obnovitev

Simulator prijave

Simulator je osrednje orodje za preverjanje preslikave pred vklopom: za testnega uporabnika prikaže surove skupine ponudnika identitete, iz njih izpeljane skupine DokuWiki in nastali učinek ACL (NONE/READ/EDIT/UPLOAD/ADMIN) na reprezentativnih imenskih prostorih — glede na trenutno aktiven acl.auth.php, brez spreminjanja seje.


Varnost

  • Zaščita pred zaklepom — zasilni dostop in varovalo, ki opozori, kadar nobeno pravilo ne

preslika v skupino nadskrbnika. Obnovitev: začasno nastavite authtype na authplain.

  • Prenos — vsilite LDAPS/StartTLS; geslo storitvenega računa le v local.php/trezorju, nikoli v izpisu (CWE-319).
  • CSRF — vsaka pisalna pot preveri checkSecurityToken() (CWE-352).
  • XSS — vse vrednosti iz ponudnika identitete oziroma od uporabnika so ubežene z hsc() oziroma na strani odjemalca (CWE-79).
  • Najmanjše pravice — skrbniški vmesnik in končne točke AJAX so na voljo le nadskrbniku (auth_isadmin()).

Žetoni oblikovnega sistema

Skrbniški vmesnik je omejen pod .wk-entra in barve prevzame iz pogodbe o slogih WvdS. Vsak žeton –we-* uporabi žeton pogodbe z barvno vrednostjo v slogu Fluent kot rezervo, zato je vmesnik videti profesionalen tudi pri osnovni predlogi dokuwiki. Popolna tabela: glejte lib/plugins/wvdsentra/README.md in Styles Contract (--wk-*).


Načrt razvoja

Faza Vsebina Stanje
Faza 1 Zaledje LDAP + preslikava skupin + zasilni dostop + skrbniški vmesnik + simulator prijave Izvedeno
Faza 2 SSO prek brskalnika z OIDC proti Entra (auth-code + PKCE, vloge aplikacije / prekoračitev prek Graph) prek trustExternal(), z istim GroupMapper Načrtovano (spike)
Faza 3 Zrcaljenje uporabnikov (Graph /users → SQLite), le če je potreben izpis uporabnikov brez povezave Neobvezno

Predpogoji

  • Razširitev PHP ldap (preverjeno prisotna v IIS PHP: C:\PHP\8.3).
  • Dosegljiva končna točka LDAP(S) do lokalnega AD ali Azure AD DS.
  • Faza 2 (OIDC) dodatno potrebuje stabilen preusmeritveni URI HTTPS in knjižnico JWT.

Opombe o različici

Različica Datum Spremembe
1.0.0 (faza 1) 2026-07-05 Prva izdaja: zaledje LDAP, preslikava skupin, zasilni dostop, skrbniški vmesnik s simulatorjem prijave

Glejte tudi


Tehnična referenca

Razred: auth_plugin_wvdsentra

Datoteka: lib/plugins/wvdsentra/auth.php (razširja auth_plugin_authad)

Metoda Opis
getUserData() Pridobi podatke authad in preslika surove skupine v skupine DokuWiki prek GroupMapper
checkPass() Zasilne prijave proti authplain, sicer AD-vez starševskega razreda
isCaseSensitive() Vrne false (uporabniška imena AD niso občutljiva na velike/male črke)
simulateMapping() Diagnostika surovo→preslikava samo za branje za simulator prijave
testConnection() Preizkus povezave LDAP na zahtevo za skrbniški vmesnik

Razred: GroupMapper

Datoteka: lib/plugins/wvdsentra/GroupMapper.php

Metoda Opis
map($rawGroups) Preslika surove skupine ponudnika identitete v skupine DokuWiki (beli seznam, privzeto, odstranjevanje podvojitev)
explain($rawGroups) Diagnostika (zadeto/zavrženo/posredovano) za simulator

Razred: MappingStore

Datoteka: lib/plugins/wvdsentra/MappingStore.php

Metoda Opis
load() Naloži/preveri preslikavo iz conf/wvdsentra.json (privzete vrednosti ob manjkajoči/pokvarjeni datoteki)
save($data) Atomarni zapis z varnostno kopijo .bak
mapper() Iz shranjenega stanja izdela pripravljen GroupMapper

<wk:audit stack=„doku“ title=„wvdsentra Plugin“>

<wk:include ref="code:qualitaet" critical="true">[x][x][x][x]</wk:include>
<wk:include ref="stacks:dokuwiki-php">[x][x][x][x][x]</wk:include>
<wk:include ref="sicherheit:kritis" critical="true">[x][x][x][x][x]</wk:include>

</wk:audit>

DISCUSSION

sl/wiki/dwe/legacy/wvdsentra.txt · Zadnja sprememba: uporabnika 0.0.0.0