Discourse コネクトフロー

Discourse API を使用してコミュニティを構築しようとしていますが、フローに問題が発生しています。

フロントエンドは React アプリで、バックエンドは NodeJS と MS アーキテクチャに基づいています。認証フローはすべてこちらで管理しています。

Discourse Connect に関する私の理解は次のとおりです。

  1. FE は、nonce、ユーザー情報を含むペイロードを作成し、example.com/session/SSO?sso=xx&sig=xx に呼び出しを行います。

  2. Discourse は discourse_connect_url にコールバックし、そこでペイロードを検証し、リダイレクト URL を返すと、ユーザーは Discourse にリダイレクトされます。

しかし、ユーザー情報を含むペイロードを作成しても、フロントエンドから Discourse、そしてバックエンドにそれを伝搬させることができません。どなたか助けていただけますか、または私の理解は正しいでしょうか?フォーラムでも期待される解決策を探しましたが、効果がありませんでした。

バックエンドからハードコーディングされたユーザー情報を使用すると、Discourse にユーザーをログインさせることができることに注意してください。

ウェブサイトを Discourse の認証プロバイダーとし、フロントエンドからバックエンドにユーザー情報を伝搬させたいと考えています。フローについて、または JavaScript の例について、どなたか助けていただけますか?

「いいね!」 1

こんにちは、Ankitさん。

実際には、説明された流れとは逆になります。サイトでDiscourse Connectを設定すると、次のようになります。

  1. ログインボタンをクリックすると、discourse_connect_urlssosig の2つのGETパラメータが付加されて遷移します。
  2. ユーザーは discourse_connect_url で認証情報を入力し、サイトによって認証されます。認証が成功したら、ssoをデコードして、Discourse Connectトピックに記載されている手順に従う必要があります。

同様のフローの問題があります。ユーザーがDiscourseにアクセスしてログインをクリックすることは望ましくありません。ユーザーが私のプラットフォームにアクセスし、「Discourseにアクセス」ボタンをクリックして、透過的にDiscourseにアクセスできるようにする必要があります。

私のプラットフォームは、ユーザーが事前にDiscourseにアクセスしてログインボタンをクリックすることなく、安全な方法でAPIを使用してユーザーの「nonce」を生成することは可能ですか?

注:これは、ユーザーに知られることなく、Discourseにアクセスしてボタンをクリックすることで自分で行うことができますが、アプリケーションにとっては安全ではありません。

最も簡単なオプションは、「Discourseにアクセス」ボタンをフォーラムの/loginへのリンクにすることです。