みなさん、こんにちは。
既存の Discourse のユーザー名とパスワードを使って、リモートウェブサイトにログインさせる方法について、ご教示いただけますでしょうか。
私は SSO は必要ないと思っています。その理由を以下に説明します。
まず、現在のユースケースと、それがなぜ気に入らないのかという背景についてご説明します。
現在、私は https://www.example.com というウェブサイトを持っており、そこにログインボタンがあります。
ユーザーがログインボタンをクリックすると、既存の Discourse のユーザー名とメールアドレスの入力を求められます(※パスワードではなく、ユーザー名+メールアドレスです)。
その後、私はこの 2 つの情報を用いて、以下の API GET リクエストを発行します。
"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail
この API 呼び出しのヘッダーには、「system」ユーザーアカウント名と、そのユーザーに関連付けられた API キーを含めています。
メールアドレスの一致が見つかった場合、私がフォームで受け取ったユーザー名と、そのメールアドレスに対応する API レスポンスで返されたユーザー名を比較します。
一致すれば、そのユーザーは https://www.example.com でログインしたとみなします。
これは 3〜4 年前に構築したものですが、現在も問題なく動作しています。
しかし…
-
ユーザーにとって、ログインフォームにユーザー名とメールアドレスの組み合わせを入力するのは非常に混乱を招きます
– ほとんどの人は常にユーザー名+パスワードを入力するものです
– フォーム全体に大規模な説明を書いているにもかかわらず、人々は依然として自然と間違えてしまいます -
セキュリティ上問題があります
– ユーザー名とメールアドレスを知るだけで、それら 2 つ(極めて簡単な)情報を用いて、非常に容易に https://www.example.com に「そのユーザーとして」ログインできてしまいます
私がやりたいのは、ユーザーが https://www.example.com のログインボタンをクリックし、既存の Discourse のユーザー名とパスワード(ユーザー名+メールアドレスではなく!)を入力してもらうことです。
その後、example.com のウェブサイトは Discourse に対して簡単な API リクエストを送信し、提供されたユーザー名とパスワードの組み合わせが正しいか確認し、既存の Discourse ユーザー ID を返すようにしたいのです。
この説明で伝わるでしょうか:grimacing:
API ドキュメントを隅々まで調べましたが、単純な「ログイン」エンドポイントが見つかりません:thinking:
私は Discourse 自体にログイン・ログアウトさせる必要はありません。単にユーザー名とパスワードが正しいかを確認したいだけです。
何かヒント、ご助言、リンク、あるいはアドバイスがあれば、大変嬉しく思います:blush: