Jump to content
MediaWiki

Extension:OpenID Connect

From mediawiki.org
This page is a translated version of the page Extension:OpenID Connect and the translation is 100% complete.
Toto rozšíření vyžaduje, aby bylo nejprve nainstalováno rozšíření PluggableAuth .
Příručka k rozšířením MediaWiki
OpenID Connect
Stav rozšíření: stabilní
Implementace Identita uživatele
Popis Rozšiřuje rozšíření PluggableAuth o ověřování pomocí OpenID Connect.
Autoři Cindy Cicalese (cindy.cicalese diskuse )
Nejnovější verze 8.3.0 (2025年02月23日)
Zásady kompatibility Vydání snímků současně s MediaWiki. Hlavní vývojová větev není zpětně kompatibilní.
Změny v databázi Ano
Tabulky openid_connect
Licence Licence MIT
Stáhnout
  • $wgPluggableAuth_Config
  • $wgOpenIDConnect_UseRealNameAsUserName
  • $wgOpenIDConnect_UseEmailNameAsUserName
  • $wgOpenIDConnect_MigrateUsers
  • $wgOpenIDConnect_ForceLogout
Přeložte rozšíření OpenID Connect, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření OpenID Connect rozšiřuje rozšíření PluggableAuth o ověřování pomocí OpenID Connect.

Zvláštní poděkování patří jumbojett za OpenID Connect PHP knihovnu použitou tímto rozšířením.

Instalace

Předpoklady

Toto rozšíření vyžaduje nejprve instalaci PluggableAuth. Pokud aktualizujete z verze 4.x nebo nižší na verzi 6.x nebo vyšší, budete muset nejprve aktualizovat na verzi 5.x.

Rozšíření

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného OpenIDConnect ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:
    cdextensions/
    gitclonehttps://gerrit.wikimedia.org/r/mediawiki/extensions/OpenIDConnect
    
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'OpenIDConnect' );
    
  • Spusťte aktualizační skript , který automaticky provede všechny nezbytné databázové změny, jaké rozšíření vyžaduje.
  • Nainstalujte závislosti.
  • Vyžaduje nastavení v konfiguračním souboru.
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

Závislosti

Rozšíření OpenIDConnect vyžaduje rozšíření CURL PHP a knihovnu OpenID Connect PHP. Pokud postupujete podle standardní instalace a stáhli jste si archiv z mediawiki.org, závislosti byly sbaleny a není vyžadována žádná další akce.

Pokud používáte postup pro vývoj/přispěvatelskou instalaci pomocí Gitu, přidejte řádek "extensions/OpenIDConnect/composer.json" do souboru composer.local.json v kořenovém adresáři vaší wiki, např.

{
"extra":{
"merge-plugin":{
"include":[
"extensions/OpenIDConnect/composer.json"
]
}
}
}

Pak spusťte composer update v kořenovém adresáři vaší wiki. Tím se nainstalují všechny závislosti (např. PHP knihovna jumbojett OpenID Connect).

Konfigurace

Parametry

Většina konfiguračních nastavení pro poskytovatele identity OpenID Connect je sdílena v souboru, který se nachází na adrese /.well-known/openid-configuration[1] v doméně poskytovatele. Toto rozšíření dotazuje tato nastavení za účelem zpracování ověřování. Kromě toho se níže uvedené konfigurační parametry používají ke konfiguraci rozšíření pro komunikaci s poskytovatelem identity dle potřeby.

Při konfiguraci poskytovatele identity se zobrazí výzva k zadání adresy URL pro přesměrování nebo adresy URL pro zpětné volání. Pro danou hodnotu použijte úplnou URL adresu stránky s hodnotou Special:PluggableAuthLogin.

$wgPluggableAuth_Config

Default value:: []

(viz Extension:PluggableAuth#Configuration)

Povinné pole polí určujících vydavatele OpenID Connect a jejich konfiguraci. Pole data v poli obsahuje pole s následujícími klíči:

providerURL Požadované URL adresa vydavatele („např." https://accounts.google.com/ pro Google, https://api.slack.com/ pro Slack), která se používá k nalezení výše uvedeného "známého" souboru (např. https://accounts.google.com/.well-known/openid-configuration pro Google)
clientID Požadované
clientsecret Požadované
proxy Volitelné URL
scope Volitelné řetězec nebo pole řetězců, které mají být předány vydavateli, výchozí hodnota je [ 'openid', 'profile', 'email' ]
preferred_username Volitelné preferovaný název atributu uživatelského jména od vydavatele, který se má použít, což znamená, že vydavatel poskytne atribut s tímto názvem, jehož hodnota bude preferovaným uživatelským jménem pro daného uživatele. Výchozí hodnota je řetězec 'preferred_username'. Pokud nechcete použít preferovaný atribut uživatelského jména, nastavte na prázdný řetězec.
verifyHost Volitelné booleovská hodnota pro povolení/zakázání ověřování hostitele; výchozí: true
verifyPeer Volitelné boolean pro povolení/zakázání ověřování peerů SSL; výchozí: true
authparam Volitelné asociativní pole autentizačních parametrů, které mají být předány vydavateli
providerConfig Volitelné asociativní pole používané ke změně koncových bodů a dalších atributů poskytovatele
issuerValidator Volitelné boolean function that takes one string parameter, the issuer, and returns whether the issuer is valid (version 7.1.0+)
preferredUsernameProcessor Volitelné callable that takes two parameters (preferred username string and the array of attributes returned from the identity provider) and returns a possibly modified preferred username to use for a new user (version 7.2.0+)
realnameProcessor Volitelné callable that takes two parameters (real name string and the array of attributes returned from the identity provider) and returns a possibly modified real name to use for a new user (version 7.2.0+)
emailProcessor Volitelné callable that takes two parameters (email address string and the array of attributes returned from the identity provider) and returns a possibly modified email address to use for a new user (version 7.2.0+)
useRandomUsernames Volitelné boolean to indicate whether to generate a random unique identifier to use for the username of a new user if no preferred username is provided (rather than the default of using User followed by a unique integer) (version 8.0.0+)
wellKnownConfigParameters Volitelné array of additional string parameters to use to construct the well-known config URL (default []); e.g. 'wellKnownConfigParameters' => ['appid' => 'clientIDvalue'] (version 8.2.0+)
codeChallengeMethod Volitelné string to provide to the identity provider to set the code challenge method; used to support PKCE when set to "S256" (version 8.2.0+)
authMethods Volitelné array of strings to specify the auth methods to use when communicating with the identity provider (default ['client_secret_basic']); e.g. 'authMethods' => ['client_secret_basic', 'client_secret_jwt', 'private_key_jwt']; note that private_key_jwt requires that privateKeyJwtGenerator must also be set (version 8.2.0+)
privateKeyJwtGenerator Volitelné string parameter that takes one string parameter, the token endpoint, and returns a JWT; for use with authMethod private_key_jwt (version 8.2.0+)

$wgOpenIDConnect_UseRealNameAsUserName

Default value:: false

Pokud je v databázi vytvářen nový uživatel a vydavatel neposkytl žádné preferované uživatelské jméno nebo byl preferred_username nastaven na hodnotu null nebo na prázdný řetězec, hodnota true pro tento příznak znamená, že jako uživatelské jméno nového uživatele by mělo být použito skutečné jméno uživatele, pokud bylo vydavatelem poskytnuto. Pokud je nastaveno na true a vydavatel neposkytl žádné preferované uživatelské jméno, bude jako uživatelské jméno pro prvního uživatele použit literál "User" a všichni další uživatelé budou používat literál „Uživatel" následovaný číslem. Např. "User", "User1", "User2" atd. Stejné pojmenování nastane, pokud je tento parametr nastaven na false.

$wgOpenIDConnect_UseEmailNameAsUserName

Default value:: false

Pokud je v databázi vytvářen nový uživatel a vydavatel neposkytl žádné preferované uživatelské jméno, nebo byl preferred_username nastaven na hodnotu null či na prázdný řetězec a buď vydavatel neposkytl žádné skutečné jméno, nebo byl $wgOpenIDConnect_UseRealNameAsUserName nedefinovaný nebo nastavený na false, hodnota true pro tento příznak znamená, že část jména z e-mailové adresy uživatele, pokud ji vydavatel poskytl, by měla být použita jako uživatelské jméno nového uživatele. Tento parametr nelze nastavit na hodnotu true současně s nastavením $wgOpenIDConnect_UseRealNameAsUserName na hodnotu true. V tomto případě bude toto nastavení ignorováno.

$wgOpenIDConnect_MigrateUsersByUserName

Default value:: false

Pokud v databázi již existuje uživatel se stejným uživatelským jménem jako ověřený uživatel a má hodnoty null pro subjekt a vydavatele, použijte tohoto uživatele a nastavte subjekt a vydavatele v databázi na hodnoty ověřeného uživatele. To je užitečné, pokud wiki dříve používala jiný mechanismus ověřování. Pokud ani tento parametr, ani $wgOpenIDConnect_MigrateUsersByEmail nejsou nastaveny na true, použijí se nastavení pro vytváření uživatelů, jak je popsáno výše.

$wgOpenIDConnect_MigrateUsersByEmail

Default value:: false

Pokud v databázi již existuje uživatel se stejnou e-mailovou adresou jako ověřený uživatel a má pro předmět a vydavatele hodnoty null, použijte tohoto uživatele a nastavte v databázi předmět a vydavatele na hodnoty ověřeného uživatele. To je užitečné, pokud wiki dříve používala jiný mechanismus ověřování. Pokud ani tento parametr, ani $wgOpenIDConnect_MigrateUsersByUserName nejsou nastaveny na true, použijí se nastavení pro vytváření uživatelů, jak je popsáno výše.

$wgOpenIDConnect_ForceReauth

Default value:: false

Když se uživatel odhlásí z wiki, vynutit opětovné ověření u poskytovatele identity při dalším přihlášení, i když se od poskytovatele identity neodhlásil.

$wgOpenIDConnect_SingleLogout

Default value:: false

Když se uživatel odhlásí z wiki, odhlásí se také od poskytovatele identity. Toto není podporováno všemi poskytovateli identity (např. Google).

$wgOpenIDConnect_PreferredUsernameProcessor

Default value:: null

Callable that takes two parameters (preferred username string and the array of attributes returned from the identity provider) and returns a possibly modified preferred username to use for a new user; this value is only used if no value is provided for preferredUsernameProcessor in the config data section (version 7.2.0+)

$wgOpenIDConnect_RealNameProcessor

Default value:: null

Callable that takes two parameters (real name string and the array of attributes returned from the identity provider) and returns a possibly modified real name to use for a new user; this value is only used if no value is provided for realnameProcessor in the config data section (version 7.2.0+)

$wgOpenIDConnect_EmailProcessor

Default value:: null

Callable that takes two parameters (email address string and the array of attributes returned from the identity provider) and returns a possibly modified email address to use for a new user; this value is only used if no value is provided for emailProcessor in the config data section (version 7.2.0+)

$wgOpenIDConnect_UseRandomUsernames

Default value:: false

Boolean to indicate whether to generate a random unique identifier to use for the username of a new user if no preferred username is provided (rather than the default of using User followed by a unique integer) and no value is provided for useRandomUsernames in the config data section (version 8.0.0+)


Připojení k jednomu vydavateli

Jednoduchý příklad konfigurace $wgPluggableAuth_Config pro jednoho emitenta je následující:

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://id.mycompany_abc.com/connect/',
 'clientID' => '.....',
 'clientsecret' => '.....'
 ]
];

