Discourse ID と 2FA

@JammyDodger、無料でインスタンスを登録しました:

そこで、t/227972 で説明されている現象が発生しているようです:

ほとんどのドキュメントでは、これはデフォルトで有効になるべきだと示されています:

しかし、有効にするオプションすらなく、デフォルトでも有効になっていません:

投稿をこちらに移動しました。これは、元々投稿された Contribute > Bug とは異なる問題です。

Discourse ID は OAuth2 を使用していません。実際には SSO プロバイダーとして機能しており、これは異なります。

2FA を設定するには、SSO プロバイダーである ID で設定を行う必要があります。具体的には https://id.discourse.com/my/preferences/security です。

@jomaxro、ありがとうございます。混乱の原因となったのは、enforce_second_factor を “all” に設定しようとしたものの、「ローカルログインが無効化されている場合、2FA の強制はできません」というメッセージが表示されたためです。もし話題から外れすぎなければ、その解決策は何でしょうか?

良い質問ですね…残念ながら、私にはその答えがわかりません。知っているチームメンバーを探して、彼らに連絡を取りました!

チームから訂正されました。Discourse ID は内部で OAuth2 を使用しています。申し訳ありません。別のプロトコルを使用していると思い込んでいました。


ご質問についてですが、外部ログインでの 2 段階認証(2FA)はサポートしていません。ご覧になったメッセージにも記載されている通り、ローカルログインが有効化されていない限り、2FA の強制はできません。2FA の管理(強制を含む)は、外部ログインプロバイダー(この場合は Discourse ID ですが、すべての外部プロバイダーに該当します)に委ねています。

@jomaxro、つまり、無料のトライアルプランでは、その設定を変更できないということでしょうか?あるいは、Discourse ID を何らかの方法で切断することはできますか?

確認したいのですが、無料トライアルのことでしょうか、それとも無料プランのことでしょうか?

@jomaxro、申し訳ありません。フリープランだと思います:

質問:IdP は、ユーザーが MFA を実行したかどうかの情報を SP に伝達しますか?

U2F / FIDO に類似したメカニズムを考えています。プログラムは、認証資格情報に対して期待される/必要なユーザーインタラクションのレベルについて、デバイスからのアテステーションを要求できます。

Discourse ID、あるいは同様に他の IdP(SAML?oAuth2?OIDC?)が、この情報を SP に伝達する場合、それは潜在的に活用できる情報となります。

もし伝達されない場合、この保証を得るためには、フェデレーション後のログイン後に MFA を実装する必要があるという点で、やや行き詰まります。

この機能を標準的な方法で実装するには、OIDC を通じて行う必要があります。Discourse ID は現在、OAuth2 のみで構築されています。MFA フラグをサポートするには、プロバイダー層で OIDC を実装し、必要とするクライアント向けに MFA 値を双方向に渡す処理を追加する必要があります。

いくつかの複雑な問題があります:

  • Discourse コアでは、特定のユーザータイプ(スタッフのみ、または全員)に対してのみ 2FA を必須とするオプションがあります。ID 経由でも同様のサポートが必要になるでしょう。
  • ID では Google、Apple、Facebook、Github からのログインが可能ですが、これらのプロバイダーはユーザーがログイン時に 2FA を完了したかどうかを確実には伝えないため、ID 層で 2FA を実装する必要があるかもしれません。また、一部のユーザーに対して二重の 2FA を課すことにもなり、これは望ましくありません。
  • 身元プロバイダー層(ローカルインスタンスではなく)での 2FA は、すべての利用者にとって十分でしょうか?一般的にはそうだと思いますが、この方針にコミットする前に、もう少し調査を行う必要があります。