API経由で正しいユーザー名とパスワードの組み合わせを確認しますか?

みなさん、こんにちは。

既存の 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 年前に構築したものですが、現在も問題なく動作しています。

しかし…

  1. ユーザーにとって、ログインフォームにユーザー名とメールアドレスの組み合わせを入力するのは非常に混乱を招きます
    – ほとんどの人は常にユーザー名+パスワードを入力するものです
    – フォーム全体に大規模な説明を書いているにもかかわらず、人々は依然として自然と間違えてしまいます

  2. セキュリティ上問題があります
    – ユーザー名とメールアドレスを知るだけで、それら 2 つ(極めて簡単な)情報を用いて、非常に容易に https://www.example.com に「そのユーザーとして」ログインできてしまいます

私がやりたいのは、ユーザーが https://www.example.com のログインボタンをクリックし、既存の Discourse のユーザー名とパスワード(ユーザー名+メールアドレスではなく!)を入力してもらうことです。

その後、example.com のウェブサイトは Discourse に対して簡単な API リクエストを送信し、提供されたユーザー名とパスワードの組み合わせが正しいか確認し、既存の Discourse ユーザー ID を返すようにしたいのです。

この説明で伝わるでしょうか:grimacing:

API ドキュメントを隅々まで調べましたが、単純な「ログイン」エンドポイントが見つかりません:thinking:

私は Discourse 自体にログイン・ログアウトさせる必要はありません。単にユーザー名とパスワードが正しいかを確認したいだけです。

何かヒント、ご助言、リンク、あるいはアドバイスがあれば、大変嬉しく思います:blush:

ユーザーの生パスワードを返す API ルートは存在しないため、このアプローチは機能しないと思われます。ご説明から、Discourse を御社のウェブサイトの SSO プロバイダーとして使用したいという意図と推察されます。これは実現可能です。設定方法の詳細は、こちらをご覧ください:https://meta.discourse.org/t/using-discourse-as-a-sso-provider/32974。

「いいね!」 4

@simon さん、ありがとうございます!そのリンクをざっと見たところ、まさに私が探していたものかもしれません。

読んでみます :nerd_face:

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.