Připojení k více emitentům

Příklad konfigurace $wgPluggableAuth_Config pro více emitentů je následující:

$wgPluggableAuth_Config["My Company's Connect Server"] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://id.mycompany_abc.com/connect/',
 'clientID' => '.....',
 'clientsecret' => '.....'
 ]
];
$wgPluggableAuth_Config["Partner Company's Connect Server"] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://id.partnercompany_def.com/connect/',
 'clientID' => '.....',
 'clientsecret' => '.....'
 ]
];

Od verze 7.0.0 je synchronizace skupin možná pomocí funkce poskytované rozšířením PluggableAuth. Informace o konfiguraci synchronizace skupin naleznete v dokumentaci k PluggableAuth.

Odhlášení ze zadního kanálu

As of version 8.3.0, backchannel logout is supported. In order to use it, you must configure your identity provider for backchannel logout, pointing to the rest.php/pluggableauth/v1/logout endpoint on your wiki.

Příklady

Google

Konfigurace vydavatele

  1. Pomocí konzole pro vývojáře Google [1] vytvořte projekt.
  2. Klikněte na projekt, klikněte na hamburgerové menu (tři vodorovné čáry vlevo nahoře) a v menu klikněte na APIs & Services -> Credentials.
  3. Klikněte na tlačítko Create credentials -> OAuth client ID a vyberte Web application. Vyplňte informace na obrazovce souhlasu a uložte.
  4. Zadejte URI přesměrování v Authorized redirect URIs[2]
  5. Klikněte na Create Client ID.
  6. Všimněte si přiřazených hodnot Client ID a Client Secret.


