DiscourseでのSSOログイン

Discourse Connect SSOの記事(https://meta.discourse.org/t/discourseconnect-official-single-sign-on-for-discourse-sso/13045)を読みました。

私の理解では、Discourseに認証を検証するためにAPIを使用させ、カスタムパラメータを送信することもできるということです。もし間違っていたら訂正してください。

私たちがやりたいことは、独自のログインページを使用することです(ユーザーがdiscourse.open…comでログインをクリックすると、私たちのログインページ「kan.open..com」が開くはずです)。ログインが成功したら、Discourseサイトに移動します。TwitterやAtlassianなどのサイトが同じことをしているのを見ました。これを達成する方法について、もう少し詳しい情報を教えていただけますか。

「私たちの API を使用する」というのが、「Discourse Connect をサポートするために API を変更する」という意味であれば、その通りです。その方法は、リンクされたドキュメントに記載されています。「ログインが必要」というサイト設定をオンにすると、フォーラムに何も表示されずに全員がすぐにリダイレクトされるようになります。

こんにちは、Discourseコミュニティの皆さん、

Discourse SSODiscourseConnect)の設定について質問があります。DiscourseがDiscourseConnect URLにリクエストを送信する際に、追加のパラメータを含める方法はありますか?具体的には、ユーザーを認証してSSOログインプロセスを完了するために使用できる、ユーザー トークンやユーザー ID などのユーザーデータを DiscourseConnect URL へのリクエストに渡したいと考えています。

現在直面している課題は、ユーザーが2回ログインする必要があることです。つまり、私のプロジェクトに一度ログインし、SSO経由で接続する際に再度Discourseにログインする必要があります。理想的には、ユーザーがすでに私のプロジェクトにログインしている場合、同じ認証情報で再度ログインする必要がないようにプロセスを合理化したいと考えています。

Discourseにこのような機能はありますか、またはこれを処理するためのベストプラクティスはありますか?SSOエクスペリエンスをよりシームレスにするためのガイダンスや提案があれば幸いです。

よろしくお願いします!

そのシナリオに対処するアプローチは、このトピックの「認証済みユーザーのプロセスをシームレスにする」セクションで概説されています。Create a DiscourseConnect login link.

「いいね!」 2

初めてDiscourseでSSOログインを行う際に、ユーザーIDやトークンなどのユーザーデータを提供できるAPIまたはメソッドはありますか?それらをDiscourse APIに送信し、その見返りにDiscourse Connect URLリクエストにユーザーIDやトークンを含めてもらうことができます。

DiscourseConnectペイロードで設定したexternal_idを使用して、DiscourseにAPIリクエストを行うことができます。そのリクエストは、完全なユーザーオブジェクトを返します。

「いいね!」 1

私が伝えたいことを理解していただけていないようです。ログイン後にDiscourseからユーザー詳細を取得することについて質問しているのではありません。私が達成しようとしていることの完全な流れを理解し、Discourseでそれが可能かどうか、または独自の(アプローチで進めるべきか教えてください。

現在、Laravelフレームワークを使用してプロジェクトを構築しており、ユーザーにフィードバックのためにDiscourseフォーラムへのアクセスを提供したいと考えています。DiscourseのSSOログインを実装することにしました。Discourseの管理者アカウントを作成し、SSOログインに必要な設定(SSOの有効化、リダイレクトURLの設定、シークレットの設定を含む)を有効にしました。

次に、プロジェクト内に「Discourse Connect」ボタンを追加しました。ユーザーがこのボタンをクリックすると、私の認証情報を使用して登録またはログインし、Discourseに自動的にログインできるようにしたいと考えています。ユーザーが「Discourse Connect」ボタンをクリックすると、セッション/ssoエンドポイントを持つ私のベースコミュニティURLにリダイレクトされ、そこからDiscourse Connect URLにリダイレクトされます。リクエストでSSOおよびsigパラメータを受け取りますが、これらは検証用であると理解しています。しかし、ユーザーを検証、認証し、Discourseにログインさせるために、ユーザーIDまたは何らかの識別子が必要です。

私の質問は次のとおりです。Discourseに、リクエストでSSOおよびsigパラメータとともにuser_idを返すAPIまたは何らかのメカニズムはありますか?リクエストでユーザーデータを取得できない場合、ユーザーに再度ログインを求める必要があり、これはユーザーエクスペリエンスを低下させるため、これは重要です。基本的に、ユーザーが私のプロジェクトにログインして「Discourse Connect」ボタンをクリックすると、Discourse Connect URLがトリガーされ、SSOおよびsigパラメータを受け取ります。ユーザーを認証するために、データベースからユーザーデータを取得する必要がありますが、これにはユーザーに再度ログインしてもらう必要があり、これは避けたいことです。

一度ログインすれば、再度ログインする必要がないシームレスなエクスペリエンスを求めています。プロジェクトの認証情報を使用して、Discourseフォーラムに直接アクセスできるはずです。

問題がどこで発生しているのか、よく理解できていません。

DiscourseConnectにこのライブラリを使用していますか? GitHub - spinen/laravel-discourse-sso: Integrate Discourse SSO into Laravel

そのコード(laravel-discourse-sso/src/Controllers/SsoController.php at develop · spinen/laravel-discourse-sso · GitHub

「いいね!」 1