Jump to content

Rozšíření:OATHAuth

From mediawiki.org
This page is a translated version of the page Extension:OATHAuth and the translation is 100% complete.
Nesmí se zaměňovat s: Extension:OAuth.
Příručka k rozšířením MediaWiki
OATHAuth
Stav rozšíření: stabilní
Implementace Uživatelská práva , Speciální stránka , Akce stránky
Popis Nabízí dvoufaktorové ověřování pro přihlášení
Autoři Ryan Lane
Nejnovější verze Průběžně aktualizováno
Zásady kompatibility Vydání snímků současně s MediaWiki. Hlavní vývojová větev není zpětně kompatibilní.
Změny v databázi Ano
Virtuální doména virtual-oathauth
  • $wgOATHMaxRecoveryCodesCount
  • $wgOATHAuth2FAForAllWarnings
  • $wgOATHInitialRecoveryCodesValidityDays
  • $wgOATHAuthEnforce2FAForAll
  • $wgOATHAdditionalRecoveryCodesValidityDays
  • $wgOATH2FARequiredGroupRemovalPages
  • $wgOATHMaxKeysPerUser
  • $wgWebAuthnRelyingPartyID
  • $wgWebAuthnNewCredsDisabled
  • $wgWebAuthnRelyingPartyName
  • $wgOATHAuthWindowRadius
  • $wgOATHSecretKey
  • $wgOATHPasswordlessLogin
  • $wgOATHAuthAccountPrefix
  • $wgOATHRecoveryCodesCount

  • oathauth-enable
  • oathauth-api-all
  • oathauth-disable-for-user
  • oathauth-view-log
  • oathauth-verify-user
Stáhnout
Přeložte rozšíření OATHAuth, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření OATHAuth[1] poskytuje podporu pro dvoufaktorové ověřování (2FA). Umožňuje uživatelům MediaWiki bezpečnější přihlášení pomocí ověřovacích kódů, bezpečnostních klíčů nebo přístupových klíčů spolu s jejich běžným heslem. Používá standard OATH (Iniciativa pro otevřené ověřování).

OATHAuth podporuje následující metody dvoufaktorového ověřování:

  • Správci hesel a ověřovací aplikace
  • Přístupové klíče
  • Bezpečnostní klíče
  • Kódy pro obnovení

OATHAuth také zahrnuje experimentální podporu pro přihlášení bez hesla a poskytuje framework 2FA, do kterého se mohou zapojit další rozšíření.

  • Toto rozšíření nesouvisí s protokolem OAuth, což je jiný protokol.
  • Dřívější rozšíření WebAuthn bylo sloučeno s tímto rozšířením.

Použití

Stránka s nápovědou k Dvoufaktorové autentizaci poskytuje koncovým uživatelům informace o tom, jak toto rozšíření používat.

Některé zásady vysvětlené v článku Dvoufaktorové ověřování platí pouze pro projekty Wikimedie. Základní pokyny pro použití 2FA jsou však stejné pro jakoukoli wiki, která používá Extension:OATHAuth.

Stránka Special:AccountSecurity provede uživatele přidáním a správou metod dvoufaktorového ověřování a kódů pro obnovení.

Instalace

Toto rozšíření je součástí MediaWiki 1.31 a vyšší. Zbývající konfigurační pokyny je stále nutné dodržovat.
Varování Varování: Toto rozšíření má chybu, kdy se neaktualizuje správně z webového aktualizátoru (mw-config) a místo toho musí použít aktualizační skript příkazového řádku update.php . (phab:T371849)

