Extension:OAuth
![]() 发行状态: 穩定版 |
|
---|---|
实现 | 用户身份 , 用户权限 , API |
描述 | Allow users to safely authorize another application ("consumer") to use the MediaWiki action API on their behalf. |
最新版本 | 1.1.0 (continuous updates) |
兼容性政策 | 快照跟随MediaWiki发布。 master分支不向后兼容。 |
MediaWiki | >= 1.41 |
数据库更改 | 是 |
Composer | mediawiki/oauth |
表 | oauth_accepted_consumer oauth_registered_consumer |
许可协议 | GNU通用公眾授權條款2.0或更新版本 |
下載 | |
帮助 | Help:OAuth |
|
|
|
|
|
|
季度下載量 | 133 (Ranked 66th) |
正在使用的公开wiki数 | 982 (Ranked 246th) |
前往translatewiki.net翻譯OAuth扩展 | |
Vagrant角色 | oauth |
問題 | 开启的任务 · 报告错误 |
The OAuth extension implements an OAuth server in MediaWiki that supports both the OAuth 1.0a and OAuth 2.0 protocol versions.
It allows third party developers to securely develop applications ("consumers"), to which users can give a limited set of permissions ("grants"), so that the application can use the MediaWiki action API on the user's behalf.
条件
- OAuth relies on the object cache for temporary tokens and sessions. This should work as long as cache configuration settings are sane. (Older versions required Memcached explicitly.)
- Currently, only MySQL and SQLite database backends are supported
- If the MediaWiki installation is private (i.e. users need to log in to have read access), Special:OAuth will need to be added to the white list.
安裝
- 下载文件,并将其放置在您
extensions/
文件夹中的OAuth
目录内。 - 只有從git安裝才运行Composer来安装PHP依赖,通过发行
composer install --no-dev
至扩展目录。 (参见任务T173141了解潜在问题。) - 将下列代码放置在您的LocalSettings.php 的底部:
wfLoadExtension( 'OAuth' );
- 运行更新脚本,它将自动创建此扩展必须依赖的数据库表。
- Configure the general parameters as required.
- Configure the user rights by putting them into the relevant groups in
$wgGroupPermissions
. 完成 – 在您的wiki上导航至Special:Version,以验证已成功安装扩展。
Vagrant安装:
- 如果使用Vagrant ,请通过
vagrant roles enable oauth --provision
安装
用户权限
权限 | 描述 |
---|---|
mwoauthproposeconsumer | 提议新的OAuth消费者 |
mwoauthupdateownconsumer | 更新您控制的OAuth消费者 |
mwoauthmanageconsumer | 管理OAuth消费者 |
mwoauthsuppress | 阻止OAuth消费者 |
mwoauthviewsuppressed | 查看已阻止的OAuth消费者 |
mwoauthviewprivate | 查看私有OAuth数据 |
mwoauthmanagemygrants | 管理OAuth功能 |
To assign a permission to some group, for example to sysops, you add following line to LocalSettings.php
:
$wgGroupPermissions['sysop']['mwoauthproposeconsumer'] = true;
配置
值名 | 默认值 | 描述 |
---|---|---|
$wgMWOAuthCentralWiki
|
false
|
Wiki ID of OAuth management wiki. On wiki farms, it makes sense to set this to a wiki that acts as a portal site, is dedicated to management, or just handles login/authentication. It can, however, be set to any wiki in the farm. For single-wiki sites or farms where each wiki manages consumers separately, it should be left as false .
|
$wgMWOAuthSharedUserIDs
|
false
|
(已弃用) Use $wgMWOAuthSharedUserSource instead
Whether shared global user IDs are stored in the oauth tables.
On wiki farms with a central authentication system (with integer user IDs) that share a single OAuth management wiki, this must be set to true.
If wikis have a central authentication system but have their own OAuth management, then this can be either |
$wgMWOAuthSharedUserSource
|
null
|
Central ID provider when sharing OAuth credentials over a wiki farm
Source of shared user IDs, if enabled. If CentralIdLookup is available, this is the $providerId for CentralIdLookup::factory(). Generally null would be what you want, to use the default provider. If that class is not available or the named provider is not found, this is passed to the OAuthGetUserNamesFromCentralIds, OAuthGetLocalUserFromCentralId, OAuthGetCentralIdFromLocalUser, OAuthGetCentralIdFromUserName hooks. This has no effect if $wgMWOAuthSharedUserIDs is set to false. |
$wgMWOAuthRequestExpirationAge
|
2592000 (30 days)
|
Seconds after which an idle request for a new Consumer is marked as "expired" |
$wgMWOAuthSecureTokenTransfer
|
true
|
Require SSL/TLS for returning Consumer and user secrets. This is required by RFC 5849, however if a wiki wants to use OAuth, but doesn't support SSL, this option makes this configuration possible. This should be set to true for most production settings. |
$wgOAuthSecretKey
|
$wgSecretKey
|
A secret configuration string (random 32-bit string generated using "base64_encode(random_bytes(32))") used to hmac the database-stored secret to produce the shared secrets for Consumers. This provides some protection against an attacker reading the values out of the consumer table (the attacker would also need $wgOAuthSecretKey to generate valid secrets), and some protection against potential weaknesses in the secret generation. If this string is compromised, the site should generate a new $wgOAuthSecretKey, which will invalidate Consumer authorizations that use HMAC/shared secret signatures instead of public/private keys. Consumers can regenerate their new shared secret by using the "Reset the secret key to a new value" option under Special:MWOAuthConsumerRegistration/update. If null, the value is set to $wgSecretKey. |
$wgOAuthGroupsToNotify
|
[]
|
The list of user groups which should be notified about new consumer proposals. Setting this will only have an effect when Echo is installed. |
$wgMWOauthDisabledApiModules
|
[]
|
List of API module classes to disable when OAuth is used for the request |
$wgMWOAuthReadOnly
|
false
|
Prevent write activity to the database. When this is set, consumers cannot be added or updated, and new authorizations are prohibited. Authorization headers for existing authorizations will continue to work. Useful for migrating database tables |
$wgMWOAuthSessionCacheType
|
$wgSessionCacheType
|
The storage mechanism for session data. If null, it defaults to $wgSessionCacheType. |
$wgOAuth2EnabledGrantTypes
|
[
"authorization_code",
"refresh_token",
"client_credentials"
]
|
List of OAuth2 grants that client applications can be allowed to use. Actual grants client application will be allowed to use can be any subset of grants listed here. Grants, other than the ones listed here, are considered legacy grants, and are not supported by this extension |
$wgOAuth2PrivateKey
|
""
|
Private key or a path to the private key used to sign OAuth2 JWT being transmitted. See the OAuth 2.0 Server documentation for how to generate the keys. |
$wgOAuth2PublicKey
|
""
|
Public key or a path to the public key used to verify OAuth2 resource requests. |
$wgOAuth2RequireCodeChallengeForPublicClients
|
true
|
Controls whether clients are required to send code challenges with OAuth2 requests. This only applies to non-confidential clients. |
$wgOAuth2GrantExpirationInterval
|
"PT1H" (1 hour)
|
Controls validity period for access tokens. Does not apply to owner-only clients, whose access tokens are always non-expiring. Accepts ISO 8601 durations or can be set to "infinity" or false for non-expiring tokens. |
$wgOAuth2RefreshTokenTTL
|
"PT1M" (1 minute)
|
Controls validity period for refresh tokens. Accepts ISO 8601 durations or can be set to "infinity" or false for non-expiring tokens. |
OAuth 2.0 REST endpoints
The following REST endpoints are provided for OAuth 2.0 interaction
Path | Description | Allowed parameters | Allowed method | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/oauth2/authorize | Used for retrieving authorization code when using authorization_code grant. |
|
GET | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/access_token | Used for requesting access tokens |
|
POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/resource/{{type}} | Used for retrieving protected resources using the access token issued previously.
Currently, two resource types can be retrieved using this endpoint, by replacing
|
No parameters are allowed, apart from the {{type}} parameter that is included in the path
|
GET/POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/client | Lists OAuth 1.0a or 2.0 clients for the logged-in user. Authentication can be achieved over CentralAuth or by including an access token in the authorization header.
|
|
GET | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/client/{client_key}/reset_secret | Resets a client secret. For owner-only clients, this endpoint also resets the access token.
|
|
POST | ||||||||||||||||||||||||||||||||||||||||||||||||||
/oauth2/client | Creates an OAuth 2.0 client.
|
|
POST |
Experimental REST endpoints
To enable the experimental REST endpoints, add the $wgRestAPIAdditionalRouteFiles configuration variable to your LocalSettings.php:
$wgRestAPIAdditionalRouteFiles[] = "$wgExtensionDirectory/OAuth/experimentalRoutes.json";
參見
- 扩展:双因素身份验证 - A similarly named extension which implements a second authentication factor using OATH-based one-time passwords.
- Extension:WSOAuth – A MediaWiki extension that lets your wiki delegate authentication to any OAuth provider using PluggableAuth, including a wiki that is running Extension:OAuth.
- oauthclient-php – A client library for OAuth consumers.
![]() | 此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.php和InitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。 |
![]() | 此扩展在以下wiki农场/托管网站和/或软件包中提供: 這不是一份權威名單。 即使某些wiki农场/托管网站和/或软件包未在这里列出,它们也可能提供此扩展。 请检查你的wiki农场/托管网站或软件包以确认提供情况。 |
- Stable extensions/zh
- User identity extensions/zh
- User rights extensions/zh
- API extensions/zh
- Extensions supporting Composer/zh
- GPL licensed extensions/zh
- Extensions in Wikimedia version control/zh
- Extensions which add rights/zh
- AbuseFilter-builder extensions/zh
- AbuseFilter-computeVariable extensions/zh
- AbuseFilter-generateUserVars extensions/zh
- ApiRsdServiceApis extensions/zh
- BeforeCreateEchoEvent extensions/zh
- ChangeTagCanCreate extensions/zh
- ChangeTagsListActive extensions/zh
- GetPreferences extensions/zh
- ListDefinedTags extensions/zh
- LoadExtensionSchemaUpdates extensions/zh
- LoginFormValidErrorMessages extensions/zh
- MergeAccountFromTo extensions/zh
- MessagesPreLoad extensions/zh
- SetupAfterCache extensions/zh
- SpecialPageAfterExecute extensions/zh
- SpecialPageBeforeFormDisplay extensions/zh
- SpecialPage initList extensions/zh
- TestCanonicalRedirect extensions/zh
- All extensions/zh
- Extensions requiring Composer with git/zh
- Extensions used on Wikimedia/zh
- Extensions included in Miraheze/zh
- Extensions included in MyWikis/zh
- Extensions included in wiki.gg/zh
- Extensions included in WikiForge/zh
- Extensions included in WikiTide/zh