Has anyone succeeded in using discourse as sso provider for nextcloud? Share recipe?

Hi all - I am interested in setting up a few small community sites with discourse plus nextcloud for document and media content sharing. It would be loverly and preferable to have SSO with discourse as SSO provider. If anyone has succeeded in doing this and can share a recipe here on how to do it I’d appreciate it. Thanks! :seedling:

The communities I am looking at creating are for my own geographically dispersed family, my neighborhood, and my son’s school.

I might also be interested in setting up a nextcloud for the organization I work for that already has an active community website. Though my organization’s community uses discourse, it uses wordpress as SSO auth now. Down the pike I’m also interested in flipping that around so we can benefit from features reliant on discourse as SSO auth.

Edit: this seems to be the page - I will be exploring this today and will let others know what I come up with if anything. :slight_smile: Any guidance along the way much appreciated.

https://docs.nextcloud.com/server/11/admin_manual/configuration_server/sso_configuration.html

「いいね!」 1

i’ve quite the same usecases, where i want to use discourse as the SSO provider for nextcloud.

are there any updates on this?

「いいね!」 2

Not that I am aware of. Could you ask at the nextcloud community?

it’s not a perfect implementation, but it does its job for me:

https://github.com/paroga/user_discourse

「いいね!」 6

ソーシャルログインアプリ はバージョン4.10からディスコースをサポートしています。

「いいね!」 3

素晴らしい!Nextcloudのソーシャルログインアプリには、Discourseが「組み込みOAuthプロバイダー」として提供されていないことがわかりました。Discourseを使用してこれを設定するにはさまざまな方法がありますが、どのように設定しましたか?レシピを提供していただけますか?

また、認証プロバイダーからグループを継承できるアプリもあるようですが、これは非常に便利です。Discourse/Nextcloudの設定でも同様のことを行いたいと考えています。

他にも関連しそうなNextcloudアプリがいくつかありますが、すべてをテストしたわけではありません。OpenID Connect Loginアプリがあります。Discourse SSOアプリも存在しますが、古くなっているかテストされていないようです。

私の投稿に書いたように、バージョン4.10が必要です。次に、ソーシャルログインの設定に「カスタムディスコース」オプションがあります。

これはOpenID Connectのみをサポートしており、Discourseでは提供されていません。

これは逆方向、つまりNextcloudアカウントでDiscourseにログインしたい場合のためです。

「いいね!」 3

ありがとうございます、パトリック!アプリを再インストールしたところ、「カスタム Discourse」オプションが表示されました。ドキュメントにはまだ説明がないため、何も変更されていないと思っていました。また、https://apps.nextcloud.com/apps/sociallogin ページには、Nextcloud サポート フォーラムへの壊れたリンクがあり、開発者とこのアプリについてどこで話せばよいのか分かりません。

現在動作していますが、最大の課題は、すべての既存ユーザーのデフォルトのログイン方法としてこれを有効にする方法が分からないことです。

次に大きな問題は、ユーザーの詳細が Discourse から Nextcloud に正しく引き継がれないことです。Nextcloud で新しく作成されたユーザーには、[内部名]-[ユーザーID] の形式で自動生成されたユーザー名が付けられます。私のサイトの場合、たとえば kb2-3797 のようになります。名前は引き継がれますが、他のプロファイル詳細は Nextcloud で再度入力する必要があります。アバターも引き継がれません。

また、Nextcloud Web アプリの唯一のログイン方法がこれである場合、ユーザーはデスクトップまたはモバイルクライアントのユーザー名とパスワードをどのように設定するのだろうかと思っています。おそらく、Nextcloud Web アプリのアカウント設定に移動して、Nextcloud ログイン資格情報を設定する必要があることを知っておく必要があるでしょう。

その他気づいた点:

  • アプリの設定は、「アプリ」セクションではなく、管理設定のサイドバーからアクセスします。見つけるのに少し時間がかかりました。 :slight_smile:
  • 管理設定にはアプリ用の 3 つのセクションがありますが、上部と下部のセクションには保存ボタンがありますが、中央のセクション(カスタムプロバイダー用)にはありません。カスタム Discourse 設定を保存するためにどれを使用すればよいか不明です。回答:どちらも同じように機能します。
  • アプリの設定が多くあります。私のセットアップでは、次の設定が最も効果的です。
    • disable auto create new users = Discourse に存在する新しいユーザーを Nextcloud で作成できるようにします。
    • create users with disabled account = 新しく作成されたユーザーを無効にしません。
    • allow users to connect social logins with their account = 既存のユーザーが Discourse を介したログインを選択できるようにします(:warning: Discourse を介したログインをデフォルトで許可する方法が分かりません)。
    • update user profile every login = ログインごとに Discourse グループを Nextcloud グループと同期します。(:warning: ユーザー名、名前、自己紹介、その他のプロファイル情報は正しく同期されません)
    • do not prune not available user groups on login:warning: これが何をするのか分かりませんが、デフォルトで有効になっています。ユーザーが Discourse からマッピングされていない場合、既存の Nextcloud グループからユーザーを削除しないのではないかと推測しています。)
    • automatically create groups if they do not exist = 無効にしました。なぜなら、望ましいグループを複製する醜いグループ名が作成されるからです(下記参照)。
    • restrict login for users without mapped groups = 無効にしました。
    • restict login for users without assigned groups = 無効にしました。
    • disable notify admins about new users = 新しい Nextcloud ユーザーが作成されたことを確認するのに役立つため、無効にしました。
    • hide default login = ユーザーに Discourse を介したログインを奨励しますが、Nextcloud のユーザー名/メールアドレスとパスワードで直接ログインすることも可能です。
  • グループマッピングを作成する前に、最初に管理アクセスを失いました。回復するには、コマンドラインに移動して occ group:adduser admin USERNAME を実行する必要がありました。
  • グループマッピングは非常にうまく機能します!最も重要だったのは、フォーラムの管理者が Nextcloud で管理者権限を持つように、admins → Nextcloud admin のマッピングを追加することでした。また、セキュアカテゴリに使用されるグループのマッピングを追加して、これらのセキュアカテゴリに関連する Nextcloud のセキュアフォルダへのアクセスも付与することができました。