Konfigurace rozšíření

Vydavatel Google je nyní nakonfigurován. Přidejte odpovídající konfiguraci do souboru LocalSettings.php a vyplňte pole clientID a clientsecret výše uvedenými hodnotami.

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://accounts.google.com',
 'clientID' => '.....',
 'clientsecret' => '.....',
 ]
];

Můžete také přiřadit jiné hodnoty, například proxy a authparam.

Azure Active Directory

Azure Active Directory je nově Microsoft Entra ID.

Microsoft Entra ID

Entra ID je nový název služby, dříve nazývané "Azure Active Directory".

Konfigurace vydavatele

  1. V administračním centru Entra přejděte na 'Identity', poté na 'Applications' a nakonec na 'App Registrations'.
  2. Zaregistrujte novou aplikaci
    1. Zadejte jméno
    2. Pravděpodobně uveďte 'Accounts in this org directory only'
    3. Zadejte URI přesměrování:[2]
      https://[URLofWiki]/wiki/Special:PluggableAuthLogin
      
  3. V nové aplikaci přejděte na 'Certificates and secrets' a vytvořte nový tajný klíč klienta.

Konfigurace rozšíření

Pomocí hodnoty 'Application (client) ID', ID adresáře (nájemce) a tajného klíče z aplikace naplňte soubor "LocalSettings.php":

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://login.microsoftonline.com/[tenantID]/v2.0/',
 'clientID' => '[Application (Client) ID]',
 'clientsecret' => '[Secret from Certs and Secrets]'
 ]
];
$wgOpenIDConnect_UseRealNameAsUserName = true;
In the provider URL, you don't have to use the tenant ID if you don't remember it. Instead, you can use your onmicrosoft.com tenant subdomain. For instance, https://login.microsoftonline.com/mytenant.onmicrosoft.com/v2.0/.

When using the common endpoint for Microsoft login, the issuer URL provided by the well-known endpoint contains a placeholder for the tenant ID, causing verification of JWT claims to fail. In this case, you can use an issuer validator to fix this. For example, you could provide an issuer validator that always returns true:

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://login.microsoftonline.com/common/v2.0/',
 'clientID' => '[Application (Client) ID]',
 'clientsecret' => '[Secret from Certs and Secrets]',
 'issuerValidator' => fn( $iss ) => true,
 ]
];

