2017-01-17 19 views
1

現在、Keycloak Springアダプタを使用してSpringブート1.4とKeycloak 2.5.0(openid-connectサービスとして設定)を使用したマイクロサービスアプリケーションを開発中です。スプリングブートアダプター)。当社microservicesのSpringブートでkeycloakを別のコンテキストルートとリバースプロキシを使用して統合する方法

すべてのロードバランサとアプリケーションがコンテキストルートの背後にある既存のドメインでホストされるように、追加のリバースプロキシの背後に置かれます(そのため、当社のアプリケーションのルートはhttp://foo.bar/foobar/あり、残りのサービスはhttp://foo.bar/foobar/rest/をしています)。

は、我々は、この特定のシナリオでKeycloakでの問題のカップルに直面している:

  1. Keycloak前方/ SSO /ログインにサインインが必要な場合。 http://foo.bar/sso/loginが存在しないため、これは私たちのケースでは望ましくない動作です。私はフォワードを変更する方法を見つけましたが、Keycloakに同じURLを聞かせる方法はありません。私たちはこの場合404に終わります。
  2. サインインした後、Keycloakは/ sso/login URLに正しいトークンでリダイレクトしますが、同じサーバーでない場合はリクエストが失敗し、http://foo.bar/にリダイレクトされます。すべてのマイクロサービスは/ sso/loginを公開しているので、これはまったく別のサーバーになる可能性があります。
  3. keycloakが同じドメインでホストされていると、リダイレクトループが発生します。 Keycloakを同じドメインとコンテキストルートhttp://foo.bar/foobar/auth/でホストしたいと考えています。

すでに"token-store": "cookie"を試してみましたが、これで問題は解決しませんでした。

これらの問題を解決する方法はありますか、Keycloakはユースケースの正しい解決策ではないかもしれませんか?


アップデート2017年5月5日は:答え私たちは今までので、私は簡単に私たちが何をしたかを説明しますKeycloakで実行されている

+0

もう一度認証を受けると、直接サーバーにリダイレクトされるhttp://foo.bar/foobar/rest/serviceに行くhttp:// localhost:8080/rest/service –

+0

私は同じ問題に直面しており、同様の設定を使って解決しました。あなたの解決策を回答として追加し、この質問を解決済みとしてチェックできますか?これを読んだ次の人のために何をすべきか分かりやすいでしょう。 – Ruben

+0

さて、答えに移動しました。あなたのソリューションが何とか違っていたら、それを指定することもできますか? –

答えて

1

ここから私の答えを移動 。アプリケーションのフロントエンドはAngular2を実行し、Angularアプリケーション自体にカスタムログインページを作成しました(したがって、Keycloakのテーマではありません)。これはOAuth2ベアラトークンのKeycloak APIを直接照会します。フロントエンドは(OAuth標準に従って)Authorizationヘッダーの各要求にこのトークンを送信します。 サービス側では、keycloakをベアラ専用ソリューション(keycloak.jsonにbearer-only: true)として設定しました。この方法で、アプリケーションはログインページに転送するのではなく401または403を返します。

この設定を使用すると、ユーザーは/ sso/loginページから何も表示されず、リダイレクトの問題もなくなります。

TLDR;私が記述したユースケースも現実的ではなく、REST URLを呼び出してからログインページに転送するのは悪いことです。

関連する問題