{"master":{"name":"OATHAuth","author":["Ryan Lane","Robert Vogel <vogel@hallowelt.com>","Dejan Savuljesku <savuljesku@hallowelt.com>","Taavi V\u00e4\u00e4n\u00e4nen"],"url":"https:\/\/www.mediawiki.org\/wiki\/Extension:OATHAuth","descriptionmsg":"oathauth-desc","type":"other","requires":{"MediaWiki":">= 1.47.0"},"license-name":"GPL-2.0-or-later AND GPL-3.0-or-later","attributes":{"Echo":{"Notifications":{"oathauth-disable":{"category":"system","group":"negative","section":"alert","presentation-model":"MediaWiki\\Extension\\OATHAuth\\Notifications\\DisablePresentationModel","canNotifyAgent":true,"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"]},"oathauth-enable":{"category":"system","group":"positive","section":"alert","presentation-model":"MediaWiki\\Extension\\OATHAuth\\Notifications\\EnablePresentationModel","canNotifyAgent":true,"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"]},"oathauth-recoverycodes-count":{"category":"system","group":"negative","section":"alert","presentation-model":"MediaWiki\\Extension\\OATHAuth\\Notifications\\RecoveryCodeCountPresentationModel","canNotifyAgent":true,"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"]},"oathauth-recoverycodes-generated-for-user":{"category":"system-noemail","group":"interactive","section":"alert","presentation-model":"MediaWiki\\Extension\\OATHAuth\\Notifications\\RecoveryCodesGeneratedForUserPresentationModel"},"oathauth-twofactor-required":{"category":"system","group":"interactive","section":"alert","presentation-model":"MediaWiki\\Extension\\OATHAuth\\Notifications\\TwoFactorRequiredPresentationModel","canNotifyAgent":true,"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"]}}},"OATHAuth":{"Modules":{"recoverycodes":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Module\\RecoveryCodes","services":["OATHAuth.UserRepository","OATHAuth.Logger","MainConfig"]},"totp":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Module\\TOTP","services":["OATHAuth.UserRepository","OATHAuth.ModuleRegistry","OATHAuth.Logger"]},"webauthn":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Module\\WebAuthn","services":["OATHAuth.UserRepository","OATHAuth.ModuleRegistry","OATHAuth.Logger"]}}}},"AuthManagerAutoConfig":{"primaryauth":{"ReauthPrimaryAuthenticationProvider":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Auth\\ReauthPrimaryAuthenticationProvider","services":["OATHAuth.UserRepository","OATHAuth.ModuleRegistry"],"sort":40},"PasskeyPrimaryAuthenticationProvider":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Auth\\PasskeyPrimaryAuthenticationProvider","services":["OATHAuth.WebAuthnAuthenticator","OATHAuth.UserRepository","OATHAuth.Logger","UserFactory"],"sort":50}},"secondaryauth":{"OATHSecondaryAuthenticationProvider":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Auth\\SecondaryAuthenticationProvider","services":["OATHAuth.Logger","OATHAuth.ModuleRegistry","OATHAuth.UserRepository","HookContainer","UserNameUtils"],"sort":50}}},"ServiceWiringFiles":["ServiceWiring.php"],"ExtensionMessagesFiles":{"OATHAuthAlias":"OATHAuth.alias.php"},"Hooks":{"AuthChangeFormFields":"main","BeforePageDisplay":"main","GetPreferences":"main","LoadExtensionSchemaUpdates":"updater","ReadPrivateUserRequirementsCondition":"main","UserModifyCreateAccountEmail":"main","UserRequirementsCondition":"main","UnitTestsAfterDatabaseSetup":"test","UnitTestsBeforeDatabaseTeardown":"test"},"HookHandlers":{"main":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Hook\\HookHandler","services":["OATHAuth.UserRepository","OATHAuth.ModuleRegistry","OATHAuth.Logger","OATHAuth.ExpiringRecoveryCodeGenerator","PermissionManager","MainConfig"]},"updater":{"class":"MediaWiki\\Extension\\OATHAuth\\Hook\\UpdateTables"},"test":{"class":"MediaWiki\\Extension\\OATHAuth\\Hook\\TestHandler","services":["DBLoadBalancer"]}},"callback":"MediaWiki\\Extension\\OATHAuth\\Hook\\RegistrationCallback::onRegistration","config":{"OATHAuthWindowRadius":{"value":4,"description":"Number of token windows on either side of current time to be considered valid for authentication."},"OATHAuthAccountPrefix":{"value":false,"description":"Prefix for user account shown during enrollment."},"OATHSecretKey":{"value":false,"description":"A secret key value for encrypting OATH-related data which should be SODIUM_CRYPTO_SECRETBOX_KEYBYTES hexadecimal bytes (64 chars) in length. This variable is currently considered immutable. Do not publicly set this value."},"OATHRecoveryCodesCount":{"value":10,"description":"The default amount of recovery codes to generate for a given user. Should be less than OATHMaxRecoveryCodesCount."},"OATHMaxRecoveryCodesCount":{"value":100,"description":"The maximum number of recovery codes that a user can have. Both permanent and temporary codes are counted for this limit."},"OATHAdditionalRecoveryCodesValidityDays":{"value":7,"description":"Number of days for which codes generated on Special:Recover2FAForUser will be valid."},"OATHInitialRecoveryCodesValidityDays":{"value":30,"description":"Number of days for which initial recovery codes will be valid."},"OATHMaxKeysPerUser":{"value":25,"description":"Maximum amount of OATHAuth devices allowed per user."},"OATH2FARequiredGroupRemovalPages":{"value":[],"description":"An array of page names, where user can ask to have themselves removed from groups that require 2FA (keyed by the group name). The pages will be linked in the notice about 2FA being required for user. If there's no entry for the relevant group, key '*' will be used."},"OATHPasswordlessLogin":{"value":false,"description":"Allow passwordless login with passkeys."},"WebAuthnRelyingPartyName":{"value":null,"description":"Configures relying party name. If not defined, this defaults to $wgSitename."},"WebAuthnRelyingPartyID":{"value":null,"description":"Configures relying party ID. If not defined, this defaults to $wgServer."},"WebAuthnNewCredsDisabled":{"value":false,"description":"If true, new credentials cannot be added, see T354701."},"OATHAuthEnforce2FAForAll":{"value":false,"description":"Actually enforce 2FA for all users, along with appropriate $wgRestrictedGroups config."}},"QUnitTestModule":{"localBasePath":"tests\/qunit\/","remoteExtPath":"OATHAuth\/tests\/qunit\/","scripts":["ext.webauthn.passwordlessLogin.test.js"],"dependencies":["ext.webauthn.passwordlessLogin"]},"SpecialPages":{"DisableOATHForUser":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Special\\DisableOATHForUser","services":["OATHAuth.UserRepository","UserFactory","CentralIdLookup","ExtensionRegistry"]},"OATHManage":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Special\\OATHManage","services":["OATHAuth.UserRepository","OATHAuth.ModuleRegistry","OATHAuth.Mandatory2FAChecker","AuthManager","UserGroupManager"]},"Recover2FAForUser":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Special\\Recover2FAForUser","services":["OATHAuth.ExpiringRecoveryCodeGenerator","LinkRenderer","OATHAuth.UserRepository","UserFactory"]},"VerifyOATHForUser":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Special\\VerifyOATHForUser","services":["OATHAuth.UserRepository","UserFactory","CentralIdLookup","ExtensionRegistry"]}},"AvailableRights":["oathauth-enable","oathauth-disable-for-user","oathauth-recover-for-user","oathauth-verify-user","oathauth-view-log"],"GroupPermissions":{"*":{"oathauth-disable-for-user":false,"oathauth-recover-for-user":false,"oathauth-view-log":false},"user":{"oathauth-enable":true},"sysop":{"oathauth-disable-for-user":true,"oathauth-recover-for-user":true,"oathauth-verify-user":true,"oathauth-view-log":true}},"GrantPermissions":{"oath":{"oathauth-verify-user":true}},"GrantPermissionGroups":{"oath":"authentication"},"GrantRiskGroups":{"oath":"internal"},"APIModules":{"webauthn":{"class":"\\MediaWiki\\Extension\\OATHAuth\\Api\\ApiWebAuthn","services":["AuthManager","OATHAuth.ModuleRegistry","OATHAuth.UserRepository","OATHAuth.WebAuthnAuthenticator"]}},"RateLimits":{"badoath":{"&can-bypass":false,"user":[10,60],"user-global":[10,60],"ip-all":[20,60]},"badoath-long":{"&can-bypass":false,"user":[20,600],"user-global":[20,600],"ip-all":[40,600]},"disableoath":{"&can-bypass":false,"user":[5,60],"user-global":[5,60]},"recover-2fa":{"&can-bypass":false,"user":[5,60],"user-global":[5,60]},"verify-2fa":{"&can-bypass":false,"user":[5,60],"user-global":[5,60]}},"LogTypes":["oath"],"LogNames":{"oath":"oath-log-name"},"LogHeaders":{"oath":"oath-log-header"},"LogActionsHandlers":{"oath\/*":"MediaWiki\\Logging\\LogFormatter"},"LogRestrictions":{"oath":"oathauth-view-log"},"ActionFilteredLogs":{"oath":{"verify":["verify"],"disable-other":["disable-other"],"recover":["recover"]}},"DatabaseVirtualDomains":["virtual-oathauth"],"repository":"https:\/\/gerrit.wikimedia.org\/r\/mediawiki\/extensions\/OATHAuth"}}