Rozšíření:WSOAuth
Stav rozšíření: stabilní |
|
|---|---|
| Implementace | Identita uživatele, Uživatelská práva |
| Popis | Rozšiřuje rozšíření PluggableAuth o poskytování ověřování pomocí poskytovatele OAuth |
| Autoři | Xxmarijnw (Wikibase Solutions) and others |
| Nejnovější verze | 9.0.1 (2025-02-08) |
| Zásady kompatibility | Vydání snímků současně s MediaWiki. Hlavní vývojová větev není zpětně kompatibilní. |
| MediaWiki | 1.35+ |
| PHP | 7.3+ |
| Změny v databázi | Ano |
|
|
| Licence | Licence MIT |
| Stáhnout | |
| Přeložte rozšíření WSOAuth | |
| Vagrant role | wsoauth |
| Problémy | Otevřené úkoly · Nahlásit chybu |
Rozšíření WSOAuth (Wikibase Solutions OAuth) poskytuje ověřování pomocí poskytovatele OAuth. Poskytuje vrstvu nad rozšířením PluggableAuth, která umožňuje ověřování přes OAuth.[1]
Následující poskytovatelé OAuth jsou aktuálně ve výchozím nastavení k dispozici:
- MediaWiki (instance MediaWiki běžící na OAuth)
WSOAuth usnadňuje přidávání nových poskytovatelů OAuth. Více informací o tom, jak přidat nového poskytovatele OAuth, si můžete přečíst na webu WSOAuth pro vývojáře.
Kompatibilita
| WSOAuth | PluggableAuth | MediaWiki | ||
|---|---|---|---|---|
| 9.0+ | 7.0+ |
| ||
| 6.0-8.x | 6.0-6.x |
| ||
| 1.0-5.x | 5.7 |
|
Nastavení
Pro následující povinné konfigurační proměnné je nutné zadat hodnoty:
| Příznak | Výchozí | Popis | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$wgPluggableAuth_Config (viz Rozšíření:PluggableAuth#Configuration)
|
[]
|
Povinné pole polí určujících poskytovatele OAuth a jejich konfiguraci. Pole data v poli by mělo být pole s následujícími klíči:
|
Kromě toho jsou k dispozici následující volitelné konfigurační proměnné:
| Příznak | Výchozí | Popis |
|---|---|---|
$wgOAuthCustomAuthProviders |
false |
Pole obsahující seznam vlastních poskytovatelů OAuth spolu s názvy jejich tříd (další informace viz WSOAuth pro vývojáře). |
$wgOAuthAutoPopulateGroups |
[] |
Pole obsahující seznam názvů skupin MediaWiki, které musí být uživateli automaticky přiřazeny po jeho ověření. Od verze WSOAuth 9.0 je nutné také nakonfigurovat způsob synchronizace skupin. |
$wgOAuthMigrateUsersByUsername |
false |
Zda povolit uchvácení stávajících účtů. Pokud je uživatel již před instalací WSOAuth zaregistrován na vaší wiki se stejným uživatelským jménem jako uživatel, který se přihlašuje přes OAuth, toto nastavení určí, zda bude tento existující účet přidělen uživateli, který se přihlašuje (true), nebo zda bude uživateli, který se přihlašuje přes OAuth, v přihlášení zabráněno, protože daný uživatel již existuje (false). Jakmile je účet migrován, uživatel přidružený k tomuto účtu se bude moci vždy přihlásit prostřednictvím OAuth, a to i po změně tohoto nastavení na false. Je bezpečnější ponechat tuto hodnotu false a nechat uživatele, aby se ke svému vzdálenému účtu připojil ručně přes Special:Preferences.
|
$wgOAuthDisallowRemoteOnlyAccounts |
false |
Zda povolit účtům, aby neměly místní protějšek. |
$wgOAuthUseRealNameAsUsername |
false |
Zda použít skutečné jméno jako uživatelské jméno. |
Příklad $wgPluggableAuth_Config pro jednoho poskytovatele je následující:
$wgPluggableAuth_Config['nlwiki'] = [
'plugin' => 'WSOAuth',
'data' => [
'type' => 'mediawiki',
'uri' => 'https://nl.wikipedia.org/wiki/Special:OAuth',
'clientId' => '...',
'clientSecret' => '...'
],
'buttonLabelMessage' => 'dutch-wikipedia-login-button-label'
];
nlwiki) se používá k interní identifikaci poskytovatele OAuth a NESMÍ se měnit.Příklad $wgPluggableAuth_Config pro více poskytovatelů je následující:
$wgPluggableAuth_Config['nlwiki'] = [
'plugin' => 'WSOAuth',
'data' => [
'type' => 'mediawiki',
'uri' => 'https://nl.wikipedia.org/wiki/Special:OAuth',
'clientId' => '...',
'clientSecret' => '...'
],
'buttonLabelMessage' => 'dutch-wikipedia-login-button-label'
];
$wgPluggableAuth_Config['facebook'] = [
'plugin' => 'WSOAuth',
'data' => [
'type' => 'facebook',
'clientId' => '...',
'clientSecret' => '...',
'redirectUri' => '...'
],
'buttonLabelMessage' => 'facebook-login-button-label'
];
Synchronizace skupiny
Chcete-li nakonfigurovat synchronizaci skupin, je třeba přidat pole groupsyncs do pole $wgPluggableAuth_Config.
Toto pole musí obsahovat nulu nebo více dílčích polí, která určují, jak jsou skupiny synchronizovány.
Podrobné informace naleznete v tématu Rozšíření:PluggableAuth#Skupinová synchronizace.
Nejběžnějším případem použití je synchronizace všech skupin, čehož lze dosáhnout pomocí algoritmu synchronizace skupin syncall.
Níže uvedená konfigurace dosáhne podobné funkcionality jako starší verze WSOAuth (<= 8.0.0).
$wgPluggableAuth_Config['nlwiki'] = [
'plugin' => 'WSOAuth',
'data' => [
'type' => 'mediawiki',
'uri' => 'https://nl.wikipedia.org/wiki/Special:OAuth',
'clientId' => '...',
'clientSecret' => '...',
'autoPopulateGroups' => ['mygroups' => ['sysop', 'bureaucrat']]
],
'groupsyncs' => [
'mygroupsync' => [
'type' => 'syncall',
'groupattributename' => 'mygroups'
]
]
'buttonLabelMessage' => 'dutch-wikipedia-login-button-label'
];
Poskytovatelé OAuth
V současné době jsou podporováni následující poskytovatelé OAuth:
- MediaWiki OAuth (instance MediaWiki běžící na OAuth)
MediaWiki OAuth
Chcete-li povolit ověřování a autorizaci prostřednictvím MediaWiki OAuth, postupujte podle níže uvedených kroků.
- Zaregistrujte novou spotřebitelskou aplikaci OAuth 1.0a pro wiki, ke které delegujete přístup.
- V souboru LocalSettings.php nastavte následující:
$wgPluggableAuth_Config['mywikiauth'] = [
'plugin' => 'WSOAuth',
'data' => [
'type' => 'mediawiki',
'uri' => 'https://<central wiki>/w/index.php?title=Special:OAuth',
'clientId' => '<The client ID (key) you received from MediaWiki when you registered your app>',
'clientSecret' => '<The secret you received from MediaWiki when you registered your app>'
]
];
Příklad registrace nové uživatelské aplikace OAuth pro wiki, pro kterou se chcete ověřit na Meta Wiki od Wikimedie:
- Návštěva: https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose
- Klikněte na tlačítko "Vyžádat token pro nového uživatele OAuth 1.0a".
- Nastavte následující:
- Set
Název aplikace:to something unique for your application (i.e the string "mywikiauth" used above in $wgPluggableAuth_Config['mywikiauth']).
(Note - Be sure to keep an exact copy of this string value for use later.) - Set
Popis aplikace:Application description" to some helpful text. - Set "This consumer is for use only by <yourusername>." checkbox as you wish.
- Set
URL pro OAuth „callback“:to the canonical URL of Special:PluggableAuthLogin on your wiki, e.g.https://<local wiki URL and script path>/index.php?title=Special:PluggableAuthLogin - Note
Kontaktní e-mailová adresa:is set as the email address related to your wikimedia account. - Ensure
Použitelný projekt:is set to "*" (this is the default) - Set "Types of grants being requested" to "User identity verification only, no ability to read pages or act on a user's behalf."
- Set
- Click the checkbox to agree to the conditions of use.
- Click the "Propose Consumer" button to submit your proposal.
- Write down the "Client application key" and "Client application secret" that are given by meta.wikimedia.org upon submission.
- Use the "Application name" you submitted to meta.wikipedia.org as the WSO 'mywikiauth' in the example configuration on the left.
- Use the "Client application key" as the WSO "clientId"
- Use the "Client application secret" as the WSO "clientSecret"
Chcete-li jako přihlašovací systém používat výhradně MediaWiki a automaticky se přihlašovat při návštěvě wiki, nastavte také v proměnné LocalSettings.php následující:
$wgPluggableAuth_EnableAutoLogin = true;
$wgPluggableAuth_EnableLocalLogin = false;
Pro aplikace OAuth, které používají prefix "callback", musí být přesměrování URI[2] nastaveno pomocí klíče redirectUri.
Tento identifikátor URI přesměrování musí mít zadaný prefix.
Chcete-li povolit ověřování a autorizaci přes Facebook, postupujte podle níže uvedených kroků.
- Vytvořte novou aplikaci na Facebook pro vývojáře.
- V části Přidat produkt vyberte Přihlášení na Facebook.
- V nabídce vlevo vyberte v části Přihlášení na Facebook možnost Nastavení.
- Přidejte doménu vaší wiki do seznamu Platné URI pro přesměrování OAuth a klikněte na tlačítko Uložit.
- V nabídce vlevo klikněte na Nastavení, poté na Základní a zapište si ID aplikace a Tajemství aplikace.
- V poli LocalSettings.php nastavte následující:
$wgPluggableAuth_Config['myfacebookauth'] = [ 'plugin' => 'WSOAuth', 'data' => [ 'type' => 'facebook', 'clientId' => '<The App ID>', 'clientSecret' => '<The App Secret>', 'redirectUri' => 'https://<wiki domain>/index.php/Special:PluggableAuthLogin' ] ];
myfacebookauth) se používá k interní identifikaci poskytovatele OAuth a NESMÍ se měnit.Chcete-li jako přihlašovací systém používat výhradně Facebook a automaticky se přihlašovat při návštěvě wiki, nastavte také v LocalSettings.php následující:
$wgPluggableAuth_EnableAutoLogin = true;
$wgPluggableAuth_EnableLocalLogin = false;
Aktualizace z verze před verzí 6.0
Schéma databáze muselo být po verzi 6.0 změněno, aby podporovalo více poskytovatelů ověřování. Pokud používáte instanci MediaWiki s verzí WSOAuth starší než 6.0, musíte migrovat stávající externí uživatele do nového schématu databáze, pokud chcete provést aktualizaci.
K migraci můžete použít skript údržby multiAuthMigrate.php, který se nachází ve složce maintenance rozšíření:
$ php extensions/WSOAuth/maintenance/multiAuthMigrate.php --provider=mywikiauth
Možnost provider ve výše uvedeném příkladu určuje, ke kterému poskytovateli se mají stávající uživatelé migrovat.
Systémové zprávy
Zde je několik užitečných systémových zpráv souvisejících s tímto rozšířením, které lze přizpůsobit:
| Název zprávy | Výchozí zpráva | Pozice | Tip |
|---|---|---|---|
wsoauth-user-already-exists-message |
Uživatelské jméno "{{{1}}}" je již obsazeno. | Zobrazený text je chybová zpráva na přihlašovací obrazovce, když se uživatel pokusí přihlásit pomocí OAuth, ale na dané wiki existuje uživatel se stejným uživatelským jménem. | Může se stát, že se uživatel nejprve zaregistruje na wiki prostřednictvím běžné uživatelské registrace a poté se pokusí přihlásit přes OAuth, přičemž se setká s touto chybovou zprávou. Pokud se to může stát i na vaší wiki, můžete tuto zprávu přizpůsobit tak, aby uživatele vyzvala k autorizaci vzdáleného přihlášení ze svých preferencí. Zde je snímek obrazovky:[upref 1]
|
- ↑ omezené preference
MediaWiki:Message title na vaší wiki.
Instalace
- Stáhněte soubor/y a vložte je do adresáře pojmenovaného
WSOAuthve 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/WSOAuth
- 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:
$wgGroupPermissions['*']['autocreateaccount'] = true; wfLoadExtension( 'PluggableAuth' ); wfLoadExtension( 'WSOAuth' );
- 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.
Dokončeno – Přejděte na stránku Special:Versionvaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.
Instalace Vagrant:
- Pokud používáte Vagrant, instalujte s těmito parametry
vagrant roles enable wsoauth --provision
Poznámky pod čarou
Galerie
-
Přihlašovací stránka s povoleným lokálním a vzdáleným ověřováním.
-
Uživatelské nastavení zobrazující tlačítko "Připojit vzdálený účet".
Diskuse: phab:T283908
| Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích: |
- PluggableAuth plugins/cs
- Stable extensions/cs
- User identity extensions/cs
- User rights extensions/cs
- LoadExtensionSchemaUpdates extensions/cs
- PluggableAuthPopulateGroups extensions/cs
- GetPreferences extensions/cs
- MIT licensed extensions/cs
- Extensions in Wikimedia version control/cs
- All extensions/cs
- Extensions requiring Composer with git/cs
- Extensions included in Canasta/cs
- Extensions included in Open CSP/cs
- Extensions included in ProWiki/cs
- Extensions by Wikibase Solutions/cs

