2016-11-04 8 views
7

私は2つのWebアプリケーションを持っています。それぞれにフロントエンド(AngularJS)とバックエンド(Java)があります。各フロントエンドには、パブリックアクセスタイプの設定keycloak.jsonファイルがあります。各バックエンドには、独自のベアラ専用アクセスタイプ設定keycloak.jsonファイルがあります。各フロントエンドアプリは、それ自身のバックエンドで正常に動作しています。私の仕事は、互いに(バックエンドからバックエンドへ)RESTを呼び出すことです。どうすればそれを達成できますか?各バックエンドRESTのサービスはトークンの妥当性をチェックすることで保護されるためです。Keycloakで保護されたバックエンドを使用したRESTによるバックエンド通信

+0

良い質問!私は、この種の質問をするより適切な場所は公式の[Keycloakユーザーメーリングリスト](https://lists.jboss.org/mailman/listinfo/keycloak-user)です。 – Yuri

答えて

0

これらのバックエンドサービスがすべてkeycloakによって保護されている場合は、SpringcloakアダプタのRestTemplateのKeycloakRestTemplate拡張を見てください。 KeycloakRestTemplateは、keycloak-spring-security-adapter jar依存の一部としてインポートされます。

基本的に、KeycloakClientRequestFactoryを使用し、内部的にサービスコールへのサービス要求のすべてにAuthorizationヘッダー(現在認証されているプリンシパル用)を追加します。

https://github.com/keycloak/keycloak/blob/master/adapters/oidc/spring-security/src/main/java/org/keycloak/adapters/springsecurity/client/KeycloakRestTemplate.java

+0

私は春を使っていないのですか?何より? – Eldar

+0

@エルダール、もちろん、あなたは春を使う必要はありません。 UIからのバックエンドへの元のリクエストからのアクセストークンを取り出し、それを単に別のバックエンドサービスへの発信リクエストのヘッダーに挿入することができます。 RestTemplateが春になっていない場合、そのサービスをサービス呼び出しにどうやって作っていますか? –

+0

私は運が無ければこれを試しました。 2番目のバックエンドは "Token issuer is different"例外をスローします。 2つのプロジェクトには、サブドメイン名が異なります:backend1.project.comとbackend2.project.com – Eldar

関連する問題