着実に進歩しています!

「いいね!」 1

GitHub をお勧めします。

IMHO、それが実装するのに最適な方法です。IDは主に内部的に使用され、通常のユーザーには多くの場所で表示されないためです。
Nextcloudではユーザー名を変更するのは簡単ではありませんが、Discourseでは可能です。Discourseでユーザー名を変更すると、名前が一致しなくなった場合にNextcloudで奇妙な動作を引き起こす可能性があります。

DiscourseConnectavatar_url はNextcloudに渡され、そこで読み込まれるはずです。
bio も渡したい場合は、プロファイル更新を担当するブランチ の数行で対応できます。

代わりに デバイスパスワード を使用してください。NextcloudのパスワードはDiscourseのパスワードと異なる場合があり、混乱を招き、SSOをスキップする可能性があります。

これらはアプリ固有の問題ではなく、NextcloudのUIに関する一般的な問題だと思います。

Nextcloudのログインを完全に非表示にしたい場合は、configセクション に記載されているように、social_login_auto_redirect オプションを true に設定してください。

「いいね!」 2

素晴らしい!ありがとう、パトリック!ガイダンスに大変感謝しています。

主な問題について、GitHubでイシューを開きました。現在、すべてのユーザーにDiscourse経由でログインしてもらいたいのですが、social login connectのユーザー設定でユーザーにDiscourseへの切り替え方法を指示しない限り、それができません。

ご提案の通り、現在はsocial_login_auto_redirectを設定しており、全員がDiscourseを使用するように設定されればうまくいくでしょう。:+1: 現時点では個人的にはうまく機能していますが、これらのサイトを使用している他の人にはうまくいきません。ログインが許可されません。:sob:

デバイスパスワードについて、100%明確ではありません。提供されたリンクを見ましたが、そのページのユーザー設定のスクリーンショットは私のNextcloudインスタンスとは異なって見えます。バージョンが違うのでしょうか?私は23.0.0の安定アップデートチャンネルを使用しています。:thinking: それとも、インストールする必要のあるアプリがありますか?

ユーザー名、アバター、自己紹介の同期は緊急性は低いですが、正常に機能しているのを見ると良いでしょう。ログインごとにこれらの詳細をユーザーに更新できない理由がわかりません。たとえば、Discourseはメールアドレスごとに1人のユーザーしか許可しませんが、私は同じメールアドレスで2番目のNextcloudユーザーを作成できるようです。管理設定のPrevent creating an account if the email address exists in another accountで防止しない限り。理想的には、メールアドレスに基づいてこれらのアカウントを自動的に接続するだけです。

「いいね!」 1

現在の問題を正しく理解しているか分かりませんが、問題は既存のユーザーに「接続されたソーシャルログインアカウント」がないことだと仮定します。すべてのユーザーが接続されていれば、すべて問題なく動作するのでしょうか?

ご自身で書かれているように、Nextcloudではメールアドレスは一意ではないため、ユーザーマッピングに安全に使用することはできません。

socialloginアプリに切り替えたとき、既存のユーザーを単純なSQLクエリで接続しました。Discourseのユーザーリストをエクスポートし、Nextcloudデータベースのsociallogin_connectテーブルに、[内部名]-[ユーザーID](例:kb2-3797)と既存のNextcloudユーザー名をマッピングして挿入しました。マッピングに使用するフィールド(例:ユーザー名またはメールアドレス)は、セットアップによって異なります。

スクリーンショットは少し古いようですが、Nextcloud 23.0安定版インスタンスで/settings/user/securityを開くと、(「新しいデバイス固有のパスワードを作成するボタン」を含む)非常に似たテーブルが表示されます。あなたのページのスクリーンショットを投稿していただけますか?

「いいね!」 2

既存のユーザーを修正するのに時間はかかりません。私のサイトには数人しかいないからです。しかし、Discourse を Nextcloud の認証プロバイダーとして使用しようとしているすべての人に機能する、長期的で再現可能なソリューションという点では、メールアドレスごとに 1 人のユーザーのみを許可し、メールアドレスに基づいて自動的に一致させるのが理にかなっているようです。ユーザーがこれを行うために何もする必要はないはずです。

これが私の /settings/user/security ページの外観です。

「いいね!」 1

ページの一番最後に「新しいアプリパスワードを作成」があります。そこでデスクトップクライアントなどの新しい認証情報を作成できます。

「いいね!」 2

なるほど、それは理にかなっていますが、言語が少し紛らわしいですね。これで理解できたと思います。Nextcloudに直接ログインしたことがなく、アプリをインストールしたい新規ユーザーは、「アプリパスワード」を作成するために「新しいアプリパスワードを作成」ボタンを使用する必要があります。これは理想的にはデバイスごとに1つのパスワードになりますが、そうである必要はありません。

GitHubで引き続きフォローして、ドキュメントを明確にするのを手伝い、統合の問題をいくつか解決できるかどうかを確認します。しかし、今のところ、@parogaさんは2017年のサポートリクエストをようやく解決したと言えるでしょう:partying_face:

「いいね!」 1

私が書いたチュートリアルをご覧になると良いかもしれません。

私はこの機能を使って、NextCloudをDiscourseに接続しています。

「いいね!」 1

このトピックは、最後の返信から30日後に自動的にクローズされました。新しい返信は許可されていません。