clayg
(Clay)
1
約2年前にDiscourseを本番稼働させ、認証プロバイダーとしてメインのバックオフィスシステムからSSOを使用しています。外部ID(GUID)を使用しています。
現在、メインのバックオフィスシステムを別のベンダーに変更する準備をしています。そのベンダーはOAuth2/OpenIDをサポートしていますが、この新しいシステムに移行する際に、ユーザーの外部ID(GUID)が変更されます。そのため、他のユーザーがこの経験をしたことがあるか、また、Discourseに現在保存されている外部IDを何らかの方法で一括更新する必要があるのかどうか疑問に思っています。
「いいね!」 1
ユーザーのメールアドレスが変わらない限り、問題ないはずです。
「いいね!」 5
clayg
(Clay)
3
ありがとうございます。新しいSSOプロバイダーをテストしたところ、「primary email has already been taken」(プライマリメールは既に使用されています)というエラーが発生しました。
そして、この設定を行っています。

アカウントが既に存在するため、サインアップしようとしているのではなく、ログインしようとしているからです。
clayg
(Clay)
5
しかし、サインアップしようとしているわけではありません。ホームページにアクセスし、次に「ログイン」をクリックすると、SSOプロバイダーのログインページが表示され、正常に認証できますが、パスワードを入力した後、「アカウントを作成しましょう」というページにアクセスしますが、「サインアップ」はクリックしていません。
トラブルシューティングのため、まずは必須設定のみで試してください。そのメールアドレスを持つユーザーが両方に存在することを確認してください。
そのメールアドレスは、Discourseに手動で入力しましたか、それともSSOサーバーによって自動的に入力されましたか?
おそらく、Discourse上のメールアドレスが別のユーザー名に関連付けられており、SSOサーバーが新しいユーザー名を送信しているため、この競合が発生しているのだと思われます。
DiscourseのログにSSO関連の情報はありますか?問題の正確な原因を特定するのに役立つかもしれません。
「いいね!」 1
clayg
(Clay)
8
ありがとうございます。DiscourseでSSO/OpenIDを無効にし、その同じメールアドレスでDiscourseにログインできることを確認しました。それと同じ認証情報がSSOプロバイダーでも機能することを確認しました。
DiscourseでOpenIDを再度有効にすると、SSOプロバイダー経由で正常に認証されますが、アカウントを作成するように求めるDiscourse画面に引き続き表示されます。その画面の3つの値(メールアドレス、ユーザー名、フルネーム)はすべてSSOプロバイダーによって自動的に入力されます。
上記の設定をすべてオフにしましたが、この動作に変更はありませんでした。
「いいね!」 1
discourse.example.com/logs にアクセスして、SSO に関する警告またはエラーがないか確認していただけますか?
「いいね!」 1
clayg
(Clay)
10
ありがとうございます。SSOエラーもOIDCエラーもありません。OpenIDの冗長ログもオンになっています。
「いいね!」 1
申し訳ありませんが、現時点では提案がありません。何か見つかったら返信します。