Ich verwende SAML-Gruppen, um Benutzer bei verschiedenen Kategorien zu authentifizieren. Wenn sich die Gruppen ändern, muss sich der Benutzer abmelden. Ich möchte dies in meinem IDP automatisieren. Wenn sich Gruppen ändern, wird die API verwendet, um den Benutzer abzumelden
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
Mit einem API-Token, das nur die Berechtigung zum Abmelden hat, kann dies sehr sicher erfolgen.
Der IDP hat jedoch nicht die numerische ID des Benutzers. Er hat nur eine eindeutige Nummer.
Ich habe bereits herausgefunden, wie man einen Benutzer über die Konsole abmeldet, indem man die App und rails c eingibt
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
Meine Idee war also, einen benutzerdefinierten Endpunkt mit ähnlicher Verwendung zu erstellen
curl -X POST https://mydiscourse.org/custom/saml-logout/123456 -H “Api-Key: xxx” -H “Api-Username: Admin” -H “Accept: application/json”
Dies leitet entweder nur das empfangene auth_token an die offizielle API weiter, wahrscheinlich die sicherste Methode. Die ID kann über user.id bezogen werden (siehe oben).
Oder es führt aus
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
Gibt es einfache Plugins, in die ich diesen sehr kleinen Codeausschnitt einfach einfügen kann? Ich bin kein Ruby-Programmierer, aber das sind nur wenige Codezeilen. Das sollte in wenigen Minuten machbar sein.
Vielen Dank für Ihre Hilfe.