Discordが毎回ログイン時に認証を促すのを停止する

こんにちは!

セルフホスト環境にDiscordログインを設定しました。非常にうまく機能していますが、一つだけ小さな問題があります。

ユーザーがDiscordでサインインすると、毎回認証ページにリダイレクトされます。つまり、ログインするたびに承認に同意する必要があります。私の理解では、これはDiscordログインをDiscourseに初めて接続したときに一度だけ行われるプロセスであるはずです。

これを修正するにはどうすればよいでしょうか?ドキュメントに従いました。

「いいね!」 3

これに直面している人はいますか?

「いいね!」 2

はい、私のインスタンスで試してみたところ、その問題を再現できます。

「いいね!」 2

他の「Discordでログイン」を提供するサイトでも同様の動作が見られますか?もしそうであれば、それはDiscourse固有の問題ではなく、Discordログインシステムの期待される動作である可能性があります。

これは意図した動作ではありません。私が使用している他のサイトやフォーラムでは、Discordでのログインは一度認証すれば、その後はDiscordでログインするたびに自動的にログインされ、認証ページに行く必要がありません。

これはDiscourseに関係しています。

試してみて、実装と比較できるような公開の例を共有してもらえますか?

私はあなたが言う公開の例について何を意味しているのかよくわかりません。申し訳ありません。

しかし、これは一般的なことではありません。最初の1回だけDiscordの認証が必要なはずです。

つまり:

それらのうちの1つへのリンクを共有していただけますか?そうすれば、それらがどのように実装されているかを確認し、Discourseをそれに合わせて調整できるかもしれません。

私がよく利用するメッセージボードですが、これはDiscourseソフトウェアではありません。

https://famiboards.com/

「いいね!」 1

認証URLの prompt パラメータが none に設定されていないことが原因でしょうか?

prompt は、認証フローが既存の認証をどのように処理するかを制御します。ユーザーが以前に要求されたスコープでアプリケーションを承認しており、prompt が consent に設定されている場合、承認の再承認を要求します。none に設定されている場合、認証画面をスキップし、承認を要求せずにリダイレクトURIにリダイレクトします。

「いいね!」 1

何かわかっていることがあるようです。これを見つけました。
https://community.auth0.com/t/discord-connection-prompts-for-consent-every-login/135157
これはDiscourse内で更新できるかもしれませんか? 私の知る限り、これは管理パネルやDiscord開発者ポータルでできることではありません。

「いいね!」 2

DiscourseにはGoogle Authのためのプロンプト設定があり、Discord用も追加するのが合理的だと思います。

「いいね!」 1

私もこれに気づきました。

このログイン設定のファイルがDiscourseのどこにインストールされているかご存じですか?

"upstream_params": {
	"prompt": {
		"value": "none"
	}
}

をそのファイル内に配置してビルドし直すことを考えています。これで問題が解決するか試してみたいです。

追記:冷静に考えると、この修正を実装できるファイルを見つけるのは難しいと思います。Discourse側の修正が必要だと考えています。

私のインスタンスで問題が発生しているため:

はい、チームからのニュースを待ちましょう :+1:

「いいね!」 1

クール。他に何か(アップデートを待つ以外に)やることはありますか?

このような修正の具体的な時期はまだ分からないと想定しています。緊急度ステータスの流れ次第でしょう。些細な不便さだと思いますが、修正されたら素晴らしいですね!

prompt=none を追加する変更は良いと思います。誰かが書いて、テストして、PRを作成できれば、変更を迅速に進めるのに役立ちます。

関連ファイルはこちらですが、具体的にどのような変更が必要かはすぐにはわかりません。

「いいね!」 2

ファイルを確認したところ、セルフホスト環境に以下のコードを追加しました。

option :authorize_options, %i[scope permissions]

の下に

option :authorize_params, prompt: 'none'

これは、ある程度機能しますが、期待通りではありません。
Discordの認証ページに移動しますが、ユーザーは「承認」をクリックする必要がなくなります。ページがリロードされ、Discourseページに戻ります。

一歩前進、もう一歩後退です。 :melting_face:

編集:@Arkshineさんも同様の結果をテストしたことを確認しました

「いいね!」 1

簡単なテストを行いました (https://discourse.arkshine.dev/):

認証ページが表示されますが、自動的にリダイレクトされます。

「いいね!」 1

変更があったとしても、Discord認証ページに遷移してしまいます。本来は遷移しないはずです(ただし、今回は手動で「認証」を押す必要はありません)。

残念ながら、提案された変更を含むPRを提出しても、問題は解決しません。