OAuth2 Basic Support プラグイン (v2025.11.0 以降の Discourse コアに標準搭載)を使用すると、Salesforce 認証を設定できます。
そのためには、Salesforce 上で接続された OAuth2 アプリを作成します:
作成 → Apps → 新規接続アプリ
「基本情報へのアクセス」を許可することを確認してください
「コールバック URL」を https://YOURFORUM.COM/auth/oauth2_basic/callback に設定します:Discourse フォーラムを HTTPS で実行している必要があります。
クライアント ID とシークレットをメモしてください
Discourse 側では、以下の設定(管理 → ログイン → OAuth2.0 の下にあります)を構成してください:
oauth2 enabled: true
oauth2 client id and secret: 上記セクションで取得したもの
oauth2 authorize url: https://login.salesforce.com/services/oauth2/authorize
oauth2 token url: https://login.salesforce.com/services/oauth2/token
oauth2 fetch user details: true(デフォルトで有効ですが、有効になっていることを確認してください)
oauth2 user json url: https://login.salesforce.com/services/oauth2/userinfo
oauth2 json user id path: user_id
oauth2 json username path: preferred_username
oauth2 json name path: name
oauth2 json email path: email
oauth2 email verified: true
oauth2 authorize options: scope, display, immediate, state
問題が発生した場合は、oauth2 debug auth を有効にして /logs を確認してください。
「いいね!」 9
この投稿のおかげで、Salesforce ログインを必要とする最近のプロジェクトのセットアップができました。本当に助かりました。
私たちの場合、Salesforce アプリはコミュニティだったので、上記の詳細の一部を変更する必要がありました。他の誰かの助けになればと思い、この古いスレッドに投稿します。ほぼ一日中頭を抱えて悩みました。
oauth2 認可 URL: https://[COMMUNITY_NAME].force.com/services/oauth2/authorize
oauth2 トークン URL: https://[COMMUNITY_NAME].force.com/services/oauth2/token
oauth2 コールバックユーザー ID パス: id
パスの変更は、Salesforce や他のドキュメントを少しずつ(そして苦しみながら)調べて解決しました:
https://auth0.com/docs/connections/social/salesforce
Salesforce Help
しかし、それでも 403 Forbidden エラーが発生しました。これは単なるスタイルなしの HTML で、Discourse のエラーには見えなかったので、Salesforce のデバッグと歯ぎしりを繰り返しました。しかし、問題は実は Discourse にありました。
Forbidden
このリソースにアクセスする権限がありません。
さらに、ErrorDocument を使用してリクエストを処理しようとした際に、500 Internal Server Error エラーが発生しました。
コールバック URL へのリダイレクトは機能しているように見えたものの、ブラウザコンソールでは認証失敗が記録されていました。結局、認証失敗の原因となったのは、未設定 だった oauth2 callback user id path でした。これを id に設定することで、すべてが正常に動作するようになりました。
他の設定は前の投稿と同じです。
「いいね!」 2
ガイドラインをいただきありがとうございます。Salesforce を使用した認証には成功しましたが、問題が発生しました。Salesforce のオブジェクト/フィールドが Discourse に正常に渡されていないようです。Discourse で Salesforce によるログインが成功した直後に、Discourse が新規ユーザーとして扱い、ユーザー名、メールアドレス、名前を要求しています。これらは oauth2 の JSON 内の name、email、username フィールドから取得されるはずです。
oauth2 プラグインで使用する Salesforce のオブジェクト/フィールドの JSON 形式について、ご教示いただけますでしょうか。object.field、object_field、field のみで試してみましたが、エラーは発生しなくても、Salesforce から Discourse へ JSON を通じて何ら情報が渡されず、Discourse でのログインを新規ユーザーとして認識されないようにできていません。
追記ですが、当社の課題に対する解決策を見つけました。SF のフィールドをマッピングするための以下の設定が必要です。
必須設定:
### oauth2 fetch user details - **checked**
### oauth2 user json url - **https://<yoursfsite.com>/services/oauth2/userinfo**
### oauth2 user json url method - **get**
### oauth2 json user id path - **user_id**
### oauth2 json username path - **preferred_username**
### oauth2 json name path - **name**
### oauth2 json email path - **email**
この情報が、oauth2 SF 接続の解決策を探している他の方々のお役に立てれば幸いです。
「いいね!」 2
david
(David Taylor)
2021 年 5 月 21 日午後 1:43
6
@sonny.mendoza さん、情報ありがとうございます!これをこのトピックの上部にある手順に統合しました。今後、他の皆さんのお役に立てると思います
「いいね!」 3