Fornitore OAuth "falso"?

Ciao :wave: Mi stavo chiedendo se qualcosa che sto cercando di fare fosse possibile.

Quindi, vorrei associare account Minecraft ad account Discourse, molto simile a come puoi aggiungere Discord, Google, ecc. ma Minecraft non ha attualmente un sistema OAuth (forse una volta che tutti saranno migrati a un account Microsoft, ma ci vorrebbe un po’ di attesa). Quindi, il sistema che propongo è far inserire all’utente un codice generato casualmente che otterrebbe in gioco. Ci sarebbe un modo per aggiungerlo al loro account come qualsiasi altro account connesso? Probabilmente lo strutturerei in modo simile a come funziona https://mc-oauth.net/ ma, invece di accedere, userebbero un comando in chat.

Se questo fosse possibile, hai qualche suggerimento su come potrei realizzarlo? Mi servirebbe praticamente solo un popup modale che chiede il codice → convalida il codice → ottieni UUID e memorizza come identificatore esterno dell’account.

EDIT: In realtà, sembra che con la transizione agli account Microsoft potrei essere in grado di modificare il plugin esistente per account Microsoft per memorizzare gli UUID di Minecraft. Dovrò vedere.

Potresti magari usare campi utente personalizzati per questo? Creating and configuring custom user fields

Un campo utente potrebbe essere impostato come obbligatorio alla registrazione, il che accetterebbe il codice generato casualmente. I campi utente possono anche essere modificabili nelle preferenze di un utente dopo la registrazione, se gli account esistenti devono aggiungere il codice.

2 Mi Piace

Oooooh, in realtà non ci avevo pensato. Grazie per l’idea: il motivo principale per cui cercavo un approccio OAuth è che posso recuperare l’utente tramite l’ID esterno. Vedrò se posso recuperare un utente tramite un campo utente.

EDIT: Ok, in realtà potrei avere un modo per farlo usando i campi personalizzati. Probabilmente dovrò solo usare un database esterno e creare un mio modo di richiedere un utente Discourse dal loro UUID di Minecraft. Semplicemente non so abbastanza sulle limitazioni di Discourse per sapere se ci sarebbe un modo migliore.

EDIT 2: Hmm, non vedo un modo per modificare i campi utente personalizzati tramite l’API. Idealmente avrei voluto che venisse impostato solo dall’API, in modo da essere sicuro che possiedano l’account. Potrei dover creare un database esterno e fare il collegamento dell’account tramite qualcos’altro.

1 Mi Piace

Sembra che quello che vuoi fare sia implementare il tuo provider OAuth?

Molto simile al diagramma qui:

Sembra che il tuo meccanismo personalizzato prenderà il posto della “Directory oAuth2”.

(Potrebbe essere piĂą semplice usare DiscourseConnect)

Naturalmente, tutto questo dipende da come stai già implementando l’autenticazione per il sito…

D’altra parte, fare ciò potrebbe complicare eccessivamente le cose: supportiamo campi personalizzati solo per lo staff che potrebbero essere adatti qui.

2 Mi Piace

Sì, immagino che la mia unica domanda principale sia se fosse ad uso esclusivo del personale, ci sarebbe un modo per impostare quei campi tramite un percorso API? Non ho trovato un modo per farlo automaticamente.

Non vedo una voce in docs.discourse.org per questo. Tutte le modifiche apportate dal browser web vengono effettuate utilizzando la stessa API, quindi il mio consiglio sarebbe quello di fare reverse engineering di ciò che è necessario.

1 Mi Piace

Oh, questo è davvero utile, grazie per aver condiviso! Quindi, ho riflettuto e fatto ulteriori ricerche su come potrei farlo, quello che sto pensando è usare il parametro state con OAuth per far accedere le persone al loro account Discourse e poi usare quello stato per associare l’UUID in Minecraft. Lo stato sarebbe solo un valore generato casualmente che esisterebbe in un database con l’UUID di Minecraft. Penso che questo approccio dovrebbe funzionare. Grazie a tutti per le idee e le risorse!

1 Mi Piace

Dato che non avevo bisogno di accedere all’UUID di Minecraft da Discourse stesso, ho finito per creare un sistema esterno che si integra con Discourse SSO. Apprezzo l’aiuto e, se desideri vedere cosa ho ideato, l’ho condiviso qui. Un giorno potrei rivisitarlo una volta che gli account Microsoft saranno obbligatori per tutti gli utenti di Minecraft, poiché ci sarebbe sicuramente un modo per utilizzare le loro API per ottenere la stessa funzionalità.

1 Mi Piace