Konfigurace rozšíření s mapováním skupin

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 from above example
 ],
	'groupsyncs' => [
		[
			'type' => 'mapped',
			'map' => [
				'sysop' => ['groups' => '8d1cc10c-3e95-4637-941d-0c1237352e85'],
				'interface-admin' => ['groups' => 'See where to find Object ID below'] 
			]
		]
	]
];
  1. In Azure, go to `Manage` -> `Token configuration`. Click `Add group claims`, select "Groups assigned to the application (recommended for large enterprise companies to avoid exceeding the limit on the number of groups a token can emit)".
  2. Find app in Enterprise applications, and go to `Manage` -> `Users and groups`. Add group.
  3. You can now click on the group and copy the `Object ID` and paste above.
  4. You need to relogin to take effect.

Keycloak

Hlavní Keycloak.

Konfigurace vydavatele

Předpoklady:

  • Název vašeho realmu v Keycloaku je 'acme
  • Vaše URL adresa a port pro Keycloak je https://keycloak.local:8080
  • Vaše ID klienta Keycloak je nastaveno na mediawiki
  • Váš automaticky vygenerovaný tajný kód klienta je 12345

Konfigurace rozšíření

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://keycloak.local:8080/realms/acme',
 'clientID' => 'mediawiki',
 'clientsecret' => '12345'
 ]
];

Řešení problémů

  • Pokud narazíte na problém, například s kódem "The provider {$param} could not be fetched. Make sure your provider has a well known configuration available.", váš URI[3] je nesprávný. Správnost můžete otestovat voláním funkce https://keycloak.local:8080/realms/acme/.well-known/openid-configuration ve vašem prohlížeči. Pokud dostanete zpět dlouhý JSON, cesta je správná.
    • Dalším způsobem, jak ověřit hodnotu 'providerURL', je porovnat ji s hodnotou 'Redirect URI' v bodě Keycloak>Identity Providers>keycloak-oidc, tj.: https://keycloak.local:8080/realms/acme/broker/keycloak-oidc/endpoint. Pro 'providerURL' potřebujete část až o úroveň níže, než jsou realmy.
  • Ujistěte se, že je URI přesměrování poskytovaný tímto pluginem OIDC[4] nastaveno platné pro váš keycloak-server v acme -> Klienti -> mediawiki -> Nastavení -> platné URI přesměrování . Pro testovací účely můžete přidat zástupný znak "*".

Okta

Konfigurace vydavatele

Nastavení aplikace Okta OIDC

Povolené typy grantů: (všechny)
URI pro přesměrování přihlášení: úplná URL adresa na Special:PluggableAuthLogin, např. https://www.example.com/wiki/index.php/Special:PluggableAuthLogin
Postup přihlášení: "Redirect to app to initiate login (OIDC compliant)"
Inicializační URI přihlášení: úplná URL adresa pro Special:UserLogin, např. https://www.example.com/wiki/index.php/Special:UserLogin

Konfigurace rozšíření

Pro komunikaci s Okta je nutné zadat rozsahy openid, profilu a e-mailu. Pokud vynecháte příslušné rozsahy, Okta ráda ověří vaše uživatele, ale nevrátí žádné užitečné deklarace identity.

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://your-okta-org.okta.com',
 'clientID' => '(paste the client ID Okta assigned your new app here)',
 'clientsecret' => '(paste the client secret Okta assigned your new app here)'
 ]
 ];

Automatické vytváření uživatelů

Pokud chcete využít automatického vytváření uživatelů v MediaWiki (např. $wgGroupPermissions['*']['autocreateaccount'] = true;), mějte na paměti, že deklarace preferred_username v Oktě má formát e-mailové adresy.

Pokud nechcete, aby vaši uživatelé měli ve svých uživatelských jménech znak @ (MediaWiki to ve výchozím nastavení zakazuje), budete muset zadat alternativní deklaraci identity pomocí klíče 'preferred_username' ve vašem souboru $wgPluggableAuth_Config.

Povolení znaku @ v uživatelských jménech může narušit kompatibilitu vaší wiki s jinými platformami (pokud se na ni spoléháte). Chcete-li povolit použití znaku @, stačí v proměnné LocalSettings.php nastavit $wgInvalidUsernameCharacters = ' '; a $wgUserrightsInterwikiDelimiter = '#';.

Poznámky

