こんにちは!Discourse OpenID Connect plugin と Keycloak を使って Discourse を設定しようとしています。
なんとか動作させることができ、Keycloak の認証情報を使って Discourse インスタンスにログインできるだけでなく、既存の Discourse アカウントを OIDC のアカウントと連携させることもできました。残念ながら、Keycloak コンテナの設定中にミスをしてしまい、設定とデータベースを失ってしまいました。
その後、Keycloak を(今回は正しく!)再インストールし、Discourse を新しいクライアント ID を使用するように再設定しましたが、連携は機能しているように見えます(/logs でログを有効にすると、認証が実際に機能したことがわかります)が、Discourse アカウントと OIDC アカウントを連携させることができなくなりました。
Discourse にログインしようとすると、OIDC を使用し、新しいアカウントの UI に迎えられ、既存のアカウントと連携するためのリンクをクリックします。ログインし、Discourse にリダイレクトされ、ログアウトして再度ログインすると、同じ新しいアカウントの UI が表示されます。
Data Explorer プラグインを使用して連携を確認したところ、私のユーザーは NULL と表示されています。ただし、プロバイダー ID は Keycloak のユーザー ID と一致しています。
「OpenID Connect allow association change」オプションはオンになっています。
Discourse は、以前の Keycloak インストールから引き継いだ何かにまだ依存しており、新しいクライアント ID を変更するだけではうまくいかないと考えています。
見落としている可能性のある、他に確認すべきことはありますか?
よろしくお願いします。
pmusaraj
(Penar Musaraj)
2
アカウント間で同じメールアドレスを使用していますか? Keycloak に関連付けられていなかった新しいアカウントで、この問題を再現できますか?
迅速なご対応ありがとうございます!
アカウント間で同じメールアドレスを使用していませんでしたが、KeycloakでDiscourseで使用されているものと一致するように変更しましたが、まだ同じです。Data Explorerの応答は同じです(「NULL」ユーザー)。
新しく作成したユーザーを作成しようとしましたが、「無効なユーザー名、メールアドレス、またはパスワード」というエラーが表示されます。ユーザー名は問題なく利用可能で、メールアドレスは有効で、パスワードはパスワードマネージャーによって生成されたものですが、このエラーが発生します。これはおそらく関係ないことですが、なぜ発生しているのかを解明する必要がある別の問題です。
Mike73
4
こんにちは、
私もここで同じ問題に直面しています。私は Nextcloud を OIDC プロバイダーとして使用していますが、これはおそらく問題とは無関係でしょう。
Nextcloud ログインでログインできます。その後、上記のように、新しいアカウントの登録または既存のアカウントでのログインの選択が提示されます。しかし、メールアドレスを通じて既存のアカウントとの連携は行われません。
「登録」を選択すると、すぐにログアウト状態のトップページが表示され、再度ログインする必要があります(または可能です)。エラーメッセージは表示されません。
これは少し奇妙ですね。
Discourse のアカウントが存在しない OIDC アカウントでログインすると、すべて正常に機能します。その場合、新しいアカウントが即座に作成され、ユーザー設定にも連携されたアカウントが表示されます。
もしかしたら、私が何か間違えているのか、あるいはここにバグがあることが判明するかもしれません。何かアイデアをお持ちの方がいれば、ぜひ教えてください。
よろしくお願いいたします、
Mike