Extension:OATHAuth: Difference between revisions
Add placeholder for $wgOATHRequiredForGroups |
Tag: Rollback |
||
(47 intermediate revisions by 19 users not shown) | |||
Line 4: | Line 4: | ||
{{Extension |
{{Extension |
||
|image = OATHAuth (TOTP).png |
|image = OATHAuth (TOTP).png |
||
|imagesize = |
|imagesize = 350 |
||
|status = stable |
|status = stable |
||
|type1 = user rights |
|type1 = user rights |
||
Line 12: | Line 12: | ||
|version = <translate><!--T:1--> Continuous updates</translate> |
|version = <translate><!--T:1--> Continuous updates</translate> |
||
|compatibility policy = rel |
|compatibility policy = rel |
||
|mediawiki = |
|mediawiki = |
||
|description = <translate><!--T:2--> Provides two-factor authentication for logging in</translate> |
|description = <translate><!--T:2--> Provides two-factor authentication for logging in</translate> |
||
|download = {{WikimediaDownload|OATHAuth}} |
|download = {{WikimediaDownload|OATHAuth|phab=EOAT}} |
||
|bugzilla = OATHAuth |
|bugzilla = OATHAuth |
||
|phabricator = MediaWiki-extensions-OATHAuth |
|phabricator = MediaWiki-extensions-OATHAuth |
||
|table1 = oathauth_users |
|table1 = oathauth_users |
||
|rights = <nowiki/> |
|||
*oathauth-enable |
|||
*oathauth-api-all |
|||
*oathauth-disable-for-user |
|||
*oathauth-view-log |
|||
*oathauth-verify-user |
|||
}} |
}} |
||
<translate><!--T:42--> The <tvar name=1>'''OathAuth'''</tvar> extension provides [[w:Two-factor authentication|two-factor authentication]] support.</translate> |
<translate><!--T:42--> The <tvar name=1>'''OathAuth'''</tvar> extension provides [[w:Two-factor authentication|two-factor authentication]] support.</translate> |
||
<translate><!--T:43--> By default, this includes a [[w:Time-based One-time Password Algorithm|time-based one-time password]] (TOTP) implementation that allows users to generate 2FA codes from their phone or desktop app.</translate> |
<translate><!--T:43--> By default, this includes a [[w:Time-based One-time Password Algorithm|time-based one-time password]] (TOTP) implementation that allows users to generate 2FA codes from their phone or desktop app.</translate> |
||
<translate><!--T:5--> Client support is available for most feature phones, smartphones and desktops.</translate> |
<translate><!--T:5--> Client support is available for most feature phones, smartphones, and desktops.</translate> |
||
{{Note|1=<translate><!--T:6--> This extension has nothing to do with [[w:OAuth|OAuth]], which is a totally different protocol.</translate>|2=reminder}} |
{{Note|1=<translate><!--T:6--> This extension has nothing to do with [[w:OAuth|OAuth]], which is a totally different protocol.</translate>|2=reminder}} |
||
Line 29: | Line 35: | ||
</translate> |
</translate> |
||
<translate><!--T:8--> The help page on [[<tvar name=1>m:Special:MyLanguage/Help:Two-factor authentication</tvar>|Two-factor authentication]] provides information for end users on how to use this extension.</translate> |
<translate><!--T:8--> The help page on [[<tvar name=1>m:Special:MyLanguage/Help:Two-factor authentication</tvar>|Two-factor authentication]] provides information for end users on how to use this extension.</translate> |
||
<translate><!--T:9--> However the special page |
<translate><!--T:9--> However, the special page will also guide users.</translate> |
||
<translate> |
<translate> |
||
== Installation == <!--T:10--> |
== Installation == <!--T:10--> |
||
</translate> |
</translate> |
||
{{warning|There is a bug with this extension where it does not update properly from the web (mw-config) updater and must instead use the [[manual:update.php|update.php]] command line update script ([[phab:T371849]])}} |
|||
{{ExtensionInstall |
{{ExtensionInstall |
||
|db-update=1 |
|db-update=1 |
||
Line 39: | Line 46: | ||
|registration=required |
|registration=required |
||
|custom-steps=* [[#Configuration|<translate><!--T:11--> Configure as required.</translate>]] |
|custom-steps=* [[#Configuration|<translate><!--T:11--> Configure as required.</translate>]] |
||
* <translate><!--T:49--> It is strongly recommended to setup {{<tvar name=1>ll|object cache</tvar>|caching}} when using OATHAuth.</translate> <translate><!--T:45--> This will improve performance, but also the security of your wiki if you're using OATHAuth.</translate> <translate><!--T:46--> If you are only running one application/web server and have php-apcu installed, and no specific cache configured, MediaWiki will likely fallback to using APCu.</translate> <translate><!--T:47--> If you are using multiple application/web server it is advised to set up {{<tvar name=1>ll|Object cache#Local cluster</tvar>|local cluster}} caching that all hosts can use.</translate> <translate><!--T:48--> Examples include <tvar name=1>{{ll|Manual:Memcached|Memcached}}</tvar>.</translate> |
|||
}} |
}} |
||
Line 56: | Line 64: | ||
<translate><!--T:18--> This tells OATH to accept tokens for a range of effectively <tvar name=1><code>((1 + 2 * $wgOATHAuthWindowRadius) * 30)</code></tvar> seconds.</translate> |
<translate><!--T:18--> This tells OATH to accept tokens for a range of effectively <tvar name=1><code>((1 + 2 * $wgOATHAuthWindowRadius) * 30)</code></tvar> seconds.</translate> |
||
<translate><!--T:19--> This range of valid windows is centered around the current time.</translate> |
<translate><!--T:19--> This range of valid windows is centered around the current time.</translate> |
||
<translate><!--T:20--> The purpose of this configuration variable is to account for differences between the user's |
<translate><!--T:20--> The purpose of this configuration variable is to account for differences between the user's and server's clock.</translate> |
||
<translate><!--T:21--> However, |
<translate><!--T:21--> However, keeping it as low as possible is recommended.</translate> |
||
|- |
|- |
||
| {{phpi|$wgOATHAuthDatabase}} |
| {{phpi|$wgOATHAuthDatabase}} |
||
| {{phpi|false}} |
| {{phpi|false}} |
||
| <translate><!--T:22--> The database domain.</translate> <translate><!--T:23--> Only used in a multi-database environment.</translate> |
| {{deprecated-inline}} <translate><!--T:22--> The database domain.</translate> <translate><!--T:23--> Only used in a multi-database environment.</translate> <translate><!--T:53--> After MediaWiki 1.42, you should use <tvar name=1>{{ll|Manual:$wgVirtualDomainsMapping|$wgVirtualDomainsMapping['virtual-oathauth']}}</tvar> instead of this option.</translate> |
||
|- |
|- |
||
| {{phpi|$wgOATHAuthSecret}} |
| {{phpi|$wgOATHAuthSecret}} |
||
Line 75: | Line 83: | ||
| {{phpi|$wgOATHExclusiveRights}} |
| {{phpi|$wgOATHExclusiveRights}} |
||
| <code>[]</code> |
| <code>[]</code> |
||
| <translate><!--T:37--> Set of permissions that are revoked from users who did not |
| <translate><!--T:37--> Set of permissions that are revoked from users who did not login using [[w:Two-factor authentication|two-factor authentication]].</translate> |
||
|- |
|- |
||
| {{phpi|$wgOATHRequiredForGroups}} |
| {{phpi|$wgOATHRequiredForGroups}} |
||
| <code>[]</code> |
| <code>[]</code> |
||
| <translate><!--T:44--> Sets a list of user groups that are required to have [[w:Two-factor authentication|two-factor authentication]] enabled. Use 'user' if you want all logged-in users required to enable two-factor authentication.</translate> |
|||
⚫ | |||
|} |
|} |
||
Line 100: | Line 108: | ||
<translate> |
<translate> |
||
=== User permission === <!--T:28--> |
=== User permission === <!--T:28--> |
||
</translate> |
</translate> |
||
Line 118: | Line 125: | ||
== Administration == <!--T:32--> |
== Administration == <!--T:32--> |
||
=== Resetting a user token === <!--T:33--> |
|||
<!--T:34--> |
|||
⚫ | |||
</translate> |
</translate> |
||
; <translate><!--T:33--> Resetting a user token</translate>: |
|||
{{MW version|version=1.40}} |
|||
⚫ | |||
<translate><!--T:35--> Alternatively, a sysadmin with shell access may type on a command line <tvar name=1><code>cd /path/to/mediawiki/extensions/OATHAuth/maintenance/</code></tvar> and then execute <tvar name=2><code>php disableOATHAuthForUser.php "username"</code></tvar> where <tvar name=3><code>"username"</code></tvar> is the user to have 2FA disabled.</translate> |
|||
$ ./maintenance/run OATHAuth:disableOATHAuthForUser <user> |
|||
{{MW version|version=1.39|comment=and before}} |
|||
$ php ./extensions/OATHAuth/maintenance/disableOATHAuthForUser.php <user> |
|||
<translate> |
<translate> |
||
<!--T:50--> |
|||
Where <tvar name=1>{{tag|user|open}}</tvar> is the name of the user to have 2FA disabled. |
|||
== Shared database tables == <!--T:52--> |
|||
⚫ | |||
Some Wikis may want to share the 2FA data amongst multiple Wikis.{{ll|Manual:$wgSharedTables|Shared database tables}}, the previous method for doing so is deprecated in MediaWiki 1.42 and later. |
|||
<translate><!--T:54--> For new wiki-farm installations where you want users to share their 2FA token amongst multiple wikis, please use <tvar name=1>{{ll|Manual:$wgVirtualDomainsMapping|$wgVirtualDomainsMapping}}</tvar> and the extensions will automatically make its tables use the specified database name.</translate> |
|||
<syntaxhighlight lang=php> |
|||
$wgVirtualDomainsMapping['virtual-oathauth'] = [ 'db' => 'sharedbname' ] |
|||
</syntaxhighlight> |
|||
When using shared database tables, i.e., the same set of users for different wikis, add <code>oathauth_devices</code> and <code>oathauth_types</code> to <code>$wgSharedTables</code>. |
|||
<syntaxhighlight lang=php> |
|||
$wgSharedTables[] = 'oathauth_devices'; |
|||
$wgSharedTables[] = 'oathauth_types'; |
|||
</syntaxhighlight> |
|||
<translate> |
|||
== See also == <!--T:36--> |
== See also == <!--T:36--> |
||
</translate> |
</translate> |
||
Line 129: | Line 167: | ||
* {{ll|Help:Two-factor authentication|Two-factor authentication (TFA)}} |
* {{ll|Help:Two-factor authentication|Two-factor authentication (TFA)}} |
||
* {{ll|Extension:WebAuthn}} |
* {{ll|Extension:WebAuthn}} |
||
* <translate><!--T:51--> [[:en:Initiative for Open Authentication|Initiative for Open Authentication (OATH)]]</translate> |
|||
{{OnWikimedia}} |
{{OnWikimedia}} |
||
{{Used by}} |
|||
{{Used by|bluespice=1|canasta=1|debian=mediawiki|miraheze=1|mywikis=1|prowiki=1|semantic core=1|wiki.gg=1}} |
|||
[[Category:Login extensions{{#translation:}}]] |
[[Category:Login extensions{{#translation:}}]] |
Latest revision as of 18:14, 21 September 2024
OATHAuth Release status: stable |
|
---|---|
Implementation | User rights , Special page , Page action |
Description | Provides two-factor authentication for logging in |
Author(s) | Ryan Lane |
Latest version | Continuous updates |
Compatibility policy | Snapshots releases along with MediaWiki. Master is not backward compatible. |
Database changes | Yes |
Tables | oathauth_users |
License | GPL-2.0-or-later AND GPL-3.0-or-later |
Download | |
|
|
|
|
Quarterly downloads | 75 (Ranked 68th) |
Public wikis using | 1,459 (Ranked 205th) |
Translate the OATHAuth extension if it is available at translatewiki.net | |
Issues | Open tasks · Report a bug |
The OathAuth extension provides two-factor authentication support. By default, this includes a time-based one-time password (TOTP) implementation that allows users to generate 2FA codes from their phone or desktop app. Client support is available for most feature phones, smartphones, and desktops.
Usage
[edit]The help page on Two-factor authentication provides information for end users on how to use this extension. However, the special page will also guide users.
Installation
[edit]- Download and move the extracted
OATHAuth
folder to yourextensions/
directory.
Developers and code contributors should install the extension from Git instead, using:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/OATHAuth - Only when installing from Git, run Composer to install PHP dependencies, by issuing
composer install --no-dev
in the extension directory. (See task T173141 for potential complications.) - Add the following code at the bottom of your LocalSettings.php file:
wfLoadExtension( 'OATHAuth' );
- Run the update script which will automatically create the necessary database tables that this extension needs.
- Configure as required.
- It is strongly recommended to setup caching when using OATHAuth. This will improve performance, but also the security of your wiki if you're using OATHAuth. If you are only running one application/web server and have php-apcu installed, and no specific cache configured, MediaWiki will likely fallback to using APCu. If you are using multiple application/web server it is advised to set up local cluster caching that all hosts can use. Examples include Memcached .
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Configuration
[edit]Parameters
[edit]Configuration Flag | Default Value | Description |
---|---|---|
$wgOATHAuthWindowRadius
|
4
|
The number of token windows in each direction that should be valid.
This tells OATH to accept tokens for a range of effectively |
$wgOATHAuthDatabase
|
false
|
(deprecated) The database domain. Only used in a multi-database environment. After MediaWiki 1.42, you should use $wgVirtualDomainsMapping['virtual-oathauth'] instead of this option. |
$wgOATHAuthSecret
|
false
|
The base OATHAuth secret for this wiki from which all encryption keys are derived.
If |
$wgOATHAuthAccountPrefix
|
false
|
The prefix used for the OATHAuth user account name and the issuer used for the account.
If |
$wgOATHExclusiveRights
|
[]
|
Set of permissions that are revoked from users who did not login using two-factor authentication. |
$wgOATHRequiredForGroups
|
[]
|
Sets a list of user groups that are required to have two-factor authentication enabled. Use 'user' if you want all logged-in users required to enable two-factor authentication. |
OATHAuth also adds a key to the $wgRateLimits array to define rate limits for authentication attempts:
'badoath' => [
'&can-bypass' => false,
'user' => [ 10, 60 ],
'user-global' => [ 10, 60 ],
]
Note that the user-global
key is available only since 1.35.
Earlier version have to rely on user
and perhaps ip-all
.
See the documentation of $wgRateLimits
for details.
User permission
[edit]- Granting access to enable OATHAuth
Users should be given access to the oathauth-enable
user right so that they can enable it at Special:OATHAuth (a link to which appears at Special:Preferences).
$wgGroupPermissions['user']['oathauth-enable'] = true;
The above will grant all registered users access to enable OATHAuth.
Administration
[edit]Resetting a user token
[edit]If a user loses both their token generator and the recovery tokens, two-factor authentication may be removed from the user by running the disableOATHAuthForUser
maintenance script:
MediaWiki version: | 1.40 |
$ ./maintenance/run OATHAuth:disableOATHAuthForUser <user>
MediaWiki version: | ≤ 1.39 |
$ php ./extensions/OATHAuth/maintenance/disableOATHAuthForUser.php <user>
Where <user>
is the name of the user to have 2FA disabled.
Shared database tables
[edit]Some Wikis may want to share the 2FA data amongst multiple Wikis.Shared database tables , the previous method for doing so is deprecated in MediaWiki 1.42 and later. For new wiki-farm installations where you want users to share their 2FA token amongst multiple wikis, please use $wgVirtualDomainsMapping and the extensions will automatically make its tables use the specified database name.
$wgVirtualDomainsMapping['virtual-oathauth'] = [ 'db' => 'sharedbname' ]
When using shared database tables, i.e., the same set of users for different wikis, add oathauth_devices
and oathauth_types
to $wgSharedTables
.
$wgSharedTables[] = 'oathauth_devices';
$wgSharedTables[] = 'oathauth_types';
See also
[edit]- Wikimedia Security Team/Two-factor Authentication for CentralAuth wikis
- Two-factor authentication (TFA)
- Extension:WebAuthn
- Initiative for Open Authentication (OATH)
This extension is being used on one or more Wikimedia projects. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia's CommonSettings.php and InitialiseSettings.php configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki's Special:Version page. |
This extension is included in the following wiki farms/hosts and/or packages: This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |
- Extensions bundled with MediaWiki 1.31
- Stable extensions
- User rights extensions
- Special page extensions
- Page action extensions
- Extensions with unknown license
- Extensions in Wikimedia version control
- Extensions which add rights
- AuthChangeFormFields extensions
- BeforeCreateEchoEvent extensions
- GetPreferences extensions
- LoadExtensionSchemaUpdates extensions
- UserEffectiveGroups extensions
- UserGetRights extensions
- GetUserPermissionsErrors extensions
- All extensions
- Extensions requiring Composer with git
- Extensions used on Wikimedia
- Extensions included in BlueSpice
- Extensions included in Canasta
- Extensions available as Debian packages
- Extensions included in Miraheze
- Extensions included in MyWikis
- Extensions included in ProWiki
- Extensions included in semantic::core
- Extensions included in wiki.gg
- Extensions included in WikiForge
- Login extensions