Jump to content

Rozšíření:WSOAuth

From mediawiki.org
This page is a translated version of the page Extension:WSOAuth and the translation is 100% complete.
Nesmí se zaměňovat s: Extension:OAuth.
Toto rozšíření vyžaduje, aby bylo nejprve nainstalováno rozšíření PluggableAuth .
Příručka k rozšířením MediaWiki
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
  • $wgOAuthCustomAuthProviders
  • $wgOAuthAutoPopulateGroups
  • $wgOAuthMigrateUsersByUsername
  • $wgOAuthDisallowRemoteOnlyAccounts
  • $wgOAuthUseRealNameAsUsername
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 )
  • Facebook

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

Tabulka kompatibility
WSOAuth PluggableAuth MediaWiki
9.0+ 7.0+
Verze MediaWiki:
1.35
6.0-8.x 6.0-6.x
Verze MediaWiki:
1.35
1.0-5.x 5.7
Verze MediaWiki:
1.31

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:
type Poskytovatel OAuth, který bude rozšíření používat (např. mediawiki nebo facebook) Požadované
uri Ověřovací identifikátor URI[2] aplikace OAuth. Volitelné pro některé poskytovatele
clientId Klíč spotřebitele přijatý z aplikace OAuth. Požadované
clientSecret Tajný kód spotřebitele přijatý z aplikace OAuth. Požadované
redirectUri Výchozí URI[2] zpětného volání, na které se aplikace OAuth vrátí po úspěšném požadavku na ověření. Povinné pro některé poskytovatele
extensionData Pole obsahující další data vyžadovaná poskytovatelem. Povinné pro některé poskytovatele
migrateUsersByUsername Zda povolit uchvácení stávajících účtů. Tím se přepíše globálně nastavená hodnota $wgOAuthMigrateUsersByUsername. Volitelné
disallowRemoteOnlyAccounts Zda povolit účtům, aby neměly místní protějšek. Tím se přepíše globálně nastavená hodnota $wgOAuthDisallowRemoteOnlyAccounts. Volitelné
useRealNameAsUsername Zda použít skutečné jméno jako uživatelské jméno. Tím se přepíše globálně nastavená hodnota $wgOAuthUseRealNameAsUsername. Volitelné
autoPopulateGroups Pole obsahující seznam názvů skupin MediaWiki, které musí být uživateli automaticky přiřazeny po jeho ověření. Tím se přepíše globálně nastavená hodnota $wgOAuthAutoPopulateGroups. Od verze WSOAuth 9.0 je nutné také nakonfigurovat způsob synchronizace skupin. Volitelné

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'
];
Klíč konfigurace (ve výše uvedeném příkladu 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

Pokud chcete přidat nového poskytovatele OAuth, podívejte se na WSOAuth pro vývojáře.

V současné době jsou podporováni následující poskytovatelé OAuth:

  • MediaWiki OAuth (instance MediaWiki běžící na OAuth )
  • Facebook

MediaWiki OAuth

Chcete-li povolit ověřování a autorizaci prostřednictvím MediaWiki OAuth, postupujte podle níže uvedených kroků.

  1. Zaregistrujte novou spotřebitelskou aplikaci OAuth 1.0a pro wiki, ke které delegujete přístup.
  2. 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:

  1. Návštěva: https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose
  2. Klikněte na tlačítko "Vyžádat token pro nového uživatele OAuth 1.0a".
  3. 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."
  4. Click the checkbox to agree to the conditions of use.
  5. Click the "Propose Consumer" button to submit your proposal.
  6. Write down the "Client application key" and "Client application secret" that are given by meta.wikimedia.org upon submission.
  7. Use the "Application name" you submitted to meta.wikipedia.org as the WSO 'mywikiauth' in the example configuration on the left.
  8. Use the "Client application key" as the WSO "clientId"
  9. 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.

Facebook

Chcete-li povolit ověřování a autorizaci přes Facebook, postupujte podle níže uvedených kroků.

  1. Vytvořte novou aplikaci na Facebook pro vývojáře.
  2. V části Přidat produkt vyberte Přihlášení na Facebook.
  3. V nabídce vlevo vyberte v části Přihlášení na Facebook možnost Nastavení.
  4. Přidejte doménu vaší wiki do seznamu Platné URI pro přesměrování OAuth a klikněte na tlačítko Uložit.
  5. V nabídce vlevo klikněte na Nastavení, poté na Základní a zapište si ID aplikace a Tajemství aplikace.
  6. 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'
        ]
    ];
    
Klíč konfigurace (ve výše uvedeném příkladu 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]
Stránka Special:Preferences s nainstalovaným WSOAuth zobrazující tlačítko "Připojit vzdálený účet"
  1. omezené preference
Chcete-li změnit systémovou zprávu, upravte stránku MediaWiki:Message title na vaší wiki.

Instalace

Toto rozšíření vyžaduje rozšíření PluggableAuth.
  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného WSOAuth 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/WSOAuth
    
  • 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:
    $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.
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší 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

  1. Otevřená autorizace (OAuth)
  2. 2.0 2.1 2.2 Jednotný identifikátor zdroje (URI (Uniform Resource Identifier))

Galerie