# DiscourseSsoConsumer, un'estensione SSO per MediaWiki

**URL:** https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445
**Category:** Extras
**Created:** [8 Dicembre 2021, 4:14am UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445 "2021-12-08T04:14:32Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![mdoggydog](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@mdoggydog](https://meta.discourse.org/u/mdoggydog)
#### Post date: [8 Dicembre 2021, 4:14am UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/1 "2021-12-08T04:14:32Z")

</div>

`DiscourseSsoConsumer` è un’estensione MediaWiki che consente a un sito MW di autenticare gli utenti tramite l’API del provider [Discourse Connect](https://meta.discourse.org/t/13045?silent=true) (ovvero, gli utenti digitano le loro password in Discourse). Rilasciata originariamente un anno fa, la versione 2.0.0 è stata rilasciata ieri. Penso che sia ora di dare a questa estensione un proprio argomento qui in modo che sia più facile da trovare (rispetto al post originale solitario nell’argomento SSO Provider: [Use Discourse as an identity provider (SSO, DiscourseConnect) - #104 by mdoggydog](https://meta.discourse.org/t/using-discourse-as-an-identity-provider-sso-discourseconnect/32974/104?u=mdoggydog)).

> **[GitHub - centertap/DiscourseSsoConsumer: A MediaWiki extension that enables a MediaWiki...](https://github.com/centertap/DiscourseSsoConsumer/)**
>
> A MediaWiki extension that enables a MediaWiki site to authenticate users via the SSO provider of a Discourse site.

Si installa tramite `composer`. Le istruzioni di installazione/configurazione si trovano nel [README](https://github.com/centertap/DiscourseSsoConsumer/blob/main/README.md).

---

<div class="post-metadata">

### Author: ![Paracelsus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/paracelsus/32/164912_2.png) [@Paracelsus](https://meta.discourse.org/u/Paracelsus)
#### Post date: [8 Dicembre 2021, 10:48am UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/2 "2021-12-08T10:48:43Z")

</div>

È richiesta una versione minima di Mediawiki affinché questo funzioni?

---

<div class="post-metadata">

### Author: ![mdoggydog](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@mdoggydog](https://meta.discourse.org/u/mdoggydog)
#### Post date: [8 Dicembre 2021, 4:30pm UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/3 "2021-12-08T16:30:24Z")

</div>

Per la v2.0.0, la versione minima di MediaWiki è la 1.35 (e non è ancora stata testata su versioni più recenti).

L’estensione è stata originariamente sviluppata/testata con MW 1.31; le versioni v1.1.0 e v1.2.0 probabilmente funzionano con MW 1.31, ma non sono state testate su di essa.

---

<div class="post-metadata">

### Author: ![Raj\_Rathore](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/raj_rathore/32/155320_2.png) [@Raj\_Rathore](https://meta.discourse.org/u/Raj_Rathore)
#### Post date: [8 Marzo 2022, 2:23pm UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/4 "2022-03-08T14:23:45Z")

</div>

@mdoggydog  
Sto usando MediaWiki 1.37 e ho configurato questa estensione usando composer. Sto riscontrando il seguente errore

```plaintext
[YidklSqHVG68-iRmgGiwzwAAAFA] /view/Special:PluggableAuthLogin Errore: Chiamata al metodo non definito MediaWiki\Auth\AuthManager::singleton()

Backtrace:

da /var/www/vhosts/mywebsite.com/httpdocs/w/extensions/DiscourseSsoConsumer/src/DiscourseSsoConsumer.php(132)
#0 /var/www/vhosts/mywebsite.com/httpdocs/w/extensions/PluggableAuth/includes/PluggableAuthLogin.php(36): MediaWiki\Extension\DiscourseSsoConsumer\DiscourseSsoConsumer->authenticate()
#1 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/specialpage/SpecialPage.php(647): PluggableAuthLogin->execute()
#2 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/specialpage/SpecialPageFactory.php(1366): SpecialPage->run()
#3 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/MediaWiki.php(314): MediaWiki\SpecialPage\SpecialPageFactory->executePath()
#4 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/MediaWiki.php(930): MediaWiki->performRequest()
#5 /var/www/vhosts/mywebsite.com/httpdocs/w/includes/MediaWiki.php(564): MediaWiki->main()
#6 /var/www/vhosts/mywebsite.com/httpdocs/w/index.php(53): MediaWiki->run()
#7 /var/www/vhosts/mywebsite.com/httpdocs/w/index.php(46): wfIndexMain()
#8 {main}

```

---

<div class="post-metadata">

### Author: ![mdoggydog](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@mdoggydog](https://meta.discourse.org/u/mdoggydog)
#### Post date: [8 Marzo 2022, 9:14pm UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/5 "2022-03-08T21:14:10Z")

</div>

Sembra che il metodo `AuthManager::singleton()` sia stato deprecato in 1.35 e rimosso in 1.37.

Penso di averlo risolto ora; prova la versione corrente `dev-main` di questa estensione. (Puoi installarla tramite composer, usando “dev-main” come numero di versione.) Funziona per me su 1.35 e, se funziona anche per te su 1.37, la etichetterò correttamente come rilascio di correzione bug (ad esempio, 2.0.1).

---

<div class="post-metadata">

### Author: ![Raj\_Rathore](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/raj_rathore/32/155320_2.png) [@Raj\_Rathore](https://meta.discourse.org/u/Raj_Rathore)
#### Post date: [9 Marzo 2022, 3:40am UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/6 "2022-03-09T03:40:15Z")

</div>

Grazie, ha funzionato 👍

---

<div class="post-metadata">

### Author: ![mdoggydog](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@mdoggydog](https://meta.discourse.org/u/mdoggydog)
#### Post date: [9 Marzo 2022, 4:09am UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/7 "2022-03-09T04:09:52Z")

</div>

Fantastico, e grazie anche a te. È stata rilasciata la versione 2.0.1.

---

<div class="post-metadata">

### Author: ![Raj\_Rathore](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/raj_rathore/32/155320_2.png) [@Raj\_Rathore](https://meta.discourse.org/u/Raj_Rathore)
#### Post date: [11 Marzo 2022, 8:43am UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/8 "2022-03-11T08:43:19Z")

</div>

Ho installato l’app sul mio telefono Android, ovvero PWA standalone. Quando accedo al mio MediaWiki, viene reindirizzato e apre il PWA di discourse, quindi apre il mio URL MediaWiki all’interno del PWA stesso, quando invece dovrebbe reindirizzare al browser web corrispondente. Penso che discourse non stia rilevando e reindirizzando correttamente al browser web corrispondente che ha avviato l’accesso. Questo non è correlato all’estensione MediaWiki, ma a come discourse gestisce i reindirizzamenti/URL esterni. C’è qualche impostazione che posso modificare per far funzionare l’accesso con l’app web progressiva di discourse?

---

<div class="post-metadata">

### Author: ![mdoggydog](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@mdoggydog](https://meta.discourse.org/u/mdoggydog)
#### Post date: [7 Aprile 2022, 4:52pm UTC](https://meta.discourse.org/t/discoursessoconsumer-a-sso-extension-for-mediawiki/211445/9 "2022-04-07T16:52:24Z")

</div>

Mi dispiace, non ho alcuna esperienza con la PWA di Discourse.

Immagino ci sia un difetto fondamentale nell’interazione tra una PWA e Discourse come provider SSO, tuttavia: ogni volta che il consumer SSO vuole riautenticare un utente già loggato su Discourse, dirà al browser client di reindirizzare al server Discourse, aspettandosi che il server Discourse controlli i cookie esistenti dell’utente e reindirizzi nuovamente al consumer… e aspettandosi che tutti questi reindirizzamenti avvengano silenziosamente nel browser senza che l’utente veda nulla tranne il caricamento finale della pagina.

Ma la PWA è registrata con Android come un’applicazione completamente separata che viene invocata per determinati URL/domini, giusto? Quando la PWA reindirizza al browser originale, come farà il browser originale a sapere che questo nuovo link ha qualcosa a che fare con la sua richiesta originale? E come potrà Android sapere che dovrebbe mostrare la PWA all’utente solo se la PWA richiede effettivamente un input dall’utente? :philosoraptor:
