Auth0を使用したサインアップとログインをOAuth2 Basic Pluginで設定する

(oauth2_basic) 認証に失敗しました!csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF が検出されました

何か心当たりはありますか?

Auth0を登録とログインの唯一の方法にすることは可能ですか?

はい、他のすべてのログイン方法を無効にしてください(「ローカルログインを有効にする」設定も含みます)。

「いいね!」 1

Auth0 のサインアップページに直接リダイレクトし、基本的なサインアップフォームを表示しないようにすることは可能ですか?

Discourseのログイン/サインアップ UI をすべて非表示にしたい場合は、「ローカルログインを有効にする」サイト設定をオフにしてください。

「いいね!」 1

David さん、ありがとうございます。そのように対応しましたが、モーダルからサインアップして Discourse へリダイレクトされた際に、再度ユーザー名やその他の詳細の入力を求められてしまいます。Auth0 がその情報を Discourse に渡していないように見えます。
解決策として、Auth0 のモーダルでは登録時にメールアドレスとパスワードのみを簡潔に入力させ、残りの詳細は Discourse側で取得するようにするのはどうでしょうか。
ただし、課題は、Auth0 に接続されたカスタムデータベースを使用してユーザーデータを一元管理したいという点です。

ログアウト後のリダイレクト設定方法について、関連情報が見つかりません。

Auth0でまだ確認されていない場合にのみメールアドレス検証を要求するには、oauth2 json email verified path の値を email_verified に設定します。

この値は、oauth2 debug auth 設定を有効にし、<DISCOURSE_URL>/logs でログを検査することで見つけました。未検証のアカウントを使用してログインしたところ、本文は次のようになりました。

OAuth2 Debugging:
user_json: {
  "sub"=>"auth0|XXXXXX",
  "nickname"=>"YYYYY+unprovenauth",
  "name"=>"YYYYYY+unprovenauth@ZZZZZZ.com",
  "picture"=>"https://via.placeholder.com/150",
  "updated_at"=>"2022-09-21T07:50:40.172Z",
  "email"=>"YYYYYY+unprovenauth@ZZZZZZ.com",
  "email_verified"=>false
}
「いいね!」 1

@david
お力添えいただければ幸いです。Discourse を Microsoft の XBL ログインを使用してログインするように構成したいと考えており、このプラグインが開始点になるのではないかと思いました。

開発スレッドに投稿しました。

Minecraft の Discourse フォーラム「The Hive」が、私たちがやりたいことを利用していますが、それ用のプラグインが見つかりません。:slight_smile:

こんにちは!

コミュニティへの投稿にログインを必須にする方法はありますが、ログインせずに投稿を閲覧できるようにすることは可能でしょうか?

コミュニティでAuth0プラグインを有効にしました。また、ログインや匿名投稿の他のすべての形式を削除しました。基本的に、ユーザーコミュニティに投稿する前に、人々が当社の顧客であることを確認したいと考えています。しかし、ログインしていない他の人でも投稿を閲覧できるようにしたいと考えています。

Auth0プラグインが機能するように設定できた方法は、コンテンツを表示する前にログインを要求することです。何か見落としている設定はありますか?

よろしくお願いします!

「ログイン必須」をオンにした可能性があります。これを有効にすると、アカウントを持つユーザーのみがフォーラム投稿を表示できます。それを有効にする必要なしにSSOを使用できるはずです。 :+1:

「いいね!」 1

サインアップ作成が完了し、エンドユーザーがメールを検証する前に、このURLが返されます。メールが検証される前にコミュニティへの引き継ぎを停止する方法はありますか?

セットアップに問題があります。すべてを有効にしてから Discourse でサインアップ プロセスを実行すると、Auth0 に正常に送信されますが、戻るとエラーメッセージが表示されます(「おっと、このディスカッション フォーラムを支えるソフトウェアで予期しない問題が発生しました。ご迷惑をおかけして申し訳ありません。」)。

ログを確認すると、エラーと思われるものが見つかりました。

ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: relation "user_associated_accounts" の列 "provider_uid" に null 値があり、not-null 制約に違反しています

指示に従ってすべてを設定したことを再確認しました。この問題は、「OAuth2 JSON ユーザー ID パス」が間違っていて、そのフィールドが空になっていることが原因である可能性がありますか? sub に設定しました。

user.name.fullではなく、IDPがuser.name.firstuser.name.lastのように別々のフィールドを提供すると仮定すると…

複数のユーザーJSONデータパスからOAuth2 JSONの名前パスの値を連結することは可能でしょうか?