V době napsání tohoto příkladu existovala v knihovně OpenID Connect PHP chyba, která způsobuje, že přísnější poskytovatelé OIDC, jako je Okta, odmítají určité požadavky.

Toto by mělo být vyřešeno v budoucnu, až bude knihovna aktualizována tak, aby zahrnovala tuto změnu. Řešením je přidat jeden řádek kódu do $MEDIAWIKI_ROOT/extensions/OpenIDConnect/vendor/jumbojett/openid-connect-php/src/OpenIDConnectClient.php takto: hned dole: unset($token_params['client_secret']);

jednoduše přidejte: unset($token_params['client_id']); # Více vám řekneː https://github.com/jumbojett/OpenID-Connect-PHP/pull/208/commits/dd44c1ca7e45d35dcd8f32ea503b545149bc6562 (toto bylo opraveno ve verzi 0.9.8)

Chcete-li ověřit uživatele v Okta, musíte nejprve ve své organizaci Okta vytvořit novou aplikaci OIDC a přiřadit ji příslušným uživatelům/skupinám atd.

Gitlab

Konfigurace vydavatele

  • Přihlášení do administrátorské sekce Gitlabu
  • Přejděte do Aplikace -> Nová aplikace
    • Name: MediaWiki
    • Redirect URI: <wiki server>/wiki/Special:PluggableAuthLogin
    • Trusted: yes
    • Confidential: yes
    • Scopes: openid, profile, email
  • Odeslat
  • Zkopírovat Application ID a Secret do LocalSettings.php

Konfigurace rozšíření

V "LocalSettings.php"

// Rozšíření PluggableAuth
wfLoadExtension( 'PluggableAuth' );
$wgPluggableAuth_EnableLocalLogin = true; // nastaveno na hodnotu false pro deaktivaci lokálních přihlášení, pokud je to nutné
// Rozšíření OpenIDConnect
wfLoadExtension( 'OpenIDConnect' );
$wgPluggableAuth_Config['Login with your Gitlab Account'] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => '...', // '''Přidejte si sem svůj gitlab server (hlavní stránka)'''
 'clientID' => '...', // '''Sem vložte ID aplikace Gitlab!'''
 'clientsecret' => '...', // '''Sem vložte tajný kód Gitlabu!'''
 // Alternativní 'nickname' (přezdívka)
 // Alternativní 'název'
 'preferred_username' => 'nickname'
 ]
];

Více informací o dokumentaci Gitlabu naleznete na webu OpenID Connect Provider.

Amazon Cognito

Amazon Cognito je služba pro identifikaci uživatelů od AWS[5] .

Konfigurace vydavatele

Předpoklady:

  • Vaše ID uživatelského poolu Amazon Cognito je us-west-2_XdLg34nAA
  • Váš region AWS je us-west-2
  • Vaše ID klienta je nastaveno na mediawiki
  • Váš automaticky vygenerovaný tajný kód klienta je 12345

Konfigurace rozšíření

$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://cognito-idp.us-west-2.amazonaws.com/us-west-2_XdLg34nAA',
 'clientID' => 'mediawiki',
 'clientsecret' => '12345'
 ]
];

Podrobné pokyny k konfiguraci Amazon Cognito pro tento případ použití naleznete na adrese https://medium.com/@robert.broeckelmann/openid-connect-authorization-code-flow-with-aws-cognito-246997abd11a.

NextCloud

Stránka Nextcloud na Wikipedii

Konfigurace vydavatele

