Extension talk:LDAPProvider

About this board

User "test" not authorized

5
Ksmith197 (talkcontribs)

Hi, I seem to be running into some issues with getting LDAP working with mediawiki. In my setup I'm utilizing the dockerfile from canasta. Here's the link https://github.com/CanastaWiki/Canasta/blob/master/Dockerfile, I added the "php7.4-ldap" module into my dockerfile as well as installed libldap2-dev, and ldap-utils within the container. I performed a "ldapsearch" with a bind and was able to run queries against my AD server successfully.

Performing CheckLogin.php returns "OK"

Performing CheckUserInfo.php returns information on user specified

Performing CheckUserGroups.php for any specified user returns information aswell


If needed I can show the details of the logs that I've collected.


Here is my LocalSettings.php :


<?php
    # Degbugging!
    error_reporting( E_ALL );
    ini_set( 'display_errors', 1 );
    $wgShowExceptionDetails = true;
    $wgDebugToolbar = true;
    $wgShowErrors = true;
    $wgShowError = true;
    $wgShowDebug = true;
    $wgDebugLogFile = '/tmp/debug.log';
    $wgDebugLogGroups = array(
       'PluggableAuth' => '/tmp/pa.log',
       'LDAP' => '/tmp/LDAP.log',
       'LDAPProvider' => '/tmp/LDAPProvider.log',
       'LDAPAuthentication2' => '/tmp/LDAPAuthentication2.log',
       'LDAPAuthorization' => '/tmp/authz.log',
       'LDAPUserInfo' => '/tmp/LDAP_user.log',
       'LDAPGroups' => '/tmp/LDAP_Groups.log',
       'MediaWiki\\Extension\\LDAPProvider\\Client' => '/tmp/ldapprovider_client.log'
    );
    # This file was automatically generated by the MediaWiki 1.39.6
    # installer. If you make manual changes, please keep track in case you
    # need to recreate them later.
    
# LDAPExtensions
    // Safe IP or not (for bypassing external login via AD)
    $safeIPs = array('127.0.0.1','localhost');
    $ipsVars = array('HTTP_X_FORWARDED_FOR', 'HTTP_X_REAL_IP', 'REMOTE_ADDR');
    foreach ($ipsVars as $ipsVar) {
       if (isset($_SERVER[$ipsVar]) && mb_strlen($_SERVER[$ipsVar]) > 3 ) { $wikiRequestIP = $_SERVER[$ipsVar];
       break; }
    }
    $wikiRequestSafe = ( isset($wikiRequestIP) && ( in_array($wikiRequestIP,$safeIPs) ));
    // Private Wiki. External LDAP Login. Default NS requires login.
    $wgEmailConfirmToEdit = false;
    $wgGroupPermissions['*']['edit'] = false;
    $wgGroupPermissions['*']['read'] = false;
    $wgGroupPermissions['*']['createaccount'] = false;
    $wgGroupPermissions['sysop']['createaccount'] = false;
    $wgGroupPermissions['*']['autocreateaccount'] = true;
    $wgBlockDisablesLogin = true;
    $ldapJsonFile = "/var/www/ldapprovider.json";
    $ldapConfig = false;
    if (is_file($ldapJsonFile) && is_dir("/var/www/mediawiki/w/extensions/LDAPProvider")) {
       $testJson = @json_decode(file_get_contents($ldapJsonFile), true);
       if (is_array($testJson)) {
           $ldapConfig = true;
       
       } else {
           error_log("Found invalid JSON in file: /var/www/ldapprovider.json");
       }
    }
    if ($ldapConfig) {
       wfLoadExtension('LDAPProvider');
       wfLoadExtension('LDAPAuthentication2');
       #wfLoadExtension('LDAPAuthorization');
       wfLoadExtension('LDAPUserInfo');
       wfLoadExtension('LDAPGroups');
       wfLoadExtension('PluggableAuth');
       $LDAPProviderDomainConfigs = $ldapJsonFile;
       $wgLDAPProvider["CacheType"] = "CACHE_NONE";
       $wgLDAPProvider["CacheTime"] = 3600; 
       // Force LDAPGroups to sync by choosing a domain (e.g. first JSON object in ldapprovider.json)
       $LDAPProviderDefaultDomain = array_key_first(json_decode(file_get_contents($LDAPProviderDomainConfigs), true));
       $wgPluggableAuth_EnableAutoLogin = false;
       $wgPluggableAuth_EnableLocalLogin = false; # required to show the username and password field on login page
       $wgPluggableAuth_EnableFastLogout = true;
       $wgPluggableAuth_Config = array(
           array(
               "plugin" => "LDAPAuthentication2",
               "buttonLabelMessage" => "Domain Login",
               "data" => ["domain" => $LDAPProviderDefaultDomain]
           ),
           #array("plugin" => "LDAPAuthorization"),
       );
      if ($wikiRequestSafe) { $LDAPAuthentication2AllowLocalLogin = true; }
    }
    # The configuration below is the method used to communicate to the LDAP server through a static .json file 
    $LDAPProviderDomainConfigs = "/var/www/ldapprovider.json";
    
# LDAPAuthentication2
    // Whether or not to display a "local" psuedo-domain in the domain selector on "Special:Login", thus allowing to authenticate against the local user database. (defaults to false if not specified)
    $LDAPAuthentication2AllowLocalLogin = true;
    // Use this function for normalizing username for LDAP, for example 'strtolower'. (defaults to "")
    $LDAPAuthentication2UsernameNormalizer = "";
    # Auth_remoteuser
    // Set the name for mapping into the local wiki user database. If the value is `null`, the extension defaults to using the enviornment variables `REMOTE_USER` and `REDIRECT_REMOTE_USER`
    $wgAuthRemoteuserUserName = null; //default
    #$wgAuthRemoteuserUserName = [
    #    $_SERVER[ 'REMOTE_USER' ],
    #    $_SERVER[ 'REDIRECT_REMOTE_USER' ]
    #];
    $wgAuthRemoteuserUserNameReplaceFilter = null; //default    
    # PluggableAuth Extension Configuration
    // Should user login occur automatically when a user visits the wiki?
    $wgPluggableAuth_EnableAutoLogin = true;
    // Should user also be presented with username/password fields on the login page to allow local password-based login to the wiki
    $wgPluggableAuth_EnableLocalLogin = true;
========================================================================

Here is my ldapprovider.json within the docker container:

{
           "test.local": {
                   "connection": {
                           "server": "XXXXX.test.local",
               "port": "389",
                           "user": "CN=XXXXX,CN=Users,DC=test,DC=local",
                           "pass": "XXXXX",
               "enctype": "clear",
                           "options": {
                                   "LDAP_OPT_DEREF": 1
                           },
                           "basedn": "dc=test,dc=local",
                           "userbasedn": "dc=test,dc=local",
                           "groupbasedn": "dc=test,dc=local",
                           "searchattribute": "samaccountname",
                           "usernameattribute": "samaccountname",
                           "realnameattribute": "cn",
                           "emailattribute": "mail",
                           "grouprequest": "MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\GroupMember::factory",
                           "presearchusernamemodifiers":["spacestounderscores", "lowercase"]
                   },
                   "userinfo": [],
                   "authorization": [],
                   "groupsync": {
                           "mapping": {
                                   "sysop": "CN=Domain Admins,CN=Users,DC=test,DC=local"
                           }
                   }
           }
    }
Osnard (talkcontribs)

Can you please share the debug logs? Especially the lines starting with ldap_

Ksmith197 (talkcontribs)

I cleared out all logs I previously had inside of /tmp/ directory, then tried to log in to the domain with the "test" user to generate logs.

The following was generated:

LDAPAuthentication2.log

LDAPProvider.log

pa.log

debug.log - (I've omitted the information within this log from this reply, as it's quite lengthy. If needed I will include)


Here is the information within each, canasta being the name of the docker container:

============================================================

LDAPProvider.log

2024-04-15 13:38:06 canasta mediawiki: Setting LDAP_OPT_PROTOCOL_VERSION to 3

2024-04-15 13:38:06 canasta mediawiki: Setting LDAP_OPT_REFERRALS to 0

2024-04-15 13:38:06 canasta mediawiki: Setting LDAP_OPT_DEREF to 1

2024-04-15 13:38:06 canasta mediawiki: MediaWiki\Extension\LDAPProvider\Client::getUserDN: search with array (

  'base' => 'dc=test,dc=local',

  'filter' => '(samaccountname=test)',

  'attributes' =>

  array (

   0 => '*',

   1 => 'memberof',

  ),

)

2024-04-15 13:38:06 canasta mediawiki: Found user DN: 'CN=test,CN=Users,DC=test,DC=local'

2024-04-15 13:38:06 canasta mediawiki: MediaWiki\Extension\LDAPProvider\Client::getSearchString: User DN is: 'CN=test,CN=Users,DC=test,DC=local'

2024-04-15 13:38:06 canasta mediawiki: Ran LDAP search for '(samaccountname=test)' in 0.00037193298339844 seconds.

============================================================

LDAPAuthentication2.log

2024-04-15 13:38:06 canasta mediawiki: Try to authenticate user: test

2024-04-15 13:38:06 canasta mediawiki: Not local login. Checking LDAP...

2024-04-15 13:38:06 canasta mediawiki: LDAP domain: test.local

2024-04-15 13:38:06 canasta mediawiki: LDAP login succeeded.

============================================================

pa.log (Pluggable Auth)

2024-04-15 13:38:06 canasta mediawiki: In execute()

2024-04-15 13:38:06 canasta mediawiki: Getting PluggableAuth instance

2024-04-15 13:38:06 canasta mediawiki: Plugin name: LDAPAuthentication2

2024-04-15 13:38:06 canasta mediawiki: Authenticated new user: test

2024-04-15 13:38:06 canasta mediawiki: Authorization failure.

Ksmith197 (talkcontribs)

I'm adding debug logs from my most recent attempt. I'm not sure how to parse through this for relevant information.

