| |
|-|-|-|
| Riepilogo | Discourse OAuth2 Basic supporta provider OAuth2 di base, presupponendo che dispongano di un endpoint API JSON dove è possibile recuperare i dettagli dell’utente tramite token.
| Guida all’installazione | Questo plugin è incluso nel nucleo di Discourse. Non è necessario installarlo separatamente.
Funzionalità
Questo plugin ti consente di utilizzare un provider OAuth2 di base come metodo di autenticazione per Discourse. Dovrebbe funzionare con molti provider, con la precisazione che devono fornire un endpoint JSON per recuperare le informazioni sull’utente che sta effettuando l’accesso.
Ciò è principalmente utile per chi utilizza provider di accesso non molto diffusi. Se desideri utilizzare Google, Facebook o Twitter, questi sono inclusi di default e non hai bisogno di questo plugin. Puoi anche cercare altri provider di accesso nel nostro repository GitHub.
Configurazione
Configurazione di base
- Prima di tutto, registra la tua applicazione Discourse presso il tuo provider OAuth2. Ti verrà richiesto un Redirect URI che sarà:
http://DISCOURSE_HOST/auth/oauth2_basic/callback
Sostituisci
DISCOURSE_HOSTcon il valore appropriato e assicurati di utilizzarehttpsse abilitato. Il provider OAuth2 dovrebbe fornirti unclient IDe unsecret, nonché alcune URL.
- Visita la sezione Admin → Impostazioni → Accesso OAuth2 e compila la configurazione di base per il provider OAuth2:
oauth2_enabled- seleziona questa opzione per abilitare la funzionalitàoauth2_client_id- il client ID fornito dal tuo provideroauth2_client_secret- il client secret fornito dal tuo provideroauth2_authorize_url- l’URL di autorizzazione del tuo provideroauth2_token_url- l’URL del token del tuo provider.
Se non riesci a determinare i valori per le impostazioni sopra indicate, consulta la documentazione per sviluppatori del tuo provider o contatta il loro supporto clienti.
Configurazione dell’endpoint JSON utente
Discourse è ora in grado di ricevere un token di autorizzazione dal tuo provider OAuth2. Purtroppo, per completare l’autenticazione, Discourse richiede ulteriori informazioni.
È necessario un endpoint API a cui è possibile contattare per recuperare le informazioni sull’utente in base al token.
Ad esempio, il provider OAuth2 SoundCloud fornisce un URL del genere. Se disponi di un token OAuth2 per SoundCloud, puoi effettuare una richiesta GET a https://api.soundcloud.com/me?oauth_token=A_VALID_TOKEN e riceverai un oggetto JSON contenente le informazioni sull’utente.
Per configurare questo su Discourse, dobbiamo impostare il valore dell’impostazione oauth2_user_json_url. In questo caso, inseriremo il valore:
https://api.soundcloud.com/me?oauth_token=:token
La parte con :token indica a Discourse che deve sostituire quel valore con il token di autorizzazione ricevuto al termine dell’autenticazione.
C’è un ultimo passaggio da completare. Dobbiamo indicare a Discourse quali attributi sono disponibili nel JSON ricevuto. Ecco un esempio di risposta da SoundCloud:
{
"id": 3207,
"permalink": "jwagener",
"username": "Johannes Wagener",
"uri": "https://api.soundcloud.com/users/3207",
"permalink_url": "http://soundcloud.com/jwagener",
"avatar_url": "http://i1.sndcdn.com/avatars-000001552142-pbw8yd-large.jpg?142a848",
"country": "Germany",
"full_name": "Johannes Wagener",
"city": "Berlin"
}
Le variabili oauth2_json_user_id_path, oauth2_json_username_path, oauth2_json_name_path e oauth2_json_email_path devono essere impostate per puntare agli attributi appropriati nel JSON.
L’unico attributo obbligatorio è id: ne abbiamo bisogno per poter recuperare l’account corretto quando l’utente effettuerà il login in futuro. Gli altri sono utili se disponibili: accelereranno il processo di registrazione per l’utente, poiché verranno precompilati nel modulo.
Ecco come ho configurato le impostazioni del percorso JSON:
oauth2_json_user_id_path: 'id'
oauth2_json_username_path: 'permalink'
oauth2_json_name_path: 'full_name'
Ho utilizzato permalink perché sembra più simile a quanto Discourse si aspetta per un nome utente rispetto al campo username nel loro JSON. Notare che ho omesso il percorso dell’email: SoundCloud non fornisce un’email, quindi l’utente dovrà fornirla e verificarla al momento della prima registrazione su Discourse.
Se le proprietà desiderate dal tuo oggetto JSON sono nidificate, puoi utilizzare i punti. Ad esempio, se l’API restituisse una struttura diversa come questa:
{
"user": {
"id": 1234,
"email": {
"address": "test@example.com"
}
}
}
Potresti utilizzare user.id per oauth2_json_user_id_path e user.email.address per oauth2_json_email_path.
Se la chiave stessa include punti, dovrai racchiuderla tra virgolette doppie o escapare i punti con una barra inversa. Ad esempio, dato questo JSON:
{
"example.com/uid": "myuid"
}
Dovresti specificare il percorso come example\.com/uid o "example.com/uid".
Sincronizzazione dei gruppi e dei campi utente
-
oauth2_json_groups_path: Percorso JSON che contiene i gruppi dell’utente come array di stringhe. Dopo il primo accesso di un membro, questi gruppi saranno disponibili per la selezione nella sezione «gruppi associati» delle impostazioni del gruppo di Discourse. Lascia vuoto per disabilitare la sincronizzazione dei gruppi. -
oauth2_user_field_mappings: Mappature dei percorsi JSON che verranno memorizzati nei Campi Utente di Discourse. I campi utente sono identificati dal loro ID numerico, che può essere trovato nell’URL quando li modifichi tramite il pannello di amministrazione.
Se imposti
oauth2_json_email_path, il provider OAuth2 deve confermare che l’utente sia il proprietario di quell’indirizzo email. Il mancato rispetto di questa regola può portare alla presa di controllo dell’account su Discourse!
Ospitato da noi? Questo plugin è disponibile nei nostri piani Business e Enterprise. OAuth 2.0 & OpenID Connect Support | Discourse - Civilized Discussion
Devi automatizzare le registrazioni degli utenti? Consulta Auto-provisioning user accounts when SSO is enabled