Utilizzo i gruppi SAML per autenticare gli utenti in diverse categorie. Quando i gruppi cambiano, l’utente deve effettuare nuovamente l’accesso. Voglio automatizzare questo nel mio IDP. Quando i gruppi cambiano, utilizza l’API per disconnettere l’utente
curl -X POST “https://mydiscourse.org/admin/users//log_out.json” -H “Content-Type: application/json” -H “Api-Key: XXXX” -H “Api-Username: Admin” -v
Con un API-Token con solo il diritto di disconnessione (log_out), questo può essere fatto in modo molto sicuro.
Tuttavia, l’IDP non ha l’ID numerico dell’utente. Ha solo un numero univoco.
Ho già scoperto come disconnettere un utente tramite la console accedendo all’app e a rails c
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
Quindi la mia idea era di creare un endpoint personalizzato, con un utilizzo simile
curl -X POST https://mydiscourse.org/custom/saml-logout/123456 -H “Api-Key: xxx” -H “Api-Username: Admin” -H “Accept: application/json”
Questo inoltra semplicemente il token di autenticazione ricevuto all’API ufficiale, probabilmente il metodo più sicuro. L’ID può essere ottenuto tramite user.id (vedi il resto sopra)
Oppure esegue
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
Ci sono plugin semplici dove posso semplicemente incollare questo piccolo pezzo di codice? Non sono un programmatore Ruby, ma sono così poche righe di codice. Questo dovrebbe essere fattibile in pochi minuti.
Grazie mille per il tuo aiuto.