Extension:OAuth
Stav rozšíření: stabilní |
|
|---|---|
| Implementace | Identita uživatele, Uživatelská práva, API |
| Popis | Umožněte uživatelům bezpečně autorizovat jinou aplikaci ("spotřebitele") k používání API MediaWiki jejich jménem. |
| Autoři | Aaron Schulz, Chris Steipp, Brad Jorsch, Robert Vogel, Dejan Savuljesku |
| Nejnovější verze | 1.1.0 (continuous updates) |
| 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 |
| Tabulky | oauth_accepted_consumer oauth_registered_consumer |
| Licence | GNU General Public License 2.0 nebo novější |
| Stáhnout | |
| Nápověda | Nápověda:OAuth |
|
|
|
|
|
|
|
| Přeložte rozšíření OAuth, používá-li lokalizaci z translatewiki.net | |
| Vagrant role | oauth |
| Problémy | Otevřené úkoly · Nahlásit chybu |
Rozšíření OAuth implementuje server OAuth v MediaWiki, který podporuje jak verze protokolu OAuth 1.0a, tak OAuth 2.0. Umožňuje vývojářům třetích stran bezpečně vyvíjet aplikace ("spotřebitele"), kterým mohou uživatelé udělit omezenou sadu oprávnění ("udělení"), aby aplikace mohla používat MediaWiki API jménem uživatele.
Požadavky
- OAuth se spoléhá na mezipaměť objektů pro dočasné tokeny a relace. Toto by mělo fungovat, pokud je nastavení konfigurace mezipaměti v pořádku. (Starší verze explicitně vyžadovaly Memcached.)
- V současné době jsou podporovány pouze backendy databází MySQL a SQLite.
- Pokud je instalace MediaWiki soukromá (tj. uživatelé se musí pro přístup ke čtení přihlásit), bude nutné přidat Special:OAuth na bílý seznam.
Instalace
- Stáhněte soubor/y a vložte je do adresáře pojmenovaného
OAuthve 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/OAuth
- 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( 'OAuth' );
- Spusťte aktualizační skript, který automaticky provede všechny nezbytné databázové změny, jaké rozšíření vyžaduje.
- Nakonfigurujte obecné parametry podle potřeby.
- OAuth2 nebude povolen, pokud ponecháte všechna nastavení na výchozích hodnotách.
- Nakonfigurujte uživatelská práva jejich zařazením do příslušných skupin v
$wgGroupPermissions.
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 oauth --provision
Chcete-li přiřadit oprávnění nějaké skupině, například sysopům, přidejte do LocalSettings.php následující řádek:
$wgGroupPermissions['sysop']['mwoauthproposeconsumer'] = true;
Database Virtual Domains Mapping
Since MediaWiki 1.45, it's recommended to configure database virtual domains mapping for OAuth, see this patch. $wgMWOAuthCentralWiki and virtual domains are separate settings.
To set up virtual domains mapping with OAuth, use:
$wgMWOAuthCentralWiki = '<central-wiki>';
$wgVirtualDomainsMapping['virtual-oauth'] = [ 'db' => '<oauth-db>' ];
Konfigurace
Parametry
| Název proměnné | Výchozí hodnota | Popis |
|---|---|---|
$wgMWOAuthCentralWiki
|
false
|
ID wiki pro správu OAuth. Na wiki farmách má smysl nastavit toto na wiki, která funguje jako portál, je určena pro správu nebo se pouze stará o přihlášení/autentizaci. Lze jej však nastavit na jakoukoli wiki ve farmě. Pro weby s jednou wiki nebo farmy, kde každá wiki spravuje uživatele samostatně, by měla být hodnota ponechána na false.
|
$wgMWOAuthSharedUserIDs
|
false
|
(zastaralé) Použijte místo toho $wgMWOAuthSharedUserSource
Zda jsou sdílená globální ID uživatelů uložena v tabulkách OAuth.
Na wiki farmách s centrálním ověřovacím systémem (s celočíselnými uživatelskými ID), které sdílejí jednu wiki pro správu OAuth, musí být toto nastaveno na hodnotu true.
Pokud mají wikiny centrální ověřovací systém, ale mají vlastní správu OAuth, pak se může jednat o |
$wgMWOAuthSharedUserSource
|
null
|
Poskytovatel Central ID při sdílení přihlašovacích údajů OAuth přes wiki farmu
Zdroj sdílených uživatelských ID, pokud je povolen. Pokud je k dispozici CentralIdLookup, jedná se o $providerId pro CentralIdLookup::factory(). Obecně by null bylo to, co chcete, abyste použili výchozího poskytovatele. Pokud daná třída není k dispozici nebo pojmenovaný poskytovatel není nalezen, je to předáno háčkům OAuthGetUserNamesFromCentralIds, OAuthGetLocalUserFromCentralId, OAuthGetCentralIdFromLocalUser, OAuthGetCentralIdFromUserName. Toto nemá žádný vliv, pokud je $wgMWOAuthSharedUserIDs nastaveno na hodnotu false. |
$wgMWOAuthRequestExpirationAge
|
2 592 000 (30 dnů)
|
Sekundy, po kterých je nečinný požadavek na nového spotřebitele označen jako "vypršené". |
$wgMWOAuthSecureTokenTransfer
|
true
|
Vyžadovat SSL/TLS pro vrácení tajných kódů spotřebitele a uživatele. Toto je vyžadováno standardem RFC 5849, ale pokud chce wiki používat OAuth, ale nepodporuje SSL, tato možnost tuto konfiguraci umožňuje. Toto by mělo být nastaveno na hodnotu true pro většinu produkčních nastavení. |
$wgOAuthSecretKey
|
$wgSecretKey
|
Tajný konfigurační řetězec (náhodný 32bitový řetězec vygenerovaný pomocí "base64_encode(random_bytes(32))") používaný k uložení tajného prvku uloženého v databázi pomocí HMAC za účelem vytvoření sdílených tajných prvků pro spotřebitele. To poskytuje určitou ochranu před útočníkem, který by četl hodnoty z tabulky spotřebitelů (útočník by také potřeboval $wgOAuthSecretKey k vygenerování platných tajných klíčů) a určitou ochranu před potenciálními slabinami v generování tajných klíčů. Pokud je tento řetězec ohrožen, web by měl vygenerovat nový řetězec $wgOAuthSecretKey, který zneplatní autorizace spotřebitelů, které používají podpisy HMAC/sdílené tajné klíče místo veřejných/soukromých klíčů. Spotřebitelé mohou regenerovat svůj nový sdílený tajný klíč pomocí možnosti "Obnovit tajný klíč na novou hodnotu" v části Special:MWOAuthConsumerRegistration/update. Pokud je null, hodnota je nastavena na $wgSecretKey. |
$wgOAuthGroupsToNotify
|
[]
|
Seznam skupin uživatelů, které by měly být informovány o nových návrzích pro spotřebitele. Toto nastavení bude mít účinek pouze po instalaci balíčku Echo. |
$wgMWOauthDisabledApiModules
|
[]
|
Seznam tříd modulů API, které se mají zakázat, když se pro požadavek použije OAuth |
$wgMWOAuthReadOnly
|
false
|
Zabrání zápisu do databáze. Pokud je toto nastaveno, nelze přidávat ani aktualizovat uživatele a nová autorizace jsou zakázána. Autorizační hlavičky pro stávající autorizace budou i nadále fungovat. Užitečné pro migraci databázových tabulek |
$wgMWOAuthSessionCacheType
|
$wgSessionCacheType
|
Mechanismus ukládání dat relace. Pokud je null, výchozí hodnota je $wgSessionCacheType. |
$wgOAuthAutoApprove
|
[]
|
Allows automatic immediate approval of low-risk apps. In the form of [ 'grants' => [ 'grant1', 'grant2', ... ] ]
|
$wgOAuth2EnabledGrantTypes
|
[
"authorization_code",
"refresh_token",
"client_credentials"
]
|
Seznam povolení OAuth2, která mohou klientské aplikace používat. Skutečné granty, které bude klient moci použít v rámci své žádosti, mohou být libovolnou podmnožinou grantů uvedených zde. Granty, kromě těch, které jsou zde uvedeny, jsou považovány za starší granty a toto rozšíření je nepodporuje. |
$wgOAuth2PrivateKey
|
""
|
Soukromý klíč nebo cesta k soukromému klíči použitému k podepsání přenášeného OAuth2 JWT. See the OAuth 2.0 Server documentation for how to generate the keys. |
$wgOAuth2PublicKey
|
""
|
Veřejný klíč nebo cesta k veřejnému klíči používanému k ověřování požadavků na prostředky OAuth2. |
$wgOAuth2RequireCodeChallengeForPublicClients
|
true
|
Určuje, zda jsou klienti povinni odesílat výzvy k kódu s požadavky OAuth2. Toto platí pouze pro nedůvěrné klienty. |
$wgOAuth2GrantExpirationInterval
|
"PT1H" (1 hodina)
|
Řídí dobu platnosti přístupových tokenů (uložených v mezipaměti nakonfigurované v MWOAuthSessionCacheType). Nevztahuje se na klienty pouze s oprávněním vlastníka, jejichž přístupové tokeny jsou vždy neomezené. Akceptuje trvání dle ISO 8601 nebo může být nastaveno na "infinity" nebo false pro tokeny s nekončící platností. |
$wgOAuth2RefreshTokenTTL
|
"P1M" (1 měsíc)
|
Řídí dobu platnosti obnovovacích tokenů (uložených v mezipaměti nakonfigurované v MWOAuthSessionCacheType). Akceptuje trvání dle ISO 8601 nebo může být nastaveno na "infinity" nebo false pro tokeny s nekončící platností. |
Uživatelská práva
| Správně | Popis |
|---|---|
mwoauthproposeconsumer |
Navrhování nových konzumentů OAuth |
mwoauthupdateownconsumer |
Upravování konzumentů OAuth, které spravujete |
mwoauthmanageconsumer |
Správa konzumentů OAuth |
mwoauthsuppress |
Utajování konzumentů OAuth |
mwoauthviewsuppressed |
Zobrazování utajených konzumentů OAuth |
mwoauthviewprivate |
Zobrazování soukromých dat OAuth |
mwoauthmanagemygrants |
Správa přístupových oprávnění OAuth |
Koncové body
Koncové body OAuth 2.0 REST
Pro interakci OAuth 2.0 jsou k dispozici následující koncové body REST.
| Cesta | Popis | Povolené parametry | Povolená metoda | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /oauth2/authorize | Používá se pro načtení autorizačního kódu při použití atributu authorizations_code grant. |
|
GET | ||||||||||||||||||||||||||||||||||||||||||||||||||
| /oauth2/access_token | Používá se pro vyžádání přístupových tokenů |
|
POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
| /oauth2/resource/{{type}} | Používá se pro načtení chráněných zdrojů pomocí dříve vydaného přístupového tokenu.
V současné době lze pomocí tohoto koncového bodu načíst dva typy zdrojů nahrazením zástupného symbolu
|
Kromě parametru {{type}}, který je součástí cesty, nejsou povoleny žádné parametry.
|
GET/POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
| /oauth2/client | Zobrazí klienty OAuth 1.0a nebo 2.0 pro přihlášeného uživatele. Autentizace lze dosáhnout přes CentralAuth nebo zahrnutím přístupového tokenu do autorizační hlavičky.
|
|
GET | ||||||||||||||||||||||||||||||||||||||||||||||||||
| /oauth2/client/{client_key}/reset_secret | Obnoví tajný kód klienta. U klientů pouze s oprávněním vlastníka tento koncový bod také resetuje přístupový token.
|
|
POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
| /oauth2/client | Vytvoří klienta OAuth 2.0.
|
|
POST |
Související odkazy
- Extension:OATHAuth – podobně pojmenované rozšíření, které implementuje druhý faktor ověřování pomocí jednorázových hesel založených na OATH.
- Extension:WSOAuth – rozšíření MediaWiki, které umožňuje vaší wiki delegovat ověřování na libovolného poskytovatele OAuth používajícího PluggableAuth, včetně wiki, na které běží Extension:OAuth.
- oauthclient-php – klientská knihovna pro uživatele OAuth.
| 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: Toto není autoritativní seznam. Některé wiki farmy/hostitelé a/nebo balíčky mohou toto rozšíření obsahovat, i když zde nejsou uvedeny. Pro potvrzení se vždy obraťte na své wiki farmy/hostitele nebo balíček. |
- Stable extensions/cs
- User identity extensions/cs
- User rights extensions/cs
- API extensions/cs
- GPL licensed extensions/cs
- Extensions in Wikimedia version control/cs
- Extensions which add rights/cs
- AbuseFilter-builder extensions/cs
- AbuseFilter-computeVariable extensions/cs
- AbuseFilter-generateUserVars extensions/cs
- ApiRsdServiceApis extensions/cs
- BeforeCreateEchoEvent extensions/cs
- ChangeTagCanCreate extensions/cs
- ChangeTagsListActive extensions/cs
- GetPreferences extensions/cs
- ListDefinedTags extensions/cs
- LoadExtensionSchemaUpdates extensions/cs
- LoginFormValidErrorMessages extensions/cs
- MergeAccountFromTo extensions/cs
- MessagesPreLoad extensions/cs
- SetupAfterCache extensions/cs
- SpecialPageAfterExecute extensions/cs
- SpecialPageBeforeFormDisplay extensions/cs
- SpecialPage initList extensions/cs
- TestCanonicalRedirect extensions/cs
- All extensions/cs
- Extensions requiring Composer with git/cs
- Extensions used on Wikimedia/cs
- Extensions included in Canasta/cs
- Extensions included in Miraheze/cs
- Extensions included in ProWiki/cs
- Extensions included in wiki.gg/cs
- Extensions included in WikiForge/cs