Před instalací OATHAuth si nejprve nainstalujte rozšíření GMP php nebo BCMath php. Funkce WebAuthn vyžaduje jedno z těchto dvou rozšíření.

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného OATHAuth ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/OATHAuth
    
  • Při instalaci z Gitu spusťte Composer pro instalaci závislostí PHP zadáním composer install --no-dev v adresáři rozšíření. (Vyskytnou-li se nějaké komplikace, podívejte se na T173141.)
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'OATHAuth' );
    
  • Spusťte aktualizační skript, který automaticky provede všechny nezbytné databázové změny, jaké rozšíření vyžaduje.
  • Vyžaduje nastavení v konfiguračním souboru.
  • Při použití OATHAuth se důrazně doporučuje nastavit ukládání do mezipaměti . Tím se zlepší výkon, ale také zabezpečení vaší wiki, pokud používáte OATHAuth. Pokud provozujete pouze jednu aplikaci/webový server a máte nainstalovaný php-apcu a nemáte nakonfigurovanou žádnou specifickou mezipaměť, MediaWiki se pravděpodobně vrátí k použití APCu. Pokud používáte více aplikačních/webových serverů, doporučuje se nastavit ukládání do mezipaměti lokálního clusteru , které mohou používat všichni hostitelé. Příklady zahrnují Memcached .
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

Konfigurace

Parametry

Konfigurační příznak Výchozí hodnota Popis
$wgOATHAuthWindowRadius 4 Počet platných oken tokenů v každém směru.

Toto říká OATH, aby přijímal tokeny po dobu přibližně ((1 + 2 * $wgOATHAuthWindowRadius) * 30) v sekundách. Tento rozsah platných oken je soustředěn kolem aktuálního času. Účelem této konfigurační proměnné je zohlednit rozdíly mezi hodinami uživatele a serveru. Doporučuje se však udržovat ji co nejnižší.

$wgOATHAuthAccountPrefix false Předpona použitá pro název uživatelského účtu OATHAuth a vydavatel použitý pro účet.

Pokud je hodnota false, použije se hodnota $wgSitename.

$wgOATHExclusiveRights [] (odstraněno od 1.46) Sada oprávnění, která jsou odebrána uživatelům, kteří se nepřihlásili pomocí dvoufaktorového ověřování.
$wgOATHRequiredForGroups [] (zastaralé od 1.46) Nastaví seznam skupin uživatelů, u kterých musí být povoleno dvoufaktorové ověřování. Pokud chcete, aby všichni přihlášení uživatelé měli povoleno dvoufaktorové ověřování, použijte 'user' (uživatel). Toto bylo v MediaWiki 1.46 zastaralé a mělo by být nahrazeno hodnotou $wgRestrictedGroups . Viz příklad.
$wgOATHSecretKey false
(zavedeno od 1.45) Aktualizujte na verzi 1.45 (nebo novější) a spusťte aktualizační skript před povolením této funkce a spuštěním jejího vlastního údržbového skriptu!
Tajná klíčová hodnota pro šifrování dat souvisejících s OATH, která by měla mít délku SODIUM_CRYPTO_SECRETBOX_KEYBYTES hexadecimálních bajtů (64 znaků). Tato proměnná je v současné době považována za neměnnou. Tuto hodnotu veřejně nenastavujte. Existuje několik způsobů, jak vytvořit kryptograficky zabezpečenou, náhodnou hodnotu klíče, například pomocí příkazu v systému Unix: $ hexdump -vn32 -e'8/8 "%08X" "\n"' /dev/urandom.

Po nastavení této hodnoty spusťte příkaz maintenance/UpdateTOTPSecretsToEncryptedFormat.php pro zašifrování existujících řádků databáze.

Upozorňujeme, že tuto hodnotu po jejím nastavení momentálně nelze změnit a nelze aktualizovat stávající šifrované kódy. Další informace získáte na stránce T403180.

