こんにちは!
@david 助けてください、素晴らしい方です!))))
Discourse + Keycloak SSO + SAML プラグイン + OpenID Connect プラグインのバンドルを正常に設定しました。唯一、この美しさを台無しにしているのはログアウト処理です。
フォーラムからログアウトすると、ユーザーの認証が解除されます。この部分は問題なく動作しています。
その後、Keycloak のアクティブなセッションを確認すると、フォーラムからログアウトしたユーザーのセッションは削除されていません。
これはログアウト URL の設定が原因ではないかと疑っています。どこで設定すべきか(Discourse 側か Keycloak 側か)がわかりません。
Keycloak 側の SAML 設定:
Keycloak 側の OpenID Connect 設定:
david
(David Taylor)
2
OpenID Connect プラグインは RP 開始ログアウト をサポートしています。Keybase でもこれはサポートされていますか?
では、それが何か、そしてKeycloakに存在するかどうかを理解する必要がありますね))))
openid-connectプラグインでこのオプションはどこで設定されますか?
ありがとうございます!Keycloak がこの問題についてどう扱っているか、ググってみます。
はい!問題なく動作します!ただし、openid_connect_rp_initiated_logout_redirect 変数の設定が必要であることを明確にしておきます。
@david もう一つ質問があります。重要な質問です。
現在、Keycloak SSO の最終テスト段階にあり、SAML か OpenID Connect のどちらのプロトコルを採用するか選択する必要があります。
私は OpenID Connect の方が気に入っていたのですが、現在、OpenID Connect を使用した新規ユーザー作成時に厄介な問題が発生しています。
問題を理解するために、別の側面から説明します。SAML を使用して新しいフォーラムユーザーが作成される場合、ユーザーは SSO で作成され、Discourse への作成が透過的に実行されます。そして、即座にアクティブ化されます——これが重要です!
つまり、Discourse フォーラムで「サインアップ」をクリックすると、Keycloak に移動し、そこでユーザーを作成してメールを確認などの手順を踏みます。その後、Discourse フォーラムに戻ると、ユーザーはすでに作成され、アクティブ化されています:
しかし、OpenID Connect プラグインを使用すると、新規ユーザー作成時に以下のウィンドウが表示されます:
これは非常に不便です!なぜでしょうか?SSO でアカウントを作成する際にすでにユーザーのメールは確認済みなのですから。このウィンドウを回避する方法はありますか?
あらかじめ大変ありがとうございます!
david
(David Taylor)
7
もしそのメッセージが OpenID Connect で表示されている場合、アイデンティティプロバイダーが Discourse に email_verified: false というメッセージを渡したことを意味します。詳細なデバッグ設定を有効にすると、すべての認証データが /logs に出力され、確認できるようになります。Keycloak 側で検証状態を正しく渡す方法があることを願っています。
それなら、なぜ SAML プラグインはこの点を無視するのでしょうか?
david
(David Taylor)
9
SAML プラグインでは、これは saml_default_emails_valid グローバル設定(デフォルトは true)で制御されます。
解決策を見つけました!))))
Keycloakでは:
これらのオプションを無効にしてください:
david
(David Taylor)
11
Keycloak がメールアドレスを検証したことが 100% 確実であれば問題ありません。検証されていない場合、その操作は Discourse サイトを攻撃者に狙われるリスクにさらします。
はい、その通りです…
さて、新しいケースをテスト中 — 1 つの Keycloak OpenID クライアントで 2 つのフォーラムです ))
ところで、@david さん、どちらがより適切だと思いますか:
-
全てのフォーラムで 1 つの OpenID クライアントを使用し、必要な有効なリダイレクト URL を指定する(現在の設定):
-
それとも、フォーラムごとに独自の OpenID クライアントを使用する?
david
(David Taylor)
14
Keycloakについては詳しくありませんが、どちらのアプローチでも問題ないと思います。後ほど、各フォーラムごとにアクセス制御を分けたくなった場合、それぞれを別クライアントとして設定しておくと、その対応がしやすくなるかもしれません 