Debug data:

  • [objectcache] MainWANObjectCache using store EmptyBagOStuff
  • Start request GET /w/index.php?title=Special:UserLogin&returnto=Special%3APluggableAuthLogin IP: 172.18.0.1 HTTP HEADERS: UPGRADE-INSECURE-REQUESTS: 1 COOKIE: mediawikiUserName=Carlg; mw_installer_session=nrofn5id2pc8cd2o2ue9e7b7a0; VEE=wikitext; mediawiki_session=24b0tmls3f9dnjuj6vgke6ahnd90n53g; UseDC=master; UseCDNCache=false CONNECTION: keep-alive REFERER: http://raider/w/index.php?title=Special:UserLogin&returnto=Special%3APluggableAuthLogin ACCEPT-ENCODING: gzip, deflate ACCEPT-LANGUAGE: en-US,en;q=0.5 ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 USER-AGENT: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0 HOST: raider (end headers)
  • [session] SessionManager using store SqlBagOStuff
  • [localisation] LocalisationCache using store LCStoreDB
  • [session] Session "24b0tmls3f9dnjuj6vgke6ahnd90n53g" requested without UserID cookie
  • [DBQuery] Wikimedia\Rdbms\DatabaseMysqlBase::open [0s] database: SET group_concat_max_len = 262144, `sql_mode` = ''
  • [DBReplication] Cannot use ChronologyProtector with EmptyBagOStuff
  • [DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: request info { "IPAddress": "172.18.0.1", "UserAgent": "Mozilla\/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko\/20100101 Firefox\/123.0", "ChronologyProtection": false, "ChronologyPositionIndex": 0, "ChronologyClientId": false }
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::lazyLoadReplicationPositions: executed chronology callback.
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: opened new connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::fetchBlobs [0s] database: SELECT keyname,value,exptime FROM `objectcache` WHERE keyname = 'mediawiki:MWSession:24b0tmls3f9dnjuj6vgke6ahnd90n53g' AND (exptime >= '20240417211218')
  • [SQLBagOStuff] SqlBagOStuff debug: SqlBagOStuff::fetchBlobs: retrieved mediawiki:MWSession:24b0tmls3f9dnjuj6vgke6ahnd90n53g; expiry time is 20240417221218
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [SQLBagOStuff] MainObjectStash using store ReplicatedBagOStuff
  • [DBQuery] Wikimedia\Rdbms\DatabaseMysqlBase::open [0s] database: SET group_concat_max_len = 262144, `sql_mode` = ''
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: opened new connection for local/0
  • [DBQuery] Wikimedia\Rdbms\Database::beginIfImplied (Wikimedia\Rdbms\Database::select) [0s] database: BEGIN
  • [DBQuery] Wikimedia\Rdbms\Database::select [0s] database: SELECT pp_value FROM `page_props` WHERE pp_page = 0 AND pp_propname = 'MintyDocsPageType'
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'deps' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0.001s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'list' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'preload' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'preload' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'specialPageAliases' LIMIT 1
  • User::getBlockedStatus: checking blocked status for 172.18.0.1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Block\DatabaseBlock::newLoad [0s] database: SELECT ipb_id,ipb_address,ipb_timestamp,ipb_auto,ipb_anon_only,ipb_create_account,ipb_enable_autoblock,ipb_expiry,ipb_deleted,ipb_block_email,ipb_allow_usertalk,ipb_parent_block_id,ipb_sitewide,ipb_by_actor,ipblocks_actor.actor_user AS `ipb_by`,ipblocks_actor.actor_name AS `ipb_by_text`,comment_ipb_reason.comment_text AS `ipb_reason_text`,comment_ipb_reason.comment_data AS `ipb_reason_data`,comment_ipb_reason.comment_id AS `ipb_reason_cid` FROM `ipblocks` JOIN `actor` `ipblocks_actor` ON ((actor_id=ipb_by_actor)) JOIN `comment` `comment_ipb_reason` ON ((comment_ipb_reason.comment_id = ipb_reason_id)) WHERE ipb_address = '172.18.0.1' OR ((ipb_range_start LIKE 'AC12%' ESCAPE '`' ) AND (ipb_range_start <= 'AC120001') AND (ipb_range_end >= 'AC120001'))
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] Wikimedia\Rdbms\Database::select [0s] database: SELECT pp_value FROM `page_props` WHERE pp_page = 0 AND pp_propname = 'MintyDocsPageType'
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'namespaceGenderAliases' LIMIT 1
  • ContextSource::getContext (MediaWiki\Skins\Vector\SkinVector22): called and $context is null. Using RequestContext::getMain()
  • [MessageCache] MessageCache using store SqlBagOStuff
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::fetchBlobs [0s] database: SELECT keyname,value,exptime FROM `objectcache` WHERE keyname = 'mediawiki:messages:en' AND (exptime >= '20240417211218')
  • [SQLBagOStuff] SqlBagOStuff debug: SqlBagOStuff::fetchBlobs: retrieved mediawiki:messages:en; expiry time is 99991231235959
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::fetchBlobs [0s] database: SELECT keyname,value,exptime FROM `objectcache` WHERE keyname = 'mediawiki:messages:en:status' AND (exptime >= '20240417211218')
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::doLock [0s] database: SELECT IF(GET_LOCK('mediawiki:messages:en',0),UNIX_TIMESTAMP(SYSDATE(6)),NULL) AS acquired
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MessageCache::loadFromDB(en)-big [0s] database: SELECT page_title,page_latest FROM `page` WHERE page_is_redirect = 0 AND page_namespace = 8 AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len > 10000)
  • [DBQuery] MessageCache::loadFromDB(en)-small [0s] database: SELECT /*! STRAIGHT_JOIN */ rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid`,actor_rev_user.actor_user AS `rev_user`,actor_rev_user.actor_name AS `rev_user_text`,rev_actor,page_namespace,page_title,page_id,page_latest,page_is_redirect,page_len FROM `page` JOIN `revision` ON ((page_id = rev_page)) JOIN `revision_comment_temp` `temp_rev_comment` ON ((temp_rev_comment.revcomment_rev = rev_id)) JOIN `comment` `comment_rev_comment` ON ((comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id)) JOIN `actor` `actor_rev_user` ON ((actor_rev_user.actor_id = rev_actor)) WHERE page_is_redirect = 0 AND page_namespace = 8 AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len <= 10000) AND (page_latest = rev_id)
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::modifyTableSpecificBlobsForSet [0s] database: REPLACE INTO `objectcache` (keyname,value,exptime) VALUES ('mediawiki:messages:en','���\n�@���e�`w]�w���M��BR^�[����=���0��������u~>(oм�@ӰNta� ��<j_�ǟ�䅫s�5s�|w�4~^��E���\Z�$�QI��?','99991231235959')
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::doUnlock [0s] database: SELECT RELEASE_LOCK('mediawiki:messages:en') AS released
  • [MessageCache] MessageCache::loadUnguarded: Loading en... local cache is empty, global cache is expired/volatile, loading from DB
  • [session] SessionBackend "24b0tmls3f9dnjuj6vgke6ahnd90n53g" data dirty due to dirty(): AuthManagerSpecialPage->handleReturnBeforeExecute/MediaWiki\Auth\AuthManager->removeAuthenticationSessionData/MediaWiki\Session\Session->setSecret/MediaWiki\Session\Session->set/MediaWiki\Session\SessionBackend->dirty
  • [session] SessionBackend "24b0tmls3f9dnjuj6vgke6ahnd90n53g" save: dataDirty=1 metaDirty=0 forcePersist=0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::modifyTableSpecificBlobsForSet [0.003s] database: REPLACE INTO `objectcache` (keyname,value,exptime) VALUES ('mediawiki:MWSession:24b0tmls3f9dnjuj6vgke6ahnd90n53g','mx����n�4`���b)���@���T�|��s�������c`����\"����7�����߿�x��#�M��/�\\ݱ��\'O�|[����_ּ��n���7�������% \nEp\nN�,�P�E����X�������n,��o��\"�4ɠ8!��z�h�cP�B0<��<���__+^?V8�������T�����)B�02�a�G �\"��E�8�Ç�Oq3i����|�����O��� ��a�~�2��,���}���S�|ۗ����������W�6���%��|�MB� �C�_�1U�������LyZ��oo͗?z�叢?�?�?��O�JS2�ȯ��Q���g$�����h����#����!̿���K�6����P��5��J������#��:����}=H?v�q����H���󡠟+�����\'4�����:\"0�O��us��`=&uE�Bo��,8듎ɳ�|*��?�Ó��7�wU�Y����������\Z��m-�[�����0�/p�7��ȫW�{�XFg��~T�X��g�OE��xҞ�Π|��1�ܒ��4|��|a�k�\'�k{;{꺨���\'�~�b`K�!��1j��˂��\\��;=[�ej&�m�F��V��i��|l+��Mc����c1���t��9�C��n����\"��D8<����R��nN75oF�P�v�\r�g|l�3ԏ��# ����^Xz�e!�⥠��aRi����L��&����F��\r›3LTL|c���$eʋ��#��[�^��t�J��p��6���XL�����(��R\n���]M@���m����+c&�k���q��Kʂ}�ҕp��Y�-�b�m�o����ON}��\'��x��o\n�������-��~8�\r�K�\0���|�\'i�J�m�TQk��.pJj�}|�����?X�5Vt�^�d���x��\Z�H-��[F����|@�����!���d�:��6�pF�KzTL@��)�L����n�qDԧ����: ����x�?�n��M˦�T�ˠ��#L���h�[�Ͻ5���)y9�p|�]r�(��o���<�����i( ��祡�E����&����m��d�=�XP+glIb�\"��I�s����zTo�,7ԂR?�LP�!��ƥq��ҬLc�C���j܋�&����Ki�E{Y�&��\0�\rJ��f�JV�����C]�C����1 ��e�;���e�{\n��5\\� ���(ׄ��f4f��7����\\�.[sm�x`��H��\n`}r#�\"�vf�ܼ���G9{8��e,\0*�4k����HA������ �uCh��lpώC2�Ů`��[��]tY��FO��MJ�E�������D��m����������Y�;ø��Cdt7�e�D̖�>��I�膝�>X̓P�`�K\0��ua��-�[5<��8��(� Tfa�����:���Z��:Bt����e� \0�/W[��t\\dB_ȩ��G��GZCw���\"��4��?J�D��|&D�Y����p�D��C��o��1{6��n��l�C-�ve�\0��i\\.�W�h���+��T���U��o(�+�9�-R�@ۥk�&����(�����\0{�V�Ș�����(�1���T��S��!�JR*d����>�klb���i��!��������cm���Ϝ��u���\rF���Z\r�i��]{��D&�$��<rh���[F�A��E��Y�^���=aR�M���Z+��뒚|d���d˸���\\����B�A���s��#�x�I��R��\Z�٤�d\0�Ǐ�!/��l��BJ)�Fq������%�@�{��tZ��J��_�� e�����j���s��_�4|#�y����a�>מ��TJ9�ala�V��P�6��,7��C����s\"�Ow[���9��Mk�\"���{�\\��\\Y�����J!�P�;�&.���eZ�)�W���]��%q�މ�&i�#v��Y����b0���#�]+�������2p�V�O^\n�ɞB�r�]�|:|���e(�)�{jw�-&�Ij*P\"@k�`%���E�Z;��-�!F���)}��K.�7���%כ@[SsI �h.�G$gA�#�ov��g�ax*�ιS��k���`\n¨����Jж���\Z��6�6������*\Z=�|�Q5��tkS�qp%Z���j�΢f$��B���#X�����h��H��X^�Ƀ㻇Qk��R�܆w��IԴ����V�R��������\nךr/���F\n�D�<}ܜ����{�o7��P�#�����}����ر8HKEh��6<����-������D�����Sf��Wb�o���v詽�C�G\ZX�z�[��.��X!��OJ�F���8\Z[�������w��Qu<�ӧ��������P)���� ���,a��^z�d����-(��_�ĄإU�[������o����gvo���z����y��#���n��|�\Z��R?�W��(�ź-˛8��m��Dy�$DA�K�#1�&\n!wm|��6�+�g������[�;=�fa��Eߡ�tY��Wr:t~��u?�PJ�?��\r�\05�ڕ��k|0�����R}�mN0�#�\"�2��m�ʨ��4�Ѩk��۹)Y�������y��&4��2��5�rG=�~�J���=��_��d3�W�������I �B��Ϩ����Q��L�3�)���n\"b\\y^�\'���lw���\Z�@^\n�d�֛�����{�DWQ\r���z)��Gֱ��E���C�臓^F�\'5�}����]�3d����爗]�!����i�qɇ]����Y�����[��f��Kb��ȱ\"����<�TQK��ш��p���m%H �8�o�Z�]�<��ד{��څ�ґ{��f�=������G��=~e����|��-a�a����5����oe�}ԫ]N�8�A¬F����i�:��\\���������%/D�stA����_��1�,��K3C�.��3��(b�\Z��G�L��!��O����\n�~�{�y�w�����}�1�Gá��4a����]+X��\Z?0Oh��`D��Bn\0M�:�_6A��K��\'�>\Z5��9.�g5W�{�M��PP�@}� \r�ܖ�^�gXԯ��������nvy����&��(_�\\�R��\0k�|Χ<Ȏ�X\r:Sr��!+n%!�}=�����c�k��+ ���5���V,�������^�ڳ��\"��2���?������T �����ۜ��(7D����&d=������^�5���&������H�r��敶Fl��ie�FM��n�vxk�c�t�E�]�*\Z��Ή&�y��Js���v�^��1O������Û)$��\'E-���w�%���,8�i�����s������z�����=Z�a�[�{������qї-J�O��4�)Ok�n� �Tk9}�>���ʂ���#I}Q�V�1t�r�n�{�2������$k��5�8^���o�W�<-җf����z�p��\0o��3����B>���qv•3%��̛��ޤoۅ������̈́�N�4�[�3�\"��\Z���tC����vvU1`�A��w���(�D���#8\\��n�����nG4f\r����}c������W/�C�~⊦)�L���s�]�&�~���q[l��xB�}��Kf�#���~@����lnu�?�n��=��h�������Y�Q�GG�ѵD`�x���G�M���&��O�L�����I���p`3��f̠�D(RЩ�\"�DЍslJ�F��n�:�����i���rU��@��+�\Zn��Bx��Gs0M����_��L�Q������\Z=[�q�x��]e��|(i��뛃�KH��e��U��G�hj���]����W4��|�τOI2��\0��z��P��P���d����=���j&�X�KYh�%��b\n�пD�A�7�����j���|K�w��h/=�� ���\Z�`.�z��S)�4n�w�\0Vk��w���x{>k5o�{�<�%۞��2l8K��G�48ӭ4��y�����_s��;�)����r)�a�������]��dd���y��O����)�E�l4-}����6bleSba�ҽ3L$���ye1������؇��$|�Ϣ���\n�w��F������\0��������\\�q\\��wU��ఙ8R�)�\'�����2����fG�jL����ޟ���b����Y߄l�:(�9�\\N���i���\\�v����9G�:�����G+L��J���8W���\'$S�q��J�� ���\Z.�E��c�S�:\'����H�+ӕ~?�-����\0���� ������z��ý3O�%G��|Ԫk�R�\r�\r�o�@�B��TA߀��`��X��;�Na�\rX���w��-�c���%}���ו�\r��\'�Ʊr�f��DӦ�A˪���pb���)�\"1RT��iל�]�!�>�#�J�e&���+�����������s{��.C���X��D����<8���m���T��%,�z�O��6\r�����?�~M�*_n\r+q����kx���PD���{\Z����ч����G���n��_Mse5�6�VQh�]�\Zxn��%\'a=!�S�Q�d�}����mA�R�س�uU��[��!c�w��}��o3Xgf���H���Y�q���,��������_JȎ��L�x����S����\'C����_}����0��;��2�?�������K˳:������x���Ƕ��F|��;��_q�u�ߛ�ž~\'�������<�z��qP���Q�,K��}�<�#�5�W1.i�v]��J���_S�����w��`\n%��ڍe�gƾ���?@l����-�?*���_��','20240417221218')
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:loginreqlink' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:login' LIMIT 1
  • ParserFactory: using default preprocessor
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'magicWords' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:createacct-helpusername' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:userlogin-yourname' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:pt-login-continue-button' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:helplogin-url' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:userlogin-helplink2' LIMIT 1
  • [session] SessionBackend "24b0tmls3f9dnjuj6vgke6ahnd90n53g" data dirty due to dirty(): MediaWiki\Extension\PluggableAuth\PrimaryAuthenticationProvider->continuePrimaryAuthentication/MediaWiki\Auth\AuthManager->removeAuthenticationSessionData/MediaWiki\Session\Session->setSecret/MediaWiki\Session\Session->set/MediaWiki\Session\SessionBackend->dirty
  • [authentication] Login failed in primary authentication by MediaWiki\Extension\PluggableAuth\PrimaryAuthenticationProvider
  • [session] SessionBackend "24b0tmls3f9dnjuj6vgke6ahnd90n53g" data dirty due to dirty(): AuthManagerSpecialPage->handleFormSubmit/AuthManagerSpecialPage->performAuthenticationStep/MediaWiki\Auth\AuthManager->continueAuthentication/MediaWiki\Session\Session->remove/MediaWiki\Session\SessionBackend->dirty
  • [session] SessionBackend "24b0tmls3f9dnjuj6vgke6ahnd90n53g" save: dataDirty=1 metaDirty=0 forcePersist=0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [DBQuery] SqlBagOStuff::modifyTableSpecificBlobsForSet [0.003s] database: REPLACE INTO `objectcache` (keyname,value,exptime) VALUES ('mediawiki:MWSession:24b0tmls3f9dnjuj6vgke6ahnd90n53g','mS�n�8�������b;�s�Ш�h(�k���;v�!$i�MG��q��̑f���^Y�ދ���;����4��\'j����P���\"µp���u��\Z�*<��Y�)�5d��n`�\0����]���Y��q�\nL]Jk�n��ȗ���&���������q����&���%��o�B�]�E��藏����.���\"K�&���̀�0tˀ��<�g�]��F�Hh��j�iC\0\0����Z���S���<;Mj�+��I���IP�A]M~ʲ��t�*�Hl�tʎ���|�O�_����]�•4���H\Z�N���(���\\j���5�e*����@���y��Dc@�� �1\r>�ރ���&�Ew����k�X�Q���f�mf��2�վ�����*f�P�.�v����j(q�nޯ���h>�6�u���\ZN���=t��\"<�>�N9��-w���:;!��>�}��nr�dWv������m��z�k���4�N��u6��u�f�������\n-���0��WS��O�?sV��T��Z�ŴҪ�:8�c\r���+t��,��L�[V��ۅ�Ә�>�>�6��vvg�+]�#�cc�������D�wo��� ̖�#�X��>�nI�y��q����`��9G�.������`1~y{-��M����K^$�c@��f���j��\"��.��ɘ�&���K���iZP����[v��#D���1��Ca��G\r>����uU��kw�_���~)��;��s���/g�:)���jx�W�R?t��绊�ޓ\rA�_��IT��܄I��TpI��E�����/Qt����?���>�=S�U��ʏx�,p[�\Z�ѫ�1�����(J\"���jq�t)�-/J\\�l6���U����L�-���4�Z�ySU���>ϳ���I*�L�Z�>}��','20240417221218')
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for localAutoCommit/0
  • [authevents] Login attempt
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:domain_Login' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Domain_Login' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:eb11e3e6821398afd6f2cba99a532351bdc00ee5): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Domain_Login): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:pt-login-button' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:userlogin-resetpassword-link' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:double-redirect-fixer' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:usermessage-editor' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:proxyblocker' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:sorbs' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:spambot_username' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:autochange-username' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:newusermessage-editor' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:userlogin-yourname-ph' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:userlogin-yourpassword' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'linkPrefixExtension' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:userlogin-yourpassword-ph' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:userlogin-remembermypassword' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'separatorTransformTable' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'digitGroupingPattern' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'minimumGroupingDigits' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'digitTransformTable' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:loginprompt' LIMIT 1
  • [DBQuery] MediaWiki::preOutputCommit [0s] database: COMMIT
  • MediaWiki::preOutputCommit: primary transaction round committed
  • MediaWiki::preOutputCommit: pre-send deferred updates completed
  • MediaWiki::preOutputCommit: session changes committed
  • [DBReplication] Wikimedia\Rdbms\LBFactory::shutdown: finished ChronologyProtector shutdown
  • [DBReplication] LBFactory shutdown completed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] Wikimedia\Rdbms\DatabaseMysqlBase::serverIsReadOnly [0s] database: SELECT @@GLOBAL.read_only AS Value
  • [objectcache] fetchOrRegenerate(global:rdbms-server-readonly:database:mediawiki:): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBPerformance] Expectation (writes <= 0) by MediaWiki::main not met (actual: 4): role-primary: INSERT INTO `online` (userid,username,timestamp,wikiid) VALUES (N,'X'
  • [DBQuery] WhosOnlineHooks::onBeforePageDisplay [0s] database: INSERT INTO `online` (userid,username,timestamp,wikiid) VALUES (0,'172.18.0.1','20240417211218','mediawiki') ON DUPLICATE KEY UPDATE timestamp = '20240417211218'
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] Wikimedia\Rdbms\Database::beginIfImplied (MediaWiki\User\TalkPageNotificationManager::dbCheckNewUserMessages) [0s] database: BEGIN
  • [DBQuery] MediaWiki\User\TalkPageNotificationManager::dbCheckNewUserMessages [0s] database: SELECT user_ip FROM `user_newtalk` WHERE user_ip = '172.18.0.1' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'rtl' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:pt-login' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:pt-createaccount' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] Wikimedia\Rdbms\Database::select [0s] database: SELECT pp_value FROM `page_props` WHERE pp_page = 0 AND pp_propname = 'MintyDocsPageType'
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:nstab-special' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:requestaccount-login' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:help-mediawiki' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-navigation' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-n-help-mediawiki' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:accesskey-n-help-mediawiki' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-tb' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-lang' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:otherlanguages' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-user-interface-preferences' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-ca-uls' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Tooltip-ca-uls' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:6413cf1dc7e48626de004977c677b6c8a55e2805): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Tooltip-ca-uls): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:accesskey-ca-uls' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Accesskey-ca-uls' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:fd39f2d7962ddb50cb19fd00d7cffa75e5365066): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Accesskey-ca-uls): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:user-interface-preferences' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'User-interface-preferences' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:cc55e312a5aa3b8484b6bc564e3edba47c592500): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:User-interface-preferences): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-user-page' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:user-page' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'User-page' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:c70b5a4895ac1b24b96a7e32d0a18d0d4cbe9bdc): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:User-page): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-personal' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-notifications' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Tooltip-p-notifications' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:5e89b9c18080b9e1a98fafc0da774d0eec80a023): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Tooltip-p-notifications): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:notifications' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-associated-pages' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Tooltip-p-associated-pages' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:ef738cc53166fcf45692d0ade99df069e848dfb2): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Tooltip-p-associated-pages): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:associated-pages' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Associated-pages' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:cb7b37d2da1ced2fadc11aa3317c1a8efcf39648): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Associated-pages): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-namespaces' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-ca-nstab-special' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:accesskey-ca-nstab-special' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-views' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-cactions' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:cactions' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-variants' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-vector-user-menu-overflow' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Tooltip-p-vector-user-menu-overflow' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:e1513355c020e501f13cdd486bc0dcd4eb6be013): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Tooltip-p-vector-user-menu-overflow): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-pt-createaccount-2' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Tooltip-pt-createaccount-2' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:e702f1464bc010b9a6e6eddb1f622b346a5e59a8): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Tooltip-pt-createaccount-2): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:accesskey-pt-createaccount-2' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Accesskey-pt-createaccount-2' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:67d5e11a789fd771a0c0d066fc8b52a31aab9f10): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Accesskey-pt-createaccount-2): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-user-menu-overflow' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Vector-user-menu-overflow' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:8642b10d6bc1bde39628473b8a6ec36d0c562bfa): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Vector-user-menu-overflow): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-p-views-overflow' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Tooltip-p-views-overflow' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:f055c2110fc07b3a656c5c3cafcc4b6c94bb48af): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Tooltip-p-views-overflow): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:views-overflow' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Views-overflow' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:7c6e666dd6029fe6c93284ac7d8c00a46b68e75f): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Views-overflow): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-pt-uls' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Tooltip-pt-uls' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:225d4b727fb642595e4832aef4d935cb699182da): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Tooltip-pt-uls): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:accesskey-pt-uls' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Accesskey-pt-uls' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:523f3ac6664d7dd429ec9ea26c2ada43f94ca413): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Accesskey-pt-uls): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:forced-globalnotice' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Forced-globalnotice' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:83c6ecc50fe6ce718203ed0aefba490ba1c23ec3): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Forced-globalnotice): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:globalnotice' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Globalnotice' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:5a58b35f6c1687293410e0e1e4a7224cc9178224): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Globalnotice): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:globalnotice-sysop' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Globalnotice-sysop' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:34d8821d06d31b5148fc45c4bdc4866a122278d9): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Globalnotice-sysop): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:globalnotice-bureaucrat' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Globalnotice-bureaucrat' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:c2f9eee3262fb1b7383e7af0c3c64451a41389f7): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Globalnotice-bureaucrat): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:globalnotice-bot' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Globalnotice-bot' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:898ab349660866676036931128ae83ff8594aacb): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Globalnotice-bot): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:globalnotice-rollback' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Globalnotice-rollback' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:dddfe8db694750c29f68864b75ca1d14b10c4a20): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Globalnotice-rollback): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:breadcrumbs' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-opt-out-tooltip' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-opt-out' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-action-toggle-sidebar' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-main-menu-tooltip' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-jumptosearch' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-jumptocontent' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-toc-beginning' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-toc-heading' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-toc-toggle-position-sidebar' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-toc-toggle-position-title' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-toc-menu-tooltip' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-toc-collapsible-button-label' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-article-tools-nav-label' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-site-nav-label' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:sitesubtitle' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:sitetitle' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:tooltip-vector-anon-user-menu-title' LIMIT 1
  • Unstubbing $wgLang on call of $wgLang::getCode from MediaWiki\Skins\Vector\SkinVector->decoratePortletData
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:variantname-en' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] MediaWiki\Page\PageStore::getPageByNameViaLinkCache [0s] database: SELECT page_id,page_namespace,page_title,page_is_redirect,page_is_new,page_touched,page_links_updated,page_latest,page_len,page_content_model FROM `page` WHERE page_namespace = 8 AND page_title = 'Variantname-en' LIMIT 1
  • [objectcache] fetchOrRegenerate(mediawiki:page:8:2065ff0b4b26c26fa83f8ad4a9907bb9ded198d0): miss, new value computed
  • [objectcache] fetchOrRegenerate(mediawiki:messages-big:f6c4f725a607bfe8fa0cf0c05ee4f470:Variantname-en): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [objectcache] fetchOrRegenerate(global:resourceloader-titleinfo:mediawiki:da39a3ee5e6b4b0d3255bfef95601890afd80709): miss, new value computed
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'defaultDateFormat' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:january' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:february' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:march' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:april' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:may_long' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:june' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:july' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:august' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:september' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:october' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:november' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:december' LIMIT 1
  • [DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: reused a connection for local/0
  • [DBQuery] LCStoreDB::get [0s] database: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:vector-language-variant-switcher-label' LIMIT 1
Ksmith197 (talkcontribs)

One thing to note i that the user "test" does not exist in the Wiki Database. The user "test" only exists on my Active Directory Server.

Reply to "User "test" not authorized"

Could not authenticate credentials against domain "mydomain"

16
Pysleto (talkcontribs)

I am trying to get the LDAP stack working with mediawiki (1.39.2) using the procedure Manual:Active Directory Integration

Both the LDAP and mediawiki are hosted on a Synology NAS.

Using the mediawiki login page returns the above error message


Running ShowUserInfo.php --domain "mydomain" --username "pytest" returns a valid outptup


Running CheckLogin.php --domain "mydomain" --username "pytest" however returns a Password: FAILED error message


Below is my ldapprovider.json file

{

"mydomain": {

"connection": {

"server": "ldap.XXXXX.nl",

"port": "389",

"user": "uid=root,cn=users,dc=ldap,dc=XXXXX,dc=com",

"pass": "XXXXX",

"enctype": "clear",

"options": {

"LDAP_OPT_DEREF": 1

},

"basedn": "dc=ldap,dc=XXXXX,dc=com",

"userbasedn": "dc=ldap,dc=XXXXX,dc=com",

"groupbasedn": "dc=ldap,dc=XXXXX,dc=com",

"searchattribute": "uid",

"usernameattribute": "USER-NAME",

"searchstring": "uid=USER-NAME,dc=ldap,dc=XXXXX,dc=com",

"realnameattribute": "cn",

"emailattribute": "mail"

},

"userinfo": [],

"authorization": [],

"groupsync": {

"mapping": {

"users": "cn=users,cn=groups,dc=ldap,dc=XXXXX,dc=com",

"sysop": "cn=administrators,cn=groups,dc=ldap,dc=XXXXX,dc=com"

}

}

}

}


I am running out of ideas and thank you for your help

Osnard (talkcontribs)
Pysleto (talkcontribs)

Thank you for your reply and help

Below the debug logs. As you can see, could not bind to LDAP domain with given user. But I do not understand why... Oddly, local login does not work either (2nd attempt) unless I deactivate the LDAP stack.


2024-04-04 12:04:31 mydomain Test-Test: In execute()

2024-04-04 12:04:31 mydomain Test-Test: Getting PluggableAuth instance

2024-04-04 12:04:31 mydomain Test-Test: Plugin name: LDAPAuthentication2

2024-04-04 12:04:31 mydomain Test-Test: Try to authenticate user: pytest

2024-04-04 12:04:31 mydomain Test-Test: Not local login. Checking LDAP...

2024-04-04 12:04:31 mydomain Test-Test: LDAP domain: mydomain

2024-04-04 12:04:32 mydomain Test-Test: Could not bind to LDAP domain with given user: pytest

2024-04-04 12:04:32 mydomain Test-Test: Authentication failure.

2024-04-04 12:04:32 mydomain Test-Test: ERROR: Could not authenticate credentials against domain "mydomain"

2024-04-04 12:04:43 mydomain Test-Test: In execute()

2024-04-04 12:04:43 mydomain Test-Test: Getting PluggableAuth instance

2024-04-04 12:04:43 mydomain Test-Test: Plugin name: LDAPAuthentication2

2024-04-04 12:04:43 mydomain Test-Test: Try to authenticate user: Pysleto

2024-04-04 12:04:43 mydomain Test-Test: Not local login. Checking LDAP...

2024-04-04 12:04:43 mydomain Test-Test: LDAP domain: mydomain

2024-04-04 12:04:44 mydomain Test-Test: Could not bind to LDAP domain with given user: Pysleto

2024-04-04 12:04:44 mydomain Test-Test: Authentication failure.

2024-04-04 12:04:44 mydomain Test-Test: ERROR: Could not authenticate credentials against domain "mydomain"

Osnard (talkcontribs)

Does your LDAP server allow binding for this user?

Pysleto (talkcontribs)

I get a valid output when running the following command line. Anymous binding is disabled but allowing it does not solve the problem.

ldapsearch -x "uid=pytest" -H "ldap://ldap.mydomain.com:389" -D "uid=root,cn=users,dc=ldap,dc=mydomain,dc=com" -w "XXXXXXXXXX" -b "dc=ldap,dc=mydomain,dc=com"

or am I misunderstanding your point?

Thank you very much for your support

Osnard (talkcontribs)

Are there any log messages that start with / contain code ldap_? Have you wired all log channels?

Pysleto (talkcontribs)

The general debug.log file contains the following lines with a reference to LDAP, utlimately resulting in User::getBlockedStatus

[session] SessionBackend "cb9oc0i5slqfanhaslo63s5tjt9esiqu" data dirty due to dirty(): MediaWiki\Extension\LDAPAuthentication2\PluggableAuth->checkLDAPLogin/MediaWiki\Auth\AuthManager->setAuthenticationSessionData/MediaWiki\Session\Session->setSecret/MediaWiki\Session\Session->set/MediaWiki\Session\SessionBackend->dirty

[LDAPProvider] Setting LDAP_OPT_PROTOCOL_VERSION to 3

[LDAPProvider] Setting LDAP_OPT_REFERRALS to 0

[LDAPProvider] Setting LDAP_OPT_DEREF to 1

[LDAPProvider] MediaWiki\Extension\LDAPProvider\Client::getSearchString: User DN is: 'uid=pytest,dc=ldap,dc=mydomain,dc=com'


I have wired the following log as suggested

$wgDebugLogFile = "$IP/debug.log";

$wgDebugLogGroups['PluggableAuth'] =

$wgDebugLogGroups['LDAP'] =

$wgDebugLogGroups['MediaWiki\\Extension\\LDAPProvider\\Client'] =

$wgDebugLogGroups['LDAPGroups'] =

$wgDebugLogGroups['LDAPUserInfo'] =

$wgDebugLogGroups['LDAPAuthentication2'] =

$wgDebugLogGroups['LDAPAuthorization'] = "$IP/tmp/LDAP.log";

Osnard (talkcontribs)
Pysleto (talkcontribs)

Thank you very much for your suport

I have set $wgDebugLogGroups['LDAPProvider'].

It adds 3 lines on setting CONSTANTS but I still do not see the expected ldap_ error message

Below the LDAP.log

2024-04-08 09:52:58 Test Test-test: In execute()

2024-04-08 09:52:58 Test Test-test: Getting PluggableAuth instance

2024-04-08 09:52:58 Test Test-test: Plugin name: LDAPAuthentication2

2024-04-08 09:52:58 Test Test-test: Try to authenticate user: pytest

2024-04-08 09:52:58 Test Test-test: Not local login. Checking LDAP...

2024-04-08 09:52:59 Test Test-test: LDAP domain: mydomain

2024-04-08 09:52:59 Test Test-test: Setting LDAP_OPT_PROTOCOL_VERSION to 3

2024-04-08 09:52:59 Test Test-test: Setting LDAP_OPT_REFERRALS to 0

2024-04-08 09:52:59 Test Test-test: Setting LDAP_OPT_DEREF to 1

2024-04-08 09:52:59 Test Test-test: MediaWiki\Extension\LDAPProvider\Client::getSearchString: User DN is: 'uid=pytest,dc=ldap,dc=mydomain,dc=com'

2024-04-08 09:52:59 Test Test-test: Could not bind to LDAP domain with given user: pytest

2024-04-08 09:52:59 Test Test-test: Authentication failure.

2024-04-08 09:52:59 Test Test-test: ERROR: Could not authenticate credentials against domain "mydomain"

Osnard (talkcontribs)
Pysleto (talkcontribs)

No need to apologise and once again, thank you for your support.

I have tried to apply the patch but get the following error

root@XXXXX:/volume1/web_packages/mediawiki/extensions/LDAPProvider# git apply 07c6aa5.diff

warning: src/Client.php has type 100755, expected 100644

error: patch failed: src/Client.php:125

error: src/Client.php: patch does not apply


My current installation is a direct download of the LDAPProvider extension for mediawiki 1.39.

Osnard (talkcontribs)

The patch has been merged in the mean time. Please try to update the extension completely from REL1_39 branch.

Pysleto (talkcontribs)

I have cloned the REL1_39 branch of the LDAPProvider extension in volume1/web_packages/mediawiki/extensions/

I get the following error message from the start when accessing mediawiki. I did not have via a direct download of the extension. I confirm the existence of the file /volume1/web_packages/mediawiki/extensions/LDAPProvider/extension.json

Fatal error: Uncaught Exception: Unable to open file /volume1/web_packages/mediawiki/extensions/LDAPProvider/extension.json: filemtime(): stat failed for /volume1/web_packages/mediawiki/extensions/LDAPProvider/extension.json in /volume1/web_packages/mediawiki/includes/registration/ExtensionRegistry.php:199 Stack trace: #0 /volume1/web_packages/mediawiki/includes/GlobalFunctions.php(53): ExtensionRegistry->queue('/volume1/web_pa...') #1 /volume1/web_packages/mediawiki/LocalSettings.php(208): wfLoadExtension('LDAPProvider') #2 /volume1/web_packages/mediawiki/includes/Setup.php(218): require_once('/volume1/web_pa...') #3 /volume1/web_packages/mediawiki/includes/WebStart.php(86): require_once('/volume1/web_pa...') #4 /volume1/web_packages/mediawiki/index.php(44): require('/volume1/web_pa...') #5 {main} thrown in /volume1/web_packages/mediawiki/includes/registration/ExtensionRegistry.php on line 199

Osnard (talkcontribs)
Pysleto (talkcontribs)

Here are the log messages. It looks like you already identified the issue in the comment you made 8 days ago.

I will welcome any tips on solving this issue.

Thanks

2024-04-12 09:58:47 byimogen ByImogen-BImgn: In execute()

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Getting PluggableAuth instance

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Plugin name: LDAPAuthentication2

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Try to authenticate user: pytest

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Not local login. Checking LDAP...

2024-04-12 09:58:47 byimogen ByImogen-BImgn: LDAP domain: mydomain

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Setting LDAP_OPT_PROTOCOL_VERSION to 3

2024-04-12 09:58:47 byimogen ByImogen-BImgn: ldap_set_option( $linkID, $option = 17, $newval = 3 );

2024-04-12 09:58:47 byimogen ByImogen-BImgn: # returns true

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Setting LDAP_OPT_REFERRALS to 0

2024-04-12 09:58:47 byimogen ByImogen-BImgn: ldap_set_option( $linkID, $option = 8, $newval = 0 );

2024-04-12 09:58:47 byimogen ByImogen-BImgn: # returns true

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Setting LDAP_OPT_DEREF to 1

2024-04-12 09:58:47 byimogen ByImogen-BImgn: ldap_set_option( $linkID, $option = 2, $newval = 1 );

2024-04-12 09:58:47 byimogen ByImogen-BImgn: # returns true

2024-04-12 09:58:47 byimogen ByImogen-BImgn: ldap_bind( $linkID, $bindRDN = 'uid=root,cn=users,dc=ldap,dc=byimogen,dc=nl', $bindPassword = 'XXXX' );

2024-04-12 09:58:47 byimogen ByImogen-BImgn: # returns true

2024-04-12 09:58:47 byimogen ByImogen-BImgn: MediaWiki\Extension\LDAPProvider\Client::getSearchString: User DN is: 'uid=pytest,dc=ldap,dc=byimogen,dc=nl'

2024-04-12 09:58:47 byimogen ByImogen-BImgn: ldap_bind( $linkID, $bindRDN = 'uid=pytest,dc=ldap,dc=byimogen,dc=nl', $bindPassword = 'XXXX' );

2024-04-12 09:58:47 byimogen ByImogen-BImgn: # returns false

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Could not bind to LDAP domain with given user: pytest

2024-04-12 09:58:47 byimogen ByImogen-BImgn: Authentication failure.

2024-04-12 09:58:47 byimogen ByImogen-BImgn: ERROR: Could not authenticate credentials against domain "mydomain"

Osnard (talkcontribs)

Apparently the first bind with uid=root,cn=users,dc=ldap,dc=byimogen,dc=nl does work, But the second does not.

This means in the second case:

  • Either the user DN is wrong
  • Or the password is wrong
  • Or this particular user is not allowed to do a direct bind (LDAP server side setting)

So, does the DN uid=pytest,dc=ldap,dc=byimogen,dc=nl look correct to you? Maybe it has been assembled wrongly.

Reply to "Could not authenticate credentials against domain "mydomain""

authentication issues

9
Summary by Wikiphpnoob

looks since the office is more making a move towards Azure/Entra for authentication, so will our wiki site. So there may be a chance I will be posing questions in those article topic sections soon. wish me luck

Wikiphpnoob (talkcontribs)

i keep trying to reach out, but i guess SME's are otherwise engaged. so i'll try again.

i completely wiped out my previous build and started over.

I'm on Windows Server 2016 ( i know its not supported), with IIS 10

Installed software

Product Version

MediaWiki 1.39.6

PHP 8.3.4 (cgi-fcgi)

MySQL 8.3.0

ICU 72.1

LDAPAuthentication2 2.0.7 (3a91dad) 08:59, 4 March 2024

LDAPAuthorization 2.0.5 (ccd20da) 08:59, 4 March 2024

LDAPGroups 2.0.5 (956a438) 19:08, 4 March 2024

LDAPProvider 2.0.5 (b7fd141) 08:59, 4 March 2024

LDAPUserInfo 2.0.4 (a5eeff0) 08:59, 4 March 2024

PluggableAuth 7.1.0 (1884a12) 06:36, 4 March 2024

I am able to log in locally. I cannot authenticate over LDAP

I attempt to log in over LDAP using my samaccountname ID - firstname.lastname and get Could not authenticate credentials against domain "ACME.ORG"

LDAPAuthentication2 log shows - 2024-04-02 18:19:06 SERVER acmewiki: Could not bind to LDAP domain with given user: firstname.lastname

PluggableAuth log shows:

2024-04-02 18:19:06 SERVER acmewiki: In execute()

2024-04-02 18:19:06 SERVER acmewiki: Getting PluggableAuth instance

2024-04-02 18:19:06 SERVER acmewiki: Plugin name: LDAPAuthentication2

2024-04-02 18:19:06 SERVER acmewiki: Authentication failure.

2024-04-02 18:19:06 SERVER acmewiki: ERROR: Could not authenticate credentials against domain "ACME.ORG"


I also get [authentication] Login failed in primary authentication by MediaWiki\Extension\PluggableAuth\PrimaryAuthenticationProvider


i can succesfully run showuserinfo.php, ShowUserGroups.php, CheckConnection.php. BUT CheckLogin.php shows FAILED

i can perform a simple bind using LDP.exe using the ldap bind service account and using my samaccountname ID - firstname.lastname

i have been running update.php and resetarting IIS when making changes

here are scrubbed LocalSettings and ldapprovider.json:

LocalSettings:

// Safe IP or not (for bypassing external login via AD)

$safeIPs = array(

'127.0.0.1',

'localhost',

'x.x.x.x/16');

$ipsVars = array('HTTP_X_FORWARDED_FOR','HTTP_X_REAL_IP','REMOTE_ADDR');

foreach ($ipsVars as $ipsVar) {

if (isset($_SERVER[$ipsVar]) && mb_strlen($_SERVER[$ipsVar]) > 3 ) { $wikiRequestIP = $_SERVER[$ipsVar]; break; }

}

$wikiRequestSafe = ( isset($wikiRequestIP ) && ( in_array($wikiRequestIP,$safeIPs) ));

// Create Wiki-Group 'users' from default user group

$wgGroupPermissions['users'] = $wgGroupPermissions['user']; (IS THIS OK?????)

// Private Wiki. External LDAP login. Default NS requires login. (ARE THESE OK???)

$wgEmailConfirmToEdit = false;

$wgGroupPermissions['*']['edit'] = false;

$wgGroupPermissions['*']['read'] = false;

$wgGroupPermissions['*']['createaccount'] = false;

$wgGroupPermissions['sysop']['createaccount'] = false;

$wgGroupPermissions['*']['autocreateaccount'] = true;

$wgBlockDisablesLogin = true;

// Load LDAP Config from JSON

$ldapJsonFile = __DIR__ . '/ldapprovider.json';

$ldapConfig = false;

if (is_file($ldapJsonFile)) {

    $testJson = @json_decode(file_get_contents($ldapJsonFile), true);

    if (is_array($testJson)) {

        $ldapConfig = true;

    } else {

        error_log("Found invalid JSON in file: $ldapJsonFile");

    }

} else {

    error_log("LDAP config file not found: $ldapJsonFile");

}

// Activate LDAP extensions

if ( $ldapConfig ) {

wfLoadExtension( 'PluggableAuth' );

wfLoadExtension( 'LDAPProvider' );

wfLoadExtension( 'LDAPAuthentication2' );

wfLoadExtension( 'LDAPAuthorization' );

wfLoadExtension( 'LDAPGroups' );

wfLoadExtension( 'LDAPUserInfo' );

$LDAPProviderDomainConfigs = "$ldapJsonFile";

// Force LDAPGroups to sync by choosing a domain (e.g. first JSON object in ldap.json)

$LDAPProviderDefaultDomain = array_key_first(json_decode(file_get_contents($LDAPProviderDomainConfigs), true));

# Configure PluggableAuth settings

$wgPluggableAuth_EnableAutoLogin = false;

$wgPluggableAuth_EnableLocalLogin = true;

$wgPluggableAuth_EnableLocalProperties = false;

$wgPluggableAuth_EnableFastLogout = true;

$wgPluggableAuth_Config = [

"ACME Wiki Login" => [

'plugin' => 'LDAPAuthentication2',

'data' => ['domain' => 'ACME.ORG']

],

"LDAP Authorization" => [

'plugin' => 'LDAPAuthorization'

]

];

# LDAPProvider settings

$LDAPProviderCacheType = 'CACHE_NONE'; // 'CACHE_ANYTHING' when NOT debugging

$LDAPProviderCacheTime = 500;

$LDAPProviderPreSearchUsernameModifierRegistry = [

'strtolower' => function () {

return \MediaWiki\Extension\LDAPProvider\PreSearchUsernameModifier\ToLower::newInstance();

},

'removespaces' => function () {

return \MediaWiki\Extension\LDAPProvider\PreSearchUsernameModifier\RemoveSpaces::newInstance();

}

];

# LDAPAuthentication2 settings

$LDAPAuthentication2AllowLocalLogin = true;

$LDAPAuthentication2UsernameNormalizer = 'strtolower';

$wgLDAPAuthentication2['authentication']['usernameattribute'] = 'samaccountName';

if ($wikiRequestSafe) { $LDAPAuthentication2AllowLocalLogin = true; }

}

$wgShowExceptionDetails = true;

$wgDebugToolbar = true;

$wgDebugLogGroups['PluggableAuth'] = 'C:/Windows/Temp/PLUG.log';

$wgDebugLogGroups['LDAP'] = 'C:/Windows/Temp/ldap1.log';

$wgDebugLogGroups['MediaWiki\\Extension\\LDAPProvider\\Client'] = 'C:/Windows/Temp/ldapprovider.log';

$wgDebugLogGroups['LDAPGroups'] = 'C:/Windows/Temp/LDAPGroups.log';

$wgDebugLogGroups['LDAPUserInfo'] = 'C:/Windows/Temp/LDAPUser.log';

$wgDebugLogGroups['LDAPAuthentication2'] = 'C:/Windows/Temp/LDAPAuthentication2.log';

$wgDebugLogGroups['LDAPAuthorization'] = 'C:/Windows/Temp/LDAP.log';

********************************

ldapprovider.json:

{

  "ACME.ORG": {

    "connection": {

      "server": "x.x.x.x",

      "port": 389,

      "use-tls": false,

      "enctype": "clear",

      "user": "CN=wiki service account,OU=ACME Managed Service Accounts,DC=ACME,DC=ORG",

      "pass": "xxx",

      "options": { "LDAP_OPT_DEREF": 1 },

      "basedn": "DC=ACME,DC=ORG",

      "groupbasedn": "DC=ACME,DC=ORG",

      "userbasedn": "DC=ACME,DC=ORG",

      "searchattribute": "samaccountname",

      "usernameattribute": "samaccountname",

      "realnameattribute": "samaccountname",

      "groupsearch": "$dn",

      "grouprequest": "MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\UserMemberOf::factory",

      "presearchusernamemodifiers": [ "lowercase", "removespaces" ],

      "searchstring": "CN=USER-NAME,DC=ACME,DC=ORG",

      "nestedgroups": false

    },

    "userinfo": {

      "attributes-map": {

        "realname": "samaccountname"

      }

    },

    "authorization": {

      "rules": {

        "groups": {

          "required": [

            "CN=Information Technology,OU=GROUPS,DC=ACME,DC=ORG",

            "CN=Human Resources,OU=GROUPS,DC=ACME,DC=ORG"

          ]

        }

      }

    },

    "groupsync": {

      "mechanism": "mappedgroups",

      "mapping": {

        "information technology": "CN=Information Technology,OU=GROUPS,DC=ACME,DC=ORG",

        "human resources": "CN=Human Resources,OU=GROUPS,DC=ACME,DC=ORG"

      }

    }

  }

}

Wikiphpnoob (talkcontribs)
Wikiphpnoob (talkcontribs)

also seeing from $wgDebugLogFile some entries...

>checkLDAPLogin/MediaWiki\Auth\AuthManager->setAuthenticationSessionData/MediaWiki\Session\Session->setSecret/MediaWiki\Session\Session->set/MediaWiki\Session\SessionBackend->dirty [LDAPProvider] Setting LDAP_OPT_PROTOCOL_VERSION to 3 [LDAPProvider] Setting LDAP_OPT_REFERRALS to 0 [LDAPProvider] Setting LDAP_OPT_DEREF to 1 [LDAPProvider] MediaWiki\Extension\LDAPProvider\Client::getSearchString: User DN is: 'CN=firstname.lastname,DC=ACME,DC=ORG'


which i believe at a minimum, it shows successful validation of a username using LDAP

Osnard (talkcontribs)

What do the debug logs?

Regarding the $wgGroupPermissions: If you want to have per-namespace permissions, please check out Extension:Lockdown

Wikiphpnoob (talkcontribs)

@Osnard

if there are other logs i need to set up, or have done so incorrectly, please help

I have this set up at the bottom of my LocalSettings:

$wgShowExceptionDetails = true;

$wgDebugToolbar = true;

$wgDebugLogGroups['PluggableAuth'] = 'C:/Windows/Temp/PLUG.log';

$wgDebugLogGroups['LDAP'] = 'C:/Windows/Temp/ldap1.log';

$wgDebugLogGroups['MediaWiki\\Extension\\LDAPProvider\\Client'] = 'C:/Windows/Temp/ldapprovider.log';

$wgDebugLogGroups['LDAPGroups'] = 'C:/Windows/Temp/LDAPGroups.log';

$wgDebugLogGroups['LDAPUserInfo'] = 'C:/Windows/Temp/LDAPUser.log';

$wgDebugLogGroups['LDAPAuthentication2'] = 'C:/Windows/Temp/LDAPAuthentication2.log';

$wgDebugLogGroups['LDAPAuthorization'] = 'C:/Windows/Temp/LDAP.log';

$wgDebugLogFile = 'C:/Windows/Temp/Debug.log';


only Debug, LDAPAuthentication2 and PLUG log files are collecting logs

LDAPAuthentication2:

2024-04-04 12:04:44 SERVER acme: Try to authenticate user: firstname.lastname

2024-04-04 12:04:44 SERVER acme: Not local login. Checking LDAP...

2024-04-04 12:04:44 SERVER acme: LDAP domain: RAARIC.ORG

2024-04-04 12:04:44 SERVER acme: Could not bind to LDAP domain with given user: firstname.lastname

PLUG

2024-04-04 12:04:44 SERVER acme: In execute()

2024-04-04 12:04:44 SERVER acme: Getting PluggableAuth instance

2024-04-04 12:04:44 SERVER acme: Plugin name: LDAPAuthentication2

2024-04-04 12:04:44 SERVER acme: Authentication failure.

2024-04-04 12:04:44 SERVER acme: ERROR: Could not authenticate credentials against domain "ACME.ORG"

Debug snippits:

[session] SessionBackend "3j82ch3sui4ve4f2ftbjsb8l31dgkhts" data dirty due to dirty(): MediaWiki\Extension\PluggableAuth\PrimaryAuthenticationProvider->continuePrimaryAuthentication/MediaWiki\Auth\AuthManager->removeAuthenticationSessionData/MediaWiki\Session\Session->setSecret/MediaWiki\Session\Session->set/MediaWiki\Session\SessionBackend->dirty

[authentication] Login failed in primary authentication by MediaWiki\Extension\PluggableAuth\PrimaryAuthenticationProvider

[session] SessionBackend "3j82ch3sui4ve4f2ftbjsb8l31dgkhts" data dirty due to dirty(): AuthManagerSpecialPage->handleFormSubmit/AuthManagerSpecialPage->performAuthenticationStep/MediaWiki\Auth\AuthManager->continueAuthentication/MediaWiki\Session\Session->remove/MediaWiki\Session\SessionBackend->dirty


[session] SessionBackend "3j82ch3sui4ve4f2ftbjsb8l31dgkhts" data dirty due to dirty(): AuthManagerSpecialPage->handleReturnBeforeExecute/MediaWiki\Auth\AuthManager->removeAuthenticationSessionData/MediaWiki\Session\Session->setSecret/MediaWiki\Session\Session->set/MediaWiki\Session\SessionBackend->dirty[DBQuery] LCStoreDB::get [0s] 127.0.0.1: SELECT  lc_value  FROM `l10n_cache`    WHERE lc_lang = 'en' AND lc_key = 'messages:ldapauthentication2-error-authentication-failed'  LIMIT 1  [session] SessionBackend "3j82ch3sui4ve4f2ftbjsb8l31dgkhts" data dirty due to dirty(): MediaWiki\Extension\LDAPAuthentication2\PluggableAuth->checkLDAPLogin/MediaWiki\Auth\AuthManager->setAuthenticationSessionData/MediaWiki\Session\Session->setSecret/MediaWiki\Session\Session->set/MediaWiki\Session\SessionBackend->dirty

[LDAPProvider] Setting LDAP_OPT_PROTOCOL_VERSION to 3

[LDAPProvider] Setting LDAP_OPT_REFERRALS to 0

[LDAPProvider] Setting LDAP_OPT_DEREF to 1

[LDAPProvider] MediaWiki\Extension\LDAPProvider\Client::getSearchString: User DN is: 'CN=firstname.lastname,DC=ACME,DC=ORG'

Osnard (talkcontribs)

Are there no log messages (e.g. in C:/Windows/Temp/ldap1.log) that look like this?

ldap_bind( ...
# returns ...
Wikiphpnoob (talkcontribs)

no, there is no ldap1 log file created

Osnard (talkcontribs)

What about C:/Windows/Temp/ldapprovider.log? Is such a log message in any of the other logs you have wired?

Wikiphpnoob (talkcontribs)

negative

Cannot connect with TLS

4
Emikulic (talkcontribs)

I have seen the same issue where my TLS fails. I have done a lot of configuration and been running mediawiki since 1.26 in production. I can test PHP client program from my linux server to the LDAP/AD server just fine; bind and connect.

Note I have written brief php test programs to run ldap bind, ldap connect, ldaps, and ldap starttls. I test them against our AD servers fine and the only one the fails is the STARTTLS test from port 389.

Maybe the mediawiki PHP code uses STARTTLS by default and fails there?

I would like to just use port 636 and TLS and not bother with 389 or StartTLS . How do we do that?

We have legacy apps that use clear 389 and we cannot setup StartTLS on that port for a while yet. We do support TLS/636 and can use that, but mediawiki needs to support that as a unique option; more than just StartTLS.

I have ran my own php tests the same, and also the extensions/LDAPProvider/maintenance/ShowUserInfo.php and extensions/LDAPProvider/maintenance/ShowUserGroups.php and they throw the same errors.

I can run PHP tests with 'clear'/389 and TLS/636 which work , but even those fail when I try a 'StartTLS' connection.

What setting can we change to just set it at 636/TLS?


The server fails every login and gives the same odd message of port configuration error it looks like:


2020-11-25 01:15:56 wikidb: In execute()

2020-11-25 01:15:56 wikidb: Getting PluggableAuth singleton

2020-11-25 01:15:56 wikidb: Class name: MediaWiki\Extension\LDAPAuthentication2\PluggableAuth

2020-11-25 01:15:56 wikidb: ldap_connect( $hostname = 'ldap://addc02.mydomain.com:636', $port = 389 );

2020-11-25 01:15:56 wikidb: # __METHOD__ returns Resource id #893

2020-11-25 01:15:56 wikidb: Setting LDAP_OPT_PROTOCOL_VERSION to 3

2020-11-25 01:15:56 wikidb: ldap_set_option( $linkID, $option = 17, $newval = 3 );

2020-11-25 01:15:56 wikidb: # returns 1

2020-11-25 01:15:56 wikidb: Setting LDAP_OPT_REFERRALS to 0

2020-11-25 01:15:56 wikidb: ldap_set_option( $linkID, $option = 8, $newval = 0 );

2020-11-25 01:15:56 wikidb: # returns 1

2020-11-25 01:15:56 wikidb: Setting LDAP_OPT_DEREF to 1

2020-11-25 01:15:56 wikidb: ldap_set_option( $linkID, $option = 2, $newval = 1 );

2020-11-25 01:15:56 wikidb: # returns 1

2020-11-25 01:15:56 wikidb: ldap_start_tls( $linkID );

2020-11-25 01:15:56 wikidb: # returns

Osnard (talkcontribs)

Have you tried something like this in the "connection"-section of your domain config?

...
"port": 636,
"enctype": "clear",
...

If this does not work, you may need to modify files in the LDAPProvider extension [1-4]. Once you get it to work, please share the config you have used, or provide me with the changes on the codebase you have made so I can add them to the regular codebase and make sure future updates won't break you usecase.

[1] https://github.com/wikimedia/mediawiki-extensions-LDAPProvider/blob/1.0.4/src/Client.php#L100

[2] https://github.com/wikimedia/mediawiki-extensions-LDAPProvider/blob/1.0.4/src/Client.php#L134-L144

[3] https://github.com/wikimedia/mediawiki-extensions-LDAPProvider/blob/1.0.4/src/PlatformFunctionWrapper.php#L257-L265

[4] https://github.com/wikimedia/mediawiki-extensions-LDAPProvider/blob/1.0.4/src/PlatformFunctionWrapper.php#L237-L247

Emikulic (talkcontribs)

I have not tried that combination of port and 'clear' I can give it a shot.

Peptidylprolyl (talkcontribs)
Reply to "Cannot connect with TLS"
Awliste (talkcontribs)

I have a working config on a machine I'll call prod-test. Talks TLS to my OpenLDAP provider. Built manually on a development CentOS 7.7 rig, I can log in to my wiki, make edits, monkey around. Seems to work great so far.


Once I had a working config in dev, I made a clone of our production wiki (it's a VM). It's a Mediawiki VM appliance/OVA, a default build pretty much straight from the foundation web page. Debian based. Changed the IP on my clone, updated my LocalSettings.php to match my prod-test build, added the LDAP extensions I have in my working build to my cloned appliance via SCP, gave it a php maintenance/update.php, copied/pasted the relevant portions of my LocalSettings.php over from my prod-test build, and kicked the tires. Started fine, page renders as expected, Special Pages:Version shows all my LDAP extensions, looking good... Attempted to login via LDAP with the production clone running my prod-test configs, I get the following:


<snip>

Warning: ldap_start_tls(): Unable to start TLS: Connect error in /var/www/mediawiki/extensions/LDAPProvider/src/PlatformFunctionWrapper.php on line 121

[4bdbee442bdc5006ac0c4d20] /index.php/Special:PluggableAuthLogin MWException from line 129 of /var/www/mediawiki/extensions/LDAPProvider/src/Client.php: Could not start TLS!

</snip>


Sigh... This extension is going to be the end of me.


Checked paths of certs to make sure I'm apples-to-apples in my tests ( both at /var/www/html/certs as I get real hairy about where PHP has permissions to access, can confirm this directory exists and is correct in LocalSettings.php), checked permissions on cert files (all owned by apache2/httpd user). Error isn't showing me "Can't find constant..." as it has in the past with permissions issues. Don't suspect permissions issues here.


On my OpenLDAP provider, the slapd.log shows me a connection attempt from my cloned production instance where I can see it starts TLS and then exits. Relevant entries look like this:


2019-11-21T21:25:55.878771+00:00 awesome.ldap.server slapd[248590]: conn=1513 fd=25 ACCEPT from IP=10.1.2.219:34524 (IP=0.0.0.0:389)

2019-11-21T21:25:55.878805+00:00 awesome.ldap.server slapd[248590]: connection_get(25) 2019-11-21T21:25:55.878841+00:00 awesome.ldap.server slapd[248590]: conn=1513 op=0 EXT oid=1.3.6.1.4.1.1466.20037 2019-11-21T21:25:55.878845+00:00 awesome.ldap.server slapd[248590]: do_extended: oid=1.3.6.1.4.1.1466.20037 2019-11-21T21:25:55.878859+00:00 awesome.ldap.server slapd[248590]: conn=1513 op=0 STARTTLS 2019-11-21T21:25:55.878883+00:00 awesome.ldap.server slapd[248590]: conn=1513 op=0 RESULT oid= err=0 text= 2019-11-21T21:25:55.887117+00:00 awesome.ldap.server slapd[248590]: daemon: activity on 1 descriptor 2019-11-21T21:25:55.887121+00:00 awesome.ldap.server slapd[248590]: daemon: activity on: 2019-11-21T21:25:55.887852+00:00 awesome.ldap.server slapd[248590]: daemon: read active on 25 2019-11-21T21:25:55.887875+00:00 awesome.ldap.server slapd[248590]: connection_get(25) 2019-11-21T21:25:55.888653+00:00 awesome.ldap.server slapd[248590]: conn=1513 fd=25 TLS established tls_ssf=256 ssf=256 2019-11-21T21:25:55.899089+00:00 awesome.ldap.server slapd[248590]: daemon: read active on 25 2019-11-21T21:25:55.899117+00:00 awesome.ldap.server slapd[248590]: connection_get(25) 2019-11-21T21:25:55.899137+00:00 awesome.ldap.server slapd[248590]: connection_read(25): input error=-2 id=1513, closing. 2019-11-21T21:25:55.899141+00:00 awesome.ldap.server slapd[248590]: connection_closing: readying conn=1513 sd=25 for close 2019-11-21T21:25:55.899158+00:00 awesome.ldap.server slapd[248590]: daemon: removing 25 2019-11-21T21:25:55.899196+00:00 awesome.ldap.server slapd[248590]: conn=1513 fd=25 closed (connection lost)



@ 888653, I can see the TLS connection is established. Quick check of what a -2 error is, looks like it's not presenting my client certificate. I have SCP'd my certs over from my working instance so I know they're formatted correctly and are valid certs. The TLS session *IS* getting established, but not progressing. Again, my LDAP settings are a lift from a known working build. confirmed it's a direct copy. Not sure why this started now.


running php maintenance/CheckLogin.php shows same fault as above.


On a whim, because we're moving our VM environment into more containerized world (docker), I went ahead and pulled the Mediawiki docker image from docker hub and wrote a compose file to support this. had to install php-ldap onto the image. Using the same LocalSettings.php file, updated appropriate mounts/volumes, put certs in the right places, and fired it up.

Same exact symptom.


So in summary...

Dev centOS build - LDAP works, can authenticate.

MediaWiki OVA appliance (Debian) - LDAP doesn't work, TLS can't connect. Same relevant settings in LocalSettings.php

Docker MediaWiki container - LDAP doesn't work, TLS can't connect. Same relevant settings in LocalSettings.php


To my mind, the only delta that I can obviously see is CentOS vs. Debian. But I don't think operating system issues make sense to my problem. What does make more sense might be php, specifically, php-ldap. I find it aggravating beyond compare that the OVA doesn't ship with LDAP "bones" already in it (like this wonderful extension and it's friends that make up LDAP hub should already be packed into it and turned off, AND the appropriate PHP LDAP modules included with the OS). I think I may be missing PHP modules with the builds that come from the foundations.


To you folks who work in Debian and have a working model of this, specifically what PHP modules do you have installed? would anyone with a working LDAP/Debian build mediawiki mind giving me a dump of their packages "apt list | grep php" ?


Any other bonus thoughts in troubleshooting here are most appreciated. And @Osnard, thank you for all you do to help this community. YTMND.

Realsalt (talkcontribs)

I'm having a similar problem. Did you figure this out?

Peptidylprolyl (talkcontribs)

I figured out the difference between different distributions and it is the location of the configuration file /etc/ldap/ldap.conf which needs the contents

TLS_CACERT $SERVER_CERTIFICATE


(you need to replace $SERVER_CERTIFICATE with the public x509 certificate that the LDAP server will be serving.)

In other distributions, this configuration file may be elsewhere. It's required because the php-ldap module is using the LDAP suite.


I hope that helps; I'm planning on posting a docker compose of setting up MediaWiki + OpenLDAP + TLS soon.

Edit: Here it is:

https://github.com/createyourpersonalaccount/openldap-mediawiki/

Reply to "TLS woes..."

Trying to do a LDAP Login

4
GregANICO (talkcontribs)

Hi Everyone, I am wondering if anybody has ran into this issue when trying to login via ldap. I get this error after putting in my domain username and password.

☁ZeDJRu4hcahAMcLvtSppyAAAAMI] /mediawiki-1.39.5/index.php?title=Special:PluggableAuthLogin MediaWiki\Extension\LDAPProvider\DomainConfigProvider\ConfigException: ⧼ldapprovider-domain-config-invalid⧽


Thanks in advance,

Greg

GregANICO (talkcontribs)

Here is the backtrace for it:

Backtrace:

from /var/www/html/mediawiki-1.39.5/extensions/LDAPProvider/src/DomainConfigProvider/LocalJSONFile.php(51)

#0 /var/www/html/mediawiki-1.39.5/extensions/LDAPProvider/src/DomainConfigProvider/LocalJSONFile.php(70): MediaWiki\Extension\LDAPProvider\DomainConfigProvider\LocalJSONFile->__construct()

#1 [internal function]: MediaWiki\Extension\LDAPProvider\DomainConfigProvider\LocalJSONFile::newInstance()

#2 /var/www/html/mediawiki-1.39.5/extensions/LDAPProvider/src/DomainConfigFactory.php(101): call_user_func_array()

#3 /var/www/html/mediawiki-1.39.5/extensions/LDAPProvider/src/ClientFactory.php(62): MediaWiki\Extension\LDAPProvider\DomainConfigFactory::getInstance()

#4 /var/www/html/mediawiki-1.39.5/extensions/LDAPAuthentication2/src/PluggableAuth.php(254): MediaWiki\Extension\LDAPProvider\ClientFactory->getForDomain()

#5 /var/www/html/mediawiki-1.39.5/extensions/LDAPAuthentication2/src/PluggableAuth.php(123): MediaWiki\Extension\LDAPAuthentication2\PluggableAuth->checkLDAPLogin()

#6 /var/www/html/mediawiki-1.39.5/extensions/PluggableAuth/includes/PluggableAuthLogin.php(101): MediaWiki\Extension\LDAPAuthentication2\PluggableAuth->authenticate()

#7 /var/www/html/mediawiki-1.39.5/includes/specialpage/SpecialPage.php(701): MediaWiki\Extension\PluggableAuth\PluggableAuthLogin->execute()

#8 /var/www/html/mediawiki-1.39.5/includes/specialpage/SpecialPageFactory.php(1428): SpecialPage->run()

#9 /var/www/html/mediawiki-1.39.5/includes/MediaWiki.php(316): MediaWiki\SpecialPage\SpecialPageFactory->executePath()

#10 /var/www/html/mediawiki-1.39.5/includes/MediaWiki.php(904): MediaWiki->performRequest()

#11 /var/www/html/mediawiki-1.39.5/includes/MediaWiki.php(562): MediaWiki->main()

#12 /var/www/html/mediawiki-1.39.5/index.php(52): MediaWiki->run()

#13 /var/www/html/mediawiki-1.39.5/index.php(48): wfIndexMain()

#14 {main}

Osnard (talkcontribs)

Looks like the JSON file you have configured with $LDAPProviderDomainConfigs is invalid. Try some linter tool like jsonlint. Many text (code) editors also show syntax errors.

GregANICO (talkcontribs)

Thanks, you were right. I was missing a "," at the end of one of my lines.

Reply to "Trying to do a LDAP Login"

-- in thicase mediawiki 1.35.0 not start

2
Sjmong (talkcontribs)

/index.php Error from line 48 of /mediawiki-1.35.0/extensions/LDAPProvider/src/DomainConfigFactory.php: Call to a member function getConfigArray() on null

Backtrace:

#0 /mediawiki-1.35.0/extensions/LDAPProvider/src/DomainConfigFactory.php(102): MediaWiki\Extension\LDAPProvider\DomainConfigFactory->__construct()

#1 /mediawiki-1.35.0/extensions/LDAPAuthentication2/src/Setup.php(15): MediaWiki\Extension\LDAPProvider\DomainConfigFactory::getInstance()

#2 /mediawiki-1.35.0/includes/Setup.php(807): MediaWiki\Extension\LDAPAuthentication2\Setup::init()

#3 /mediawiki-1.35.0/includes/WebStart.php(89): require_once(string)

#4 /mediawiki-1.35.0/index.php(44): require(string)

#5 {main}

hi,

I'm new to the blog,I made 1500 configurations with mw 1.41 1.39 1.35 to authenticate with AD but well I can't.

last question:where can I find a good step by step guide to integrate my mediawiki with active directory?sorry but I have viewed hundreds of pages on the mediawiki site with many different conf

tnx

Sjmong (talkcontribs)
Reply to "-- in thicase mediawiki 1.35.0 not start"

Using 1.39.6 mediawiki, php 8 -- someone help?

3
2601:447:D080:22C5:65D4:CAC4:7441:16F9 (talkcontribs)

When I try using my configuration I get this error:

[121fdde4262ac3efdca31459] 2024-02-05 15:34:10: Fatal exception of type "Wikimedia\Rdbms\DBQueryError"

and My LDAP log tells me this:


*****

2024-02-05 15:30:10 xxx my_wiki: In execute()

2024-02-05 15:30:10 xxx my_wiki: Getting PluggableAuth instance

2024-02-05 15:30:10 xxx my_wiki: Plugin name: LDAPAuthentication2

2024-02-05 15:30:10 xxx my_wiki: Try to authenticate user: username

2024-02-05 15:30:10 xxx my_wiki: Not local login. Checking LDAP...

2024-02-05 15:30:10 xxx my_wiki: LDAP domain: 123

2024-02-05 15:30:11 xxx my_wiki: LDAP login succeeded.


Here is my configuration:

wfLoadExtensions( [

'LDAPProvider',

'PluggableAuth',

'LDAPAuthentication2'

] );

$LDAPAuthentication2AllowLocalLogin = true;

$LDAPProviderDomainConfigProvider = function() {

        $config = [

                "123" => [ // lowercase domain name--uses case-sensitive match

                        "connection" => [

                                "server"            => "privateinfo", // LDAP server (AD server for me)

                                "basedn"            => "dc=123,dc=core,dc=privateinfo,dc=com", // Base DN for searching for user attributes

                                "groupbasedn"       => "dc=123,dc=core,dc=privateinfo,dc=com", // Present, but I don't use

                                "userbasedn"        => "dc=123,dc=core,dc=privateinfo,dc=com", // Used for authentication

                                "searchattribute"   => "samaccountname", // lowercase (case-sensitive)

                                "searchstring"      => "123\\USER-NAME", // The form for AD

                                "usernameattribute" => "samaccountname", // For AD

                                "realnameattribute" => "cn",

                                "emailattribute"    => "mail"

                        ],

                        "groupsync" => [ // Intentionally empty for me, not using

                        ],

                        "userinfo" => [ // Already have the three fields above I want

                        ]

                ]

        ];

        return new \MediaWiki\Extension\LDAPProvider\DomainConfigProvider\InlinePHPArray( $config );

};

$wgPluggableAuth_Config['Log In (123)'] = [

    'plugin' => 'LDAPAuthentication2',

    'data' => [

        'domain' => '123'

    ]

];

2601:447:D080:22C5:65D4:CAC4:7441:16F9 (talkcontribs)

I fixed this issue. I was reading in the wrong database.

Sorry about that!

Osnard (talkcontribs)

Thanks for the feedback!

TypeError: Argument passed to __construct() must be of type array, null given

4
Wikillyn (talkcontribs)

Hello,


For the past week I've been trying to migrate a really old mediawiki (1.23) on and old OS (CentOS 6 IIRC) to a newer OS (Ubuntu) and more importantly a supported version of MediaWiki (1.41).

I've managed to create a new VM and a new MediaWiki instance, in which I successfully imported my old wiki database (by first upgrading to 1.35 then 1.41).

I had a lot of trouble with the new extensions since it was using old versions of Ldap extensions. I managed to kind of power through to the point where I am able ( or seem to be able) to authenticate using my LDAP server, but once I'm connected I have this error :

TypeError: Argument 1 passed to MediaWiki\Config\HashCOnfig::__construct() must be of the type array, null given, called in /var/lib/mediawiki/extensions/LDAPProvider/src/DomainConfigFactory.php on line 76

The Backtrace mentions :

from /var/lib/mediawiki/includes/config/HashConfig.php(52)

#0 /var/lib/mediawiki/extensions/LDAPProvider/src/DomainConfigFactory.php(76): MediaWiki\Config\HashConfig->construct()

I can't directly copy/paste the full backtrace but it then calls the functions factory() from DomainConfigFactory, setSuitableDomainConfig() from UserLoadAfterLoadFromSession, process() from UserLoadAfterLoadFromSession...

Here are my current configuration files, anonymized as much as I could. The LocalSettings.php may look very bad because I started from the old instance LocalSettings.php, feel free to indicate which lines of config should/need to be removed in order to have a cleaner instance.

LocalSettings.php :

<?php

error_reporting( -1 );

ini_set( 'display_errors', 1 );

if ( !defined( 'MEDIAWIKI' ) ) {

        exit;

}

$wgSitename = "My_Wiki";

$wgScriptPath = "";

$wgScriptExtension = ".php";

$wgServer = "server_url";

$wgStylePath = "$wgScriptPath/skins";

$wgLogo = "$wgStylePath/common/images/wiki.png";

$wgEnableEmail = true;

$wgEnableUserEmail = true;

$wgEmergencyContact = "apache@IP";

$wgPasswordSender = "apache@IP";

$wgEnotifUserTalk = false;

$wgEnotifWatchlist = false;

$wgEmailAuthentication = true;

$wgDBtype = "mysql";

$wgDBserver = "localhost";

$wgDBname = "my_wiki";

$wgDBuser = "wikiuser";

$wgDBpassword = "anothersecureandlongpassword";

$wgDBprefix = "";

$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=utf8";

$wgDBmysql5 = false;

$wgMainCacheType = CACHE_NONE;

$wgMemCachedServers = array();

$wgEnableUploads = true;

$wgUseInstantCommons = false;

$wgShellLocale = "en_US.utf8";

$wgLanguageCode = "fr";

$wgSecretKey = "longkey";

$wgUpgradeKey = "anotherlongkey";

$wgDefaultSkin = "Timeless";

wfLoadSkin('Timeless');

$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright

$wgRightsUrl = "";

$wgRightsText = "";

$wgRightsIcon = "";

$wgDiff3 = "/usr/bin/diff3";

$wgDebugLogFile = "debug.log";

$wgDebugComments = true;

$wgLDAPDebug = 3;

$wgDebugLogGroups["LDAPAuthentication2"] = "/var/lib/mediawiki/LDAPAuthentication2.log";

$wgPluggableAuth_Config['Log In Connection.1'] = [

        'plugin' => 'LDAPAuthentication2',

        'data' => [

                'domain' => 'connection.1'

        ]

];

$wgPluggableAuth_Config['Log In Connection2'] = [

        'plugin' => 'LDAPAuthentication2',

        'data' => [

                'domain' => 'connection.2'

        ]

];

$LDAPProviderDomainConfigs = "/var/www/html/ldapprovider.json";

$LDAPAuthentication2AllowLocalLogin = true;

$wgPluggableAuth_EnableLocalLogin = true;

$wgGroupPermissions['*']['read'] = true;

$wgGroupPermissions['*']['edit'] = true;

$wgGroupPermissions['user']['read'] = false;

$wgGroupPermissions['user']['edit'] = false;

$wgGroupPermissions['user']['createpage'] = false;

$wgGroupPermissions['user']['createtalk'] = false;

$wgGroupPermissions['user']['upload'] = false;

$wgGroupPermissions['user']['minoredit'] = false;

$wgGroupPermissions['user']['purge'] = false;

$wgGroupPermissions['user']['movefile'] = false;

$wgGroupPermissions['user']['move'] = false;

$wgGroupPermissions['user']['move-subpages'] = false;

$wgGroupPermissions['user']['move-rootuserpages'] = false;

$wgGroupPermissions['user']['reupload-shared'] = false;

$wgGroupPermissions['user']['reupload'] = false;

$wgGroupPermissions['user']['sendemail'] = false;

$wgGroupPermissions['user']['writeapi'] = false;

$wgGroupPermissions['exp']['read'] = true;

$wgGroupPermissions['exp']['edit'] = true;

$wgGroupPermissions['exp']['createpage'] = true;

$wgGroupPermissions['exp']['createtalk'] = true;

$wgGroupPermissions['exp']['upload'] = true;

$wgGroupPermissions['exp']['minoredit'] = true;

$wgGroupPermissions['exp']['purge'] = true;

$wgGroupPermissions['exp']['movefile'] = true;

$wgGroupPermissions['exp']['move'] = true;

$wgGroupPermissions['exp']['move-subpages'] = true;

$wgGroupPermissions['exp']['move-rootuserpages'] = true;

$wgGroupPermissions['exp']['reupload-shared'] = true;

$wgGroupPermissions['exp']['reupload'] = true;

$wgDefaultUserOptions['riched_disable']               = false;         //true = editor disabled

$wgDefaultUserOptions['riched_start_disabled']        = false;         //Important!!! else bug...

$wgDefaultUserOptions['riched_use_toggle']            = true;          //Editor can toggle CKEditor/WikiText

$wgDefaultUserOptions['riched_use_popup']             = false;         //Deprecated

$wgDefaultUserOptions['riched_toggle_remember_state'] = true;

$wgDefaultUserOptions['riched_link_paste_text']       = true;

$wgFCKEditorExcludedNamespaces[] = NS_MEDIAWIKI;

$wgFCKEditorExcludedNamespaces[] = NS_TEMPLATE;

$wgShowExceptionDetails = true;

$wgShowDBErrorBacktrace = true;

$wgShowSQLErrors = true;

wfLoadExtension( 'LDAPAuthentication2' );

wfLoadExtension( 'LDAPProvider' );

wfLoadExtension( 'PluggableAuth' );

wfLoadExtension( 'LDAPUserInfo' );

?>


ldapprovider.json :

{

        "connection.1": {

                "connection": {

                        "server": "my_ldap.server",

                        "enctype": "ssl",

                        "port": "636",

                        "options": {

                                "LDAP_OPT_DEREF": 1

                        },

                        "searchattribute": "uid",

                        "basedn": "dc=ldap,dc=server",

                        "userbasedn": "dc=ldap,dc=server",

                        "searchstring": "uid=USER-NAME,ou=users,dc=ldap,dc=server",

                        "user": "cn=rouser,dc=ldap,dc=server",

                        "pass": "ofcourseaverylongandcomplicatedpassword",

                        "realnameattribute": "uid",

                        "usernameattribute": "uid",

                        "emailattribute": "uid"

                },

                "authorization": {

                        "rules": {

                                "groups": {

                                        "required": ["ou=users,dc=ldap,dc=server"]

                                }

                        }

                }

        },

        "connection.2": {

                "connection": {

                        "server": "my_ldap.server",

                        "enctype": "ssl",

                        "port": "636",

                        "option": {

                                "LDAP_OPT_DEREF": 1

                        },

                        "searchattribute": "uid",

                        "user": "cn=rouser,dc=ldap,dc=server",

                        "pass": "ofcourseaverylongandcomplicatedpassword",

                        "basedn": "ou=admins,dc=ldap,dc=server",

                        "userbasedn": "dc=ldap,dc=server",

                        "searchstring": "uid=USER-NAME,ou=admins,dc=ldap,dc=server",

                        "realnameattribute": "uid",

                        "usernameattribute": "uid",

                        "emailattribute": "uid"

                }

        }

}


If anyone has any leads regarding what could be the problem, please let me know I'm beginning to lose my sanity :(

Osnard (talkcontribs)

This error indeed is very strange. It emerges from

new HashConfig( $this->config[$domain][$section] )

-- https://github.com/wikimedia/mediawiki-extensions-LDAPProvider/blob/2.0.3/src/DomainConfigFactory.php#L76

which means either $this->config[$domain] or $this->config[$domain][$section] are not set.

I guess /var/www/html/ldapprovider.json is readable and valid.

Maybe you can add the following lines at in line 74 of extensions/LDAPProvider/src/DomainConfigFactory.php and check/share the log at /var/lib/mediawiki/LDAPAuthentication2.log

wfDebugLog( 'LDAPAuthentication2', '###START###' );
wfDebugLog( 'LDAPAuthentication2', var_export( $domain, true) );
wfDebugLog( 'LDAPAuthentication2', var_export( $section, true) );
wfDebugLog( 'LDAPAuthentication2', var_export( $this->config, true) );
wfDebugLog( 'LDAPAuthentication2', '###END###' );
Wikillyn (talkcontribs)

Indeed everything was readable and accessible.

Thank you so much for the given lines, they allowed the app to highlight that, once logged in, the app tried to fetch userinfo from ldapprovider.json, which was not defined and thus would make the connection fail.

I added a simple userinfo with only "email": "mail" as its attributes-map and everything worked like a charm again !


Another bug I have is that when I tried to login to my local account (in the DB) I have this error : MediaWiki\Extension\LDAPProvider\LDAPNoDomainConfigException: No configuration available for domain 'local'!

Is it normal ? I thought these 2 lines

$LDAPAuthentication2AllowLocalLogin = true;

$wgPluggableAuth_EnableLocalLogin = true;

would allow local login :/

Wikillyn (talkcontribs)

Update : in my ldapprovider.json i created an almost empy domain named local :

"local": {

        "connection": {

        },

        "userinfo": {

        },

        "authorization": {

        }

},

and it worked again !

I feel like a wizard but I no longer seem to have any problem !

Reply to "TypeError: Argument passed to __construct() must be of type array, null given"

Installing LDAPProvider on Synology NAS

2
139.191.205.211 (talkcontribs)

I am looking for advice on how to create the database tables necessary to the functioning of the LDAPProvider extension

The installation process suggests to run the following script on a Synology NAS: php maintenance/update.php

When I connect via SSH to the NAs and attempt to run this command, I receive an indication that some php packages (fileinfo and intl) are not installed.

I can only install one of those php packages via the Webstation script language settings (the other is not an option). However, this does not change the outcome when running the command line.

Thank you for your help and feedback

Osnard (talkcontribs)

Neither fileinfo and intl are actively required by the LDAP extensions. My best guess is that your CLI php uses a different <cide>php.ini file than your webserver php.

Try to run the command with the ini file specified

php -c path/to/webserver/php.ini maintenance/update.php --quick
Reply to "Installing LDAPProvider on Synology NAS"