$wgOATHRecoveryCodesCount 10 (zavedeno od 1.45) Výchozí počet obnovovacích kódů, které se mají vygenerovat pro daného uživatele.
$wgOATHMaxRecoveryCodesCount 100 (zavedeno od 1.46) Maximální počet obnovovacích kódů, které může uživatel mít. Do tohoto limitu se započítávají jak trvalé, tak dočasné kódy.
$wgOATHAdditionalRecoveryCodesValidityDays 7 (zavedeno od 1.46) Počet dní, po které budou platné kódy vygenerované na Special:Recover2FAForUser.
$wgOATHMaxKeysPerUser 100 (zavedeno od 1.46) Maximální počet klíčů povolených na uživatele.
$wgWebAuthnRelyingPartyID null Konfiguruje ID závislé strany. Pokud není definováno, výchozí hodnota je vaše doména .
$wgWebAuthnRelyingPartyName null Konfiguruje název závislé strany. Pokud není definován, výchozí hodnota je váš název webu .
$wgWebAuthnNewCredsDisabled false (zavedeno od 1.43) Pokud je hodnota true, nelze přidat nové přihlašovací údaje WebAuthn (bezpečnostní klíče a přístupové klíče). Podívejte se na T354701 a git #1187476.
$wgOATHAuthDatabase false (odstraněno od 1.44) Doména databáze. Používá se pouze v prostředí s více databázemi. Po verzi MediaWiki 1.42 byste měli místo této možnosti použít $wgVirtualDomainsMapping['virtual-oathauth'] .
$wgOATH2FARequiredGroupRemovalPages [] (zavedeno od 1.46) Pole názvů stránek, kde si uživatel může požádat o vyřazení ze skupin vyžadujících 2FA (klíčem je název skupiny). Stránky budou odkazovány v oznámení o nutnosti 2FA pro uživatele. Pokud pro příslušnou skupinu neexistuje žádný záznam, použije se klíč *.
$wgOATHPasswordlessLogin false (zavedeno od 1.46) Povolit přihlášení bez hesla pomocí klíčů.

OATHAuth také přidává klíč do pole $wgRateLimits pro definování limitů počtu pokusů o ověření:

		'badoath' => [
			'&can-bypass' => false,
			'user' => [ 10, 60 ],
			'user-global' => [ 10, 60 ],
		]

Upozorňujeme, že klíč user-global je k dispozici pouze od verze 1.35. Starší verze se musely spoléhat na user a možná i na ip-all. Podrobnosti naleznete v dokumentaci k $wgRateLimits.

Uživatelské oprávnění

Uživatelská práva Popis Ve výchozím nastavení je dáno
oathauth-enable Umožňuje uživatelům nakonfigurovat dvoufaktorové ověřování na jejich účtu pomocí Special:AccountSecurity. user
oathauth-disable-for-user Umožňuje důvěryhodným osobám odebrat dvoufaktorové ověřování z účtu jiného uživatele pomocí kódu Special:DisableOATHForUser. sysop
oathauth-recover-for-user (zavedeno od 1.46) Uživatelé s tímto oprávněním mohou generovat další obnovovací kódy (s použitím Special:Recover2FAForUser) pro ostatní uživatele, což jim pomůže obnovit přístup k jejich účtu, pokud ztratí všechny své metody 2FA. sysop
oathauth-verify-user Umožňuje uživatelům zkontrolovat, zda má jiný uživatel na svém účtu povoleno dvoufaktorové ověřování, a to pomocí kódu Special:VerifyOATHForUser. sysop
oathauth-view-log Uděluje přístup k úložišti Special:Log/oath, kde jsou zaznamenávány všechny administrativní operace související s dvoufaktorovým ověřováním. sysop

Správa

Resetování uživatelského tokenu

Pokud uživatel ztratí jak generátor tokenů, tak i tokeny pro obnovení, může být dvoufaktorové ověřování uživateli odebráno spuštěním údržbového skriptu disableOATHAuthForUser:

Verze MediaWiki:
1.40
$ ./maintenance/run OATHAuth:disableOATHAuthForUser <user>
Verze MediaWiki:
1.39
$ php ./extensions/OATHAuth/maintenance/disableOATHAuthForUser.php <user>

Kde ‎<user> je jméno uživatele, kterému má být 2FA zakázáno.

Místní rozvoj

Aby bylo možné vytvořit klíče WebAuthn a přihlásit se s nimi, musí být wiki přístupná přes HTTPS, i když se nachází na localhostu. To znamená, že typické nastavení, kde je URL adresa wiki http://localhost:8080, nebude fungovat a budete muset nastavit HTTPS proxy. Pokud používáte MediaWiki-Docker, postupujte podle receptu HTTPS a poté použijte https://localhost:8443 k návštěvě vaší wiki. Pokud nepoužíváte MediaWiki-Docker, nainstalujte Caddy a do /etc/caddy/Caddyfile vložte následující:

