SAMLグループを使用して、ユーザーをさまざまなカテゴリに認証しています。グループが変更されると、ユーザーはログインする必要があります。これをIDPで自動化したいと思います。グループが変更されると、APIを使用してユーザーをログアウトします。
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
APIトークンにログアウト権限のみがあれば、これは非常に安全に行うことができます。
しかし、IDPにはユーザーの数値IDがありません。一意の番号しかありません。
すでにコンソールからユーザーをログアウトする方法を発見しました。アプリに入り、rails cを実行します。
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
そこで、同様の使用法でカスタムエンドポイントを作成することを考えました。
curl -X POST https://mydiscourse.org/custom/saml-logout/123456 -H “Api-Key: xxx” -H “Api-Username: Admin” -H “Accept: application/json”
これは、受信したauth_tokenを公式APIに転送するだけで、おそらく最も安全な方法です。IDはuser.id(上記参照)から取得できます。
または、以下を実行します。
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
この非常に短いコードを貼り付けるだけでよい簡単なプラグインはありますか?私はRubyプログラマーではありませんが、これは非常に少ないコード行です。これは数分で実現できるはずです。
ご協力いただきありがとうございます。