Předpoklady:

  • Spuštění Nextcloudu verze 24 nebo Nextcloud All-In-One v3.0.0
  • Nextcloud má nainstalovanou aplikaci "OIDC Identity Provider v0.2.6". https://github.com/H2CK/oidc
  • Váš nextcloud běží z domény 'my.nextcloud.com
  • Veřejná URL adresa https://my.nextcloud.com/.well-known/openid-configuration je přesměrována na <your internal nextcloud server>/index.php/apps/oidc/openid-configuration např. pomocí nginxu nebo jiného reverzního proxy serveru.
  • Prostřednictvím administrátorského účtu nextcloud v části Nastavení > Zabezpečení > "Klienti Open ID Connect" přidáte klienta s následujícími údaji
    • Název: wiki
    • URI pro přesměrování: The full URL to Special:PluggableAuthLogin, e.g. https://www.example.com/wiki/index.php/Special:PluggableAuthLogin (Note: if your wiki's default language isn't english, Special will be different!)
    • Podepisovací algoritmus: RS256
    • Zadejte: confidential Po kliknutí na tlačítko "přidat" se zobrazí řetězec Client Identifier a řetězec Secret. Zadejte tyto hodnoty do níže uvedených polí LocalSettings.php pro myGeneratedID a myGeneratedSecret.


Konfigurace rozšíření

wfLoadExtension( 'PluggableAuth' );
$wgGroupPermissions['*']['autocreateaccount'] = true;
$wgPluggableAuth_EnableAutoLogin = true; // Uživatel nyní nemá tlačítko 'přihlásit se'/'odhlásit se'.
wfLoadExtension( 'OpenIDConnect' );
$wgPluggableAuth_Config[] = [
 'plugin' => 'OpenIDConnect',
 'data' => [
 'providerURL' => 'https://my.nextcloud.com',
 'clientID' => 'myGeneratedID',
 'clientsecret' => 'myGeneratedSecret'
 ]
];


Poznámky k vydání

Version 8.3.0
  • Add support for backchannel logout (T327147)
Version 8.2.1
  • Fixed case insensitive email comparison for email migration
Version 8.2.0
  • Added support for specifying parameters to the well known config (T383498)
  • Added support for code challenge/PKCE (T366023)
  • Added ability to set the token endpoint auth (T378905)
Version 8.1.0
Version 8.0.2
  • Use case insensitive email comparison for email migration
  • Improved random username generation
Version 8.0.1
Version 8.0.0
  • Allow multiple identity providers to map to a single user (T361877)
Version 7.2.0
Version 7.1.0
  • Support custom issuer validator (T360249)
Verze 7.0.2
  • Použití ID tokenu k získání deklarací identity během ověřování (T348931)
Verze 7.0.1
  • Povolit atribut konfigurace preferred_username na hodnotu null nebo prázdný (T339311)
Verze 7.0.0
  • Vyrobeno kompatibilní s PluggableAuth 7.0.0
  • Přidat volitelné jednorázové odhlášení ($wgOpenIDConnect_SingleLogout)
  • Nahraďte ForceLogout (který byl nefunkční) funkcí ForceReauth ($wgOpenIDConnect_ForceReauth)
  • Přidat funkci pro získání přístupového tokenu s obnovovacím tokenem
  • Použijte nový rámec pro populaci skupin PluggableAuth. Podporuje načítání atributů včetně skupin
  • Vylepšení kódu
  • Opravy chyb:
    • T307353: Podmínka dotazu v migraci uživatelského jména je nesprávná.
Verze 6.2
  • Aktualizujte knihovnu jumbojett/openid-connect-php na verzi 0.9.10
  • Nahradit zastaralý User::idFromName
Verze 6.1
  • Ujistěte se, že háček pro naplnění skupiny běží pouze pro instance pluginu OpenID Connect.
Verze 6.0
  • Aktualizováno pro kompatibilitu s PluggableAuth verzí 6.0
Verze 5.4
  • Aktualizováno jumbojett/openid-connect-php na verzi 0.9.1
  • Opravena chyba při pokusu o ověření pomocí Okta, kdy se v požadavku odesílaly další parametry, což způsobovalo selhání požadavku.
Verze 5.3
  • Opravena chyba s migrací malých počátečních uživatelských jmen (T249630)
Verze 5.2
  • Přidány volitelné možnosti konfigurace pro zakázání ověřování názvů hostitelů a certifikátů pro použití ve vývojových prostředích s certifikáty vydanými samostatně.
Verze 5.1
  • Přidáno generování úplné adresy URL pro přesměrování, aby knihovna OpenID Connect v PHP nemusela hádat, což občas neměla dostatek informací k přesnému provedení.
Verze 5.0
  • Sloupce s předmětem a vydavatelem byly přesunuty z tabulky user do tabulky openid_connect (vyžaduje aktualizaci databáze)
  • Přidána podpora pro Postgres
Verze 4.1
  • Přidán jmenný prostor pro třídu knihovny
Verze 4.0
  • Přidána volitelná chybová zpráva k authenticate()
  • Zvýšené číslo verze pro synchronizaci s rozšířeními PluggableAuth a SimpleSAMLphp
Verze 2.3
  • Opravená implementace whitelistu
  • Změní příznaky migrace tak, aby umožňovaly migraci podle e-mailové adresy kromě migrace podle uživatelského jména.
Verze 2.2
  • Opravy související s aktualizací PluggableAuth MediaWIki na verzi 1.27
  • Konvence kódování polí
Verze 2.1
  • Aktualizace správy relací MediaWiki 1.27
  • Přidány výchozí hodnoty konfiguračních proměnných do extension.json
Verze 2.0
  • Aktualizovaná registrace rozšíření
  • Změněny konfigurační proměnné pro použití prefixu "wg"
  • Přidáno composer.json pro získání knihovny OpenID Connect pomocí composeru
Verze 1.2
  • Přidána možnost zadat autorizační parametry a přidána podpora pro prefixy tabulek
Verze 1.1
  • Přidána podpora pro Google
Verze 1.0
  • Počáteční verze


Známé problémy

  • Stránky wikin, které používají URL adresy ve tvaru https://example.org/w/index.php?title=Page_title (tj. mají název stránky zadaný jako parametr dotazu), nebudou správně přesměrovány k dokončení procesu ověřování. URL adresy musí mít místo toho tvar https://example.org/w/index.php/Page_title, čehož lze dosáhnout použitím short URLs nebo odpovídajícím nastavením $wgArticlePath .
  • Toto rozšíření nemusí s kódem $wgMainCacheType = CACHE_ACCEL; fungovat správně. V tomto případě je také nutné nastavit $wgSessionCacheType = CACHE_DB; (viz T147161).
  • Toto rozšíření nefunguje na nestandardních portech, pokud ručně neaktualizujete podkladového klienta OpenID Connect, viz: jumbojett/OpenID-Connect-PHP issue 58 na GitHubu. Tento problém se vyskytuje i při připojení k jinému webovému serveru než IIS.
  • Při spuštění údržbového skriptu createAndPromote.php je nutné zakázat obě rozšíření PluggableAuth a OpenID Connect zakomentováním jejich volání wfLoadExtension().
  • Toto rozšíření nepodporuje vlastní známé koncové body. To znamená, že proces ověřování OpenID Connect v Azure Active Directory B2C momentálně není podporován.

Poznámky pod čarou

  1. openid.net: Žádost o konfiguraci poskytovatele OpenID
  2. 2.0 2.1 Upozorňujeme, že odkaz na autorizované URI přesměrování musí být lokalizovaný, např. pokud nastavíte jazyk instance vaší wiki na 'de' ($wgLanguageCode = 'de';), musíte zadat "https://[URLofWiki]/wiki/Spezial:PluggableAuthLogin". V případě vícebajtových znaků v URL zajistěte procentuální kódování, např. pro jazyk 'cz' je třeba zadat "https://[URLofWiki]/wiki/Speci%C3%A1ln%C3%AD:PluggableAuthLogin" atd.
  3. Uniform Resource Identifier (URI)
  4. OpenID Connect (OIDC)
  5. Amazon Web Services (AWS)
Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích: Toto není autoritativní seznam. Některé wiki farmy/hostitelé a/nebo balíčky mohou toto rozšíření obsahovat, i když zde nejsou uvedeny. Pro potvrzení se vždy obraťte na své wiki farmy/hostitele nebo balíček.

AltStyle によって変換されたページ (->オリジナル) /