AAverin
(Anton Averin)
1
Discourse の認証プロバイダーとして Keycloak を設定する方法はありますか?SSO 方式で動作させる必要があり、Keycloak で管理されているアカウントを持つユーザーが自動的に Discourse インスタンスにもアクセスでき、ログインした状態になるようにしたいと考えています。
OpenID 設定について読んだところ、この設定ではユーザーが個別にログインし、Discourse 内で別アカウントを作成する必要があると書かれていました。これは私の求めているものではありません。
このトピックについて読むべきものはありますか?
私の目的は、Discourse と Keycloak を個別の Docker コンテナで構成し、それらの間でシームレスな認証を実現することです。これにより、Keycloak で管理されているユーザーデータを用いて、JS フロントエンドアプリでログインしているユーザーに代わって、API バックエンドから Discourse に投稿を作成できるようにしたいと考えています。
Keycloak をエンタープライズ IAM として利用しているユーザーに対して私が行った最も簡単な解決策は、Discourse SAML を設定することです。
Keycloak SAML の設定は比較的簡単です。
あるいは、OpenID Connect 経由で接続することも可能です。
SAML による自動ログインを有効にするには、ローカルログインを含むすべての他の認証方法を無効にする必要があります。管理者アカウントがすでに Keycloak に対応するアカウントを持っていることを確認してください。さもなければ、管理者アクセスができなくなります。
「いいね!」 1
AAverin
(Anton Averin)
3
興味深いです、ありがとうございます。
他のすべてのログイン手段を無効化するのは現実的ではありません。私のアプリでは Keycloak をメインの認証手段として使い続けたいのですが、さらにユーザーが Discourse にも参加できるようにしたいと考えています。
つまり、ユーザーがログイン/パスワードや好きなソーシャルネットワークを使って登録し、私のアプリと Discourse の両方で使えるアカウントを取得できるようにする必要があります。
そのようなことは可能でしょうか?
PS. もう一度読み直しましたが、Keycloak 側で認証方法を無効化するという意味ですか、それとも Discourse 側で無効化するという意味でしょうか?
ソーシャル認証またはユーザー名とパスワードによる認証は、Keycloak経由で行う必要があります。さらに、ユーザーが自動的にログインしないことに気づきました。ログインボタンをクリックすると、ユーザーが直接Keycloakに対して認証を行う仕組みになります。
AAverin
(Anton Averin)
5
まず、すべての操作を API 経由で行いたいと仮定した場合、それでも可能でしょうか?
ログインは Discourse の UI 部分です。
新しいユーザーが Keycloak サーバーに登録し、SAML 統合が設定されているとします。ユーザーが JS ウェブアプリでログインし、トークンが取得できたと仮定します。このトークンだけで Discourse API を呼び出すことは可能でしょうか?
つまり、カスタム UI を作成して、ウェブアプリから投稿を作成したい場合の話です。
私の知る限り、API キーを使用してすべての API エンドポイントにアクセスできます。
可能です。それを妨げるものは何もありません。