localhost:8443 {
    reverse_proxy 127.0.0.1:8080
    tls internal
}

Toto převede https://localhost:8443 na http://localhost:8080. V případě potřeby změňte 8080 na port, na kterém MediaWiki normálně běží.

Sdílené databázové tabulky

Varování Varování: Vzhledem k omezením v rozhraní WebAuthn API vyžadují nastavení více wiki speciální zacházení. Viz níže uvedená sekce "Podpora napříč wikinami".

Některé wikiny mohou chtít sdílet data 2FA mezi více wikinami. Sdílené databázové tabulky , předchozí metoda pro toto je v MediaWiki 1.42 a novějších zastaralá. Pro nové instalace wiki farmy, kde chcete, aby uživatelé sdíleli svůj token 2FA mezi více wikinami, použijte prosím $wgVirtualDomainsMapping a rozšíření automaticky nastaví tabulky na zadaný název databáze.

$wgVirtualDomainsMapping['virtual-oathauth'] = [ 'db' => 'sharedbname' ]

Při použití sdílených databázových tabulek, tj. stejné sady uživatelů pro různé wikiny, připočítejte k hodnotě 3 oathauth_devices a 2 $.

$wgSharedTables[] = 'oathauth_devices';
$wgSharedTables[] = 'oathauth_types';

Podpora napříč wikinami

Ve výchozím nastavení mohou uživatelé použít svůj bezpečnostní klíč pouze k přihlášení na wiki, kde jej původně zaregistrovali. Pokus o přihlášení na jinou wiki v rámci dané wiki rodiny vede k chybě ohledně nerozpoznaného klíče a omezuje možnost přihlášení pouze na wiki, kde si svůj klíč zaregistroval. Pro wiki rodiny (ty s nakonfigurovaným $wgVirtualDomainsMapping['virtual-oathauth']) sdílející stejnou kořenovou doménu existuje omezená podpora. Systémoví administrátoři musí nejprve nakonfigurovat podporu pro tuto funkci definováním proměnných $wgWebAuthnRelyingPartyID a $wgWebAuthnRelyingPartyName. ID předávající strany musí být nastaveno na vaši kořenovou doménu.

  • Například pokud máte wikiny na adresách a.example.org, b.example.org a c.example.org, kořenová doména je example.org a musí být nastavena jako ID. Název spoléhající se strany může být libovolný, ale ideálně by to měl být název vaší wiki rodiny.

Rodiny wiki, které překračují různé domény, jsou podporovány funkcí "sdílené domény" v Rozšíření:CentralAuth . Takto je nastavena rodina wiki stránek Wikimedie, ale tato funkce není v současné době dobře zdokumentována pro opětovné použití třetími stranami.

Podpora prohlížeče WebAuthn

Seznam všech webových prohlížečů podporovaných WebAuthn naleznete na Mozilla Developer Network. Existují některé známé problémy s Firefoxem v Linuxu (T415089)

Historické informace

Rozšíření OATHAuth původně poskytovalo podporu pro TOTP[1], který začínal jako protokol pro generování 6místných jednorázových ověřovacích kódů, ale postupem času se stal obecnějším. Zprávy v uživatelském rozhraní OATHAuth preferují obecné, běžněji používané termíny: "authenticator app" místo "TOTP" a "passkey" nebo "security key" místo "WebAuthn key". Kód rozšíření však stále používá "TOTP" a "WebAuthn" v názvech modulů.

Extension:WebAuthn byl dříve samostatný modul, ale koncem roku 2025 byl zkombinován do rozšíření OATHAuth jako součást MediaWiki 1.46.[2]

Související odkazy

Poznámky pod čarou

  1. 1.0 1.1 OATH je zkratka pro otevřené ověřování (Open Authentication), což je organizace, která vytvořila standardy pro protokoly HOTP a TOPT, které toto rozšíření poskytuje.
  2. T303495