Plugin WordPress che trasforma il sito in un provider OpenID Connect per Open Journal Systems (OJS), esponendo lo stato di sottoscrizione utente come claim OIDC. È la metà "WordPress" del meccanismo SSO usato da GuIT - Gruppo Utilizzatori Italiani di TeX per guitex.org (WordPress) ↔ arstexnica.guitex.org (OJS).
La metà OJS vive nel repo companion ojs-wordpress-plugin (plugin ojsWpSsoSubscription).
subscription_active).wp-content/uploads/file-utenti/{slug-utente}/{bonifico|certificato}.wp eval 'OIDC\generateKeys();' o tramite lo script generate-oidc-keys.php presente nel workspace di deploy GuIT.cd wp-content/plugins unzip /path/to/wp-ojs-sso-bridge-X.Y.Z.zip chown -R www-data:www-data wp-ojs-sso-bridge
Attivare poi da wp-admin → Plugin.
Aggiungere al wp-config.php il blocco generato da wp eval 'OIDC\generateKeys();' (o dallo script generate-oidc-keys.php di GuIT, da eliminare subito dopo l'uso).
wp-admin → Impostazioni → OJS SSO Bridge
| Campo | Valore consigliato | Note |
|---|---|---|
| OJS Client ID | ojs-arstexnica |
Identificativo arbitrario condiviso con OJS |
| OJS Client Secret | (generato dal pulsante "Genera Secret") | Stesso valore da incollare lato OJS |
| OJS Redirect URI | https://arstexnica.guitex.org/openid/doAuthentication?provider=custom |
Mostrato dal plugin OJS openid |
| Claim name | subscription_active |
Deve coincidere col campo "Claim name" del plugin OJS |
| Meta key | ojs_subscription_active |
user_meta WordPress che mappa il claim |
| Abilita richiesta alla registrazione | on | Mostra il checkbox nel form |
| Notifica admin | on | Invia mail al booking della sottoscrizione |
sequenceDiagram
participant OJS as OJS (arstexnica.guitex.org)
participant WP as WordPress (guitex.org)
participant User
OJS->>WP: Authorize (PKCE / standard OIDC)
User->>WP: Login + consenso (schermata "Autorizza" in IT)
WP-->>OJS: id_token + access_token (claim subscription_active)
OJS->>WP: UserInfo (Bearer access_token)
WP-->>OJS: { sub, email, name, subscription_active: 1 }
Il plugin:
https://guitex.org/.well-known/openid-configuration (gestito dal plugin Automattic).id_token e UserInfo aggiungendo il claim subscription_active dal meta utente.Codice rilevante: vedere includes/class-oidc-bridge.php, includes/class-registration.php, includes/class-settings.php.
Le impostazioni accettano valori arbitrari; assicurarsi solo che WordPress e OJS abbiano lo stesso claimName.
wp_ojs_sso_bridge_claim_value — sovrascrive il valore del claim prima dell'esposizione.wp_ojs_sso_bridge_userinfo_extra — aggiunge ulteriori campi nella risposta UserInfo.I file .po/.mo sono in languages/. La traduzione italiana copre sia le stringhe del plugin sia il consent screen del plugin Automattic (gestito da class-oidc-server-it-locale.php).
uninstall.php rimuove le option create dal plugin e i meta utente legati alla sottoscrizione. Non elimina i file caricati in wp-content/uploads/file-utenti/ (per non distruggere documenti contabili): vanno cancellati manualmente.
| Sintomo | Causa probabile | Fix |
|---|---|---|
OJS riceve sempre subscription_active: 0 |
Claim non emesso in UserInfo o lato OJS si sta leggendo dal id_token cifrato |
Verificare la patch OpenIDHandler.php sul plugin OJS openid (vedi patches/openid-handler/ nel workspace GuIT). |
| UserInfo restituisce 401 | access_token non salvato in sessione lato OJS |
Stessa patch sopra (salva access_token accanto a id_token). |
| Schermata "Autorizza" in inglese | Locale del sito non it_* |
Settings → Generale → Lingua sito → Italiano. |
| Form di registrazione senza checkbox | "Abilita richiesta alla registrazione" disattivato in Settings | Riabilitare e svuotare le cache di pagina (se presenti). |
| Upload bonifico/certificato fallisce | Limiti PHP troppo bassi | Aumentare upload_max_filesize e post_max_size (256 MB consigliati). |
Per la diagnostica end-to-end vedere diagnose-subscription.php nel workspace GuIT (/diagnose-subscription.php?user=<email> lato OJS).
git clone https://niphredil.duckdns.org/git/fabio/wordpress-ojs-plugin.git cd wordpress-ojs-plugin # branch principale: main
PR e issue su GitBucket (link "Issues" / "Pull Requests" nel repo).
cd /Users/fabio.arrigoni/Downloads/Guitex
zip -r releases/wp-ojs-sso-bridge-X.Y.Z.zip wp-ojs-sso-bridge \
-x 'wp-ojs-sso-bridge/.git/*' \
'wp-ojs-sso-bridge/**/.DS_Store' \
'wp-ojs-sso-bridge/**/*.bak*'
GPL-2.0-or-later. Vedere file LICENSE (in arrivo) o https://www.gnu.org/licenses/gpl-2.0.html.
Vedere readme.txt sezione Changelog.