2016-11-04 49 views
7

我有兩個webapps。每個都有前端(AngularJS)和後端(Java)。每個前端都有自己的公共訪問類型配置keycloak.json文件。每個後端都有它自己的僅限持有者訪問類型的配置keycloak.json文件。每個前端應用程序都可以正常使用它自己的後端。我的任務是互相進行REST調用(後端到後端)。我怎麼能做到這一點?因爲在每個後端REST服務都通過檢查標記有效性來保護。後端通過REST與後端通信與Keycloak受保護的後端

+0

好問題!我想一個更合適的地方來問這種問題是官方的[Keycloak用戶郵件列表](https://lists.jboss.org/mailman/listinfo/keycloak-user)。 – Yuri

回答

0

如果所有這些後端服務都由keycloak保護,請查看Spring keycloak適配器中RestTemplate的KeycloakRestTemplate擴展。 KeycloakRestTemplate是作爲keycloak-spring-security-adapter jar依賴項的一部分導入的。

基本上,它使用KeycloakClientRequestFactory並在內部爲所有服務請求添加授權標頭(對於當前已驗證的委託人)。

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

+0

但是如果我不使用Spring?該做什麼比? – Eldar

+0

@Eldar,當然,你不必使用彈簧。您可以將來自UI的原始請求中的訪問令牌帶到後端,並將其簡單地注入到另一個後端服務的傳出請求頭中。如果不是春天的RestTemplate,你如何使服務調用服務? –

+0

我試過這個沒有運氣。第二個後端拋出異常「令牌發行者不同」。兩個項目有不同的子域名:backend1.project.com和backend2.project.com – Eldar