Rozšíření: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 |
|
|
|
|
|
| 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í.
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
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
OATHAuthve vaší složceextensions/.
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-devv 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.
Dokončeno – Přejděte na stránku Special:Versionvaší 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ě |
$wgOATHAuthAccountPrefix
|
false
|
Předpona použitá pro název uživatelského účtu OATHAuth a vydavatel použitý pro účet.
Pokud je hodnota |
$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 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
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.orgac.example.org, kořenová doména jeexample.orga 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
- Product_Safety_and_Integrity/Account_Security
- Dvoufaktorové ověřování (Two-factor authentication TFA)
- Iniciativa pro otevřené ověřování (Open Authentication OATH)
Poznámky pod čarou
- ↑ 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.
- ↑ T303495
| Toto rozšíření se používá na jednom nebo více projektech Wikimedia. Pravděpodobně to znamená, že rozšíření je stabilní a funguje dostatečně dobře, aby jej mohly používat weby s tak vysokou návštěvností. Vyhledejte tento název rozšíření v konfiguračních souborech CommonSettings.php a InitialiseSettings.php Wikimedie, abyste viděli, kde je nainstalováno. Úplný seznam rozšíření nainstalovaných na konkrétní wiki lze vidět na stránce wiki Special:Version. |
| Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích: |
- Stable extensions/cs
- User rights extensions/cs
- Special page extensions/cs
- Page action extensions/cs
- Extensions which add rights/cs
- AuthChangeFormFields extensions/cs
- BeforePageDisplay extensions/cs
- GetPreferences extensions/cs
- LoadExtensionSchemaUpdates extensions/cs
- ReadPrivateUserRequirementsCondition extensions/cs
- SiteNoticeAfter extensions/cs
- UnitTestsAfterDatabaseSetup extensions/cs
- UnitTestsBeforeDatabaseTeardown extensions/cs
- UserModifyCreateAccountEmail extensions/cs
- UserRequirementsCondition extensions/cs
- GPL licensed extensions/cs
- Extensions in Wikimedia version control/cs
- All extensions/cs
- Extensions bundled with MediaWiki 1.31/cs
- Extensions requiring Composer with git/cs
- Extensions used on Wikimedia/cs
- Extensions included in BlueSpice/cs
- Extensions included in Canasta/cs
- Extensions available as Debian packages/cs
- Extensions included in Miraheze/cs
- Extensions included in MyWikis/cs
- Extensions included in ProWiki/cs
- Extensions included in semantic::core/cs
- Extensions included in Weird Gloop/cs
- Extensions included in wiki.gg/cs
- Login extensions/cs
