MediaWiki: получение ошибки «readapidenied» вместо токена входа

#api #authentication #mediawiki #mediawiki-api

#API #аутентификация #mediawiki #mediawiki-api

Вопрос:

Это довольно загадочная проблема. У меня несколько установок MediaWiki. В данном конкретном случае: версия 1.34.

Теперь я могу войти во все эти MediaWiki. Все работает нормально.

Теперь я могу получить доступ ко всем этим MediaWiki через API -КРОМЕ ОДНОГО. Странно то, что все они настроены практически одинаково. Я даже скопировал конфигурацию из одной вики, где все работало, во вторую вики.

Если быть более точным. Если я отправлю…

 /wikiA/api.php?action=queryamp;meta=tokensamp;format=jsonamp;type=login
 

… Я получаю очень разумный ответ, например:

 {"batchcomplete":"","query":{"tokens":{"logintoken":"37ec2e690eeb48a10ac66b2ccbca2b576000f9f4 \"}}}
 

Если я отправлю…

 /wikiB/api.php?action=queryamp;meta=tokensamp;format=jsonamp;type=login
 

… Я получаю следующий ответ, например:

 {"error":{"code":"readapidenied","info":"You need read permission to use this module.","*":"See http://xxx.xxx.xxx.xxx/wikiB/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at amp;<https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announceamp;> for notice of API deprecations and breaking changes."}}
 

Это можно воспроизвести с помощью любого веб-браузера.

В: В чем может быть причина того, что при этом wikiB я даже не могу получить доступ к обычному модулю входа? Это не может быть конфигурация. Это почти полностью идентично. Это не может быть исходный код. Я проверил разницу в файлах PHP и не обнаружил существенных различий. Что здесь может быть не так? Кажется, это должно быть что-то с базой данных. Но как мне подойти к этому? У кого-нибудь есть идея? Я был бы очень признателен, если бы вы могли помочь!

Ответ №1:

Я проанализировал базу данных: никакой разницы. Я провел дополнительные исследования с помощью Google: И нашел отчет об ошибке.

Это ошибка в MediaWiki. Они предоставили официальный выпуск программного обеспечения с ТАКОЙ ошибкой.

Оказывается, есть версии 1.34.0 и 1.34.1. У моей WikiA 1.34.1, а у WikiB 1.34.0. После копирования этого одного файла includes/api/ApiQuery.php из WikiA в WikiB все работало нормально.

https://gerrit.wikimedia.org/r/c/mediawiki/core / /580097/