2016